CEGUIEditbox.h

00001 /************************************************************************
00002         filename:       CEGUIEditbox.h
00003         created:        13/4/2004
00004         author:         Paul D Turner
00005         
00006         purpose:        Interface to base class for Editbox widget
00007 *************************************************************************/
00008 /*************************************************************************
00009     Crazy Eddie's GUI System (http://www.cegui.org.uk)
00010     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
00011 
00012     This library is free software; you can redistribute it and/or
00013     modify it under the terms of the GNU Lesser General Public
00014     License as published by the Free Software Foundation; either
00015     version 2.1 of the License, or (at your option) any later version.
00016 
00017     This library is distributed in the hope that it will be useful,
00018     but WITHOUT ANY WARRANTY; without even the implied warranty of
00019     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020     Lesser General Public License for more details.
00021 
00022     You should have received a copy of the GNU Lesser General Public
00023     License along with this library; if not, write to the Free Software
00024     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025 *************************************************************************/
00026 #ifndef _CEGUIEditbox_h_
00027 #define _CEGUIEditbox_h_
00028 
00029 #include "CEGUIBase.h"
00030 #include "CEGUIWindow.h"
00031 #include "elements/CEGUIEditboxProperties.h"
00032 
00033 
00034 #if defined(_MSC_VER)
00035 #       pragma warning(push)
00036 #       pragma warning(disable : 4251)
00037 #endif
00038 
00039 
00040 // Start of CEGUI namespace section
00041 namespace CEGUI
00042 {
00043 // forward declare implementation data type
00044 struct RegexValidator;
00045 
00046 
00051 class CEGUIEXPORT Editbox : public Window
00052 {
00053 public:
00054         static const String EventNamespace;                             
00055 
00056 
00057         /*************************************************************************
00058                 Constants
00059         *************************************************************************/
00060         // default colours
00061         static const argb_t     DefaultNormalTextColour;                        
00062         static const argb_t     DefaultSelectedTextColour;                      
00063         static const argb_t     DefaultNormalSelectionColour;           
00064         static const argb_t     DefaultInactiveSelectionColour;         
00065 
00066 
00067         /*************************************************************************
00068                 Event name constants
00069         *************************************************************************/
00070         static const String EventReadOnlyModeChanged;                   
00071         static const String EventMaskedRenderingModeChanged;    
00072         static const String EventMaskCodePointChanged;          
00073         static const String EventValidationStringChanged;               
00074         static const String EventMaximumTextLengthChanged;      
00075         static const String EventTextInvalidated;                               
00076         static const String EventInvalidEntryAttempted;         
00077         static const String EventCaratMoved;                                    
00078         static const String EventTextSelectionChanged;          
00079         static const String EventEditboxFull;                                   
00080         static const String EventTextAccepted;                          
00081 
00082 
00083         /*************************************************************************
00084                 Accessor Functions
00085         *************************************************************************/
00093         bool    hasInputFocus(void) const;
00094 
00095 
00104         bool    isReadOnly(void) const          {return d_readOnly;}
00105 
00106 
00115         bool    isTextMasked(void) const        {return d_maskText;}
00116 
00117 
00134         bool    isTextValid(void) const;
00135 
00136 
00148         const String&   getValidationString(void) const         {return d_validationString;}
00149 
00150 
00158         size_t  getCaratIndex(void) const               {return d_caratPos;}
00159 
00160 
00169         size_t  getSelectionStartIndex(void) const;
00170 
00171 
00180         size_t  getSelectionEndIndex(void) const;
00181 
00182         
00190         size_t  getSelectionLength(void) const;
00191 
00192 
00201         utf32   getMaskCodePoint(void) const            {return d_maskCodePoint;}
00202 
00203 
00215         size_t  getMaxTextLength(void) const            {return d_maxTextLen;}
00216 
00217 
00226         colour  getNormalTextColour(void) const                         {return d_normalTextColour;}
00227 
00228 
00237         colour  getSelectedTextColour(void) const                       {return d_selectTextColour;}
00238 
00239 
00248         colour  getNormalSelectBrushColour(void) const          {return d_selectBrushColour;}
00249 
00250 
00259         colour  getInactiveSelectBrushColour(void) const        {return d_inactiveSelectBrushColour;}
00260 
00261 
00262         /*************************************************************************
00263                 Manipulators
00264         *************************************************************************/
00276         void    setReadOnly(bool setting);
00277 
00278 
00290         void    setTextMasked(bool setting);
00291 
00292 
00307         void    setValidationString(const String& validation_string);
00308 
00309 
00321         void    setCaratIndex(size_t carat_pos);
00322 
00323 
00339         void    setSelection(size_t start_pos, size_t end_pos);
00340         
00341 
00353         void    setMaskCodePoint(utf32 code_point);
00354 
00355 
00370         void    setMaxTextLength(size_t max_len);
00371 
00372 
00383         void    setNormalTextColour(const colour& col);
00384 
00385 
00394         void    setSelectedTextColour(const colour& col);
00395 
00396 
00408         void    setNormalSelectBrushColour(const colour& col);
00409 
00410 
00422         void    setInactiveSelectBrushColour(const colour& col);
00423 
00424 
00425         /*************************************************************************
00426                 Construction / Destruction
00427         *************************************************************************/
00432         Editbox(const String& type, const String& name);
00433 
00434 
00439         virtual ~Editbox(void);
00440 
00441 
00442 protected:
00443         /*************************************************************************
00444                 Implementation functions
00445         *************************************************************************/
00450         void    addEditboxEvents(void);
00451 
00452 
00463         virtual size_t  getTextIndexFromPosition(const Point& pt) const         = 0;
00464 
00465 
00470         void    clearSelection(void);
00471 
00472 
00480         void    eraseSelectedText(bool modify_text = true);
00481 
00482 
00487         bool    isStringValid(const String& str) const;
00488 
00489 
00490 
00495         void    handleBackspace(void);
00496 
00497 
00502         void    handleDelete(void);
00503 
00504 
00509         void    handleCharLeft(uint sysKeys);
00510 
00511 
00516         void    handleWordLeft(uint sysKeys);
00517 
00518 
00523         void    handleCharRight(uint sysKeys);
00524 
00525 
00530         void    handleWordRight(uint sysKeys);
00531 
00532 
00537         void    handleHome(uint sysKeys);
00538 
00539 
00544         void    handleEnd(uint sysKeys);
00545 
00546 
00557         virtual bool    testClassName_impl(const String& class_name) const
00558         {
00559                 if (class_name==(const utf8*)"Editbox") return true;
00560                 return Window::testClassName_impl(class_name);
00561         }
00562 
00563 
00564         /*************************************************************************
00565                 New event handlers
00566         *************************************************************************/
00571         virtual void    onReadOnlyChanged(WindowEventArgs& e);
00572 
00573 
00578         virtual void    onMaskedRenderingModeChanged(WindowEventArgs& e);
00579 
00580 
00585         virtual void    onMaskCodePointChanged(WindowEventArgs& e);
00586 
00587 
00592         virtual void    onValidationStringChanged(WindowEventArgs& e);
00593 
00594 
00599         virtual void    onMaximumTextLengthChanged(WindowEventArgs& e);
00600 
00601 
00609         virtual void    onTextInvalidatedEvent(WindowEventArgs& e);
00610 
00611 
00617         virtual void    onInvalidEntryAttempted(WindowEventArgs& e);
00618 
00619 
00624         virtual void    onCaratMoved(WindowEventArgs& e);
00625 
00626 
00631         virtual void    onTextSelectionChanged(WindowEventArgs& e);
00632 
00633 
00638         virtual void    onEditboxFullEvent(WindowEventArgs& e);
00639 
00640 
00645         virtual void    onTextAcceptedEvent(WindowEventArgs& e);
00646 
00647         
00648         /*************************************************************************
00649                 Overridden event handlers
00650         *************************************************************************/
00651         virtual void    onMouseButtonDown(MouseEventArgs& e);
00652         virtual void    onMouseButtonUp(MouseEventArgs& e);
00653         virtual void    onMouseDoubleClicked(MouseEventArgs& e);
00654         virtual void    onMouseTripleClicked(MouseEventArgs& e);
00655         virtual void    onMouseMove(MouseEventArgs& e);
00656         virtual void    onCaptureLost(WindowEventArgs& e);
00657         virtual void    onCharacter(KeyEventArgs& e);
00658         virtual void    onKeyDown(KeyEventArgs& e);
00659         virtual void    onTextChanged(WindowEventArgs& e);
00660 
00661 
00662         /*************************************************************************
00663                 Implementation data
00664         *************************************************************************/
00665         bool    d_readOnly;                     
00666         bool    d_maskText;                     
00667         utf32   d_maskCodePoint;        
00668         size_t  d_maxTextLen;           
00669         size_t  d_caratPos;                     
00670         size_t  d_selectionStart;       
00671         size_t  d_selectionEnd;         
00672         String  d_validationString;     
00673         RegexValidator* d_validator;            
00674         bool    d_dragging;                     
00675         size_t  d_dragAnchorIdx;        
00676 
00677         // basic rendering colours
00678         colour  d_normalTextColour;                             
00679         colour  d_selectTextColour;                             
00680         colour  d_selectBrushColour;                    
00681         colour  d_inactiveSelectBrushColour;    
00682 
00683 
00684 private:
00685         /*************************************************************************
00686                 Static Properties for this class
00687         *************************************************************************/
00688         static EditboxProperties::ReadOnly                                      d_readOnlyProperty;
00689         static EditboxProperties::MaskText                                      d_maskTextProperty;
00690         static EditboxProperties::MaskCodepoint                         d_maskCodepointProperty;
00691         static EditboxProperties::ValidationString                      d_validationStringProperty;
00692         static EditboxProperties::CaratIndex                            d_caratIndexProperty;
00693         static EditboxProperties::SelectionStart                        d_selectionStartProperty;
00694         static EditboxProperties::SelectionLength                       d_selectionLengthProperty;
00695         static EditboxProperties::MaxTextLength                         d_maxTextLengthProperty;
00696         static EditboxProperties::NormalTextColour                      d_normalTextColourProperty;
00697         static EditboxProperties::SelectedTextColour            d_selectedTextColourProperty;
00698         static EditboxProperties::ActiveSelectionColour         d_activeSelectionColourProperty;
00699         static EditboxProperties::InactiveSelectionColour       d_inactiveSelectionColourProperty;
00700 
00701 
00702         /*************************************************************************
00703                 Private methods
00704         *************************************************************************/
00705         void    addEditboxProperties(void);
00706 };
00707 
00708 } // End of  CEGUI namespace section
00709 
00710 
00711 #if defined(_MSC_VER)
00712 #       pragma warning(pop)
00713 #endif
00714 
00715 #endif  // end of guard _CEGUIEditbox_h_

Generated on Sat Nov 26 09:34:48 2005 for Crazy Eddies GUI System by  doxygen 1.4.5