Crazy Eddies GUI System: CEGUICombobox.h Source File

Crazy Eddies GUI System 0.7.6

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

CEGUICombobox.h

    00001 /***********************************************************************
    00002         filename:       CEGUICombobox.h
    00003         created:        13/4/2004
    00004         author:         Paul D Turner
    00005
    00006         purpose:        Interface to base class for Combobox widget
    00007 *************************************************************************/
    00008 /***************************************************************************
    00009  *   Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
    00010  *
    00011  *   Permission is hereby granted, free of charge, to any person obtaining
    00012  *   a copy of this software and associated documentation files (the
    00013  *   "Software"), to deal in the Software without restriction, including
    00014  *   without limitation the rights to use, copy, modify, merge, publish,
    00015  *   distribute, sublicense, and/or sell copies of the Software, and to
    00016  *   permit persons to whom the Software is furnished to do so, subject to
    00017  *   the following conditions:
    00018  *
    00019  *   The above copyright notice and this permission notice shall be
    00020  *   included in all copies or substantial portions of the Software.
    00021  *
    00022  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00023  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00024  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    00025  *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
    00026  *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
    00027  *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    00028  *   OTHER DEALINGS IN THE SOFTWARE.
    00029  ***************************************************************************/
    00030 #ifndef _CEGUICombobox_h_
    00031 #define _CEGUICombobox_h_
    00032
    00033 #include "../CEGUIBase.h"
    00034 #include "../CEGUIWindow.h"
    00035 #include "CEGUIComboboxProperties.h"
    00036
    00037
    00038 #if defined(_MSC_VER)
    00039 #       pragma warning(push)
    00040 #       pragma warning(disable : 4251)
    00041 #endif
    00042
    00043
    00044 // Start of CEGUI namespace section
    00045 namespace CEGUI
    00046 {
    00047
    00052 class CEGUIEXPORT Combobox : public Window
    00053 {
    00054 public:
    00055         static const String EventNamespace;
    00056     static const String WidgetTypeName;
    00057
    00058         /*************************************************************************
    00059                 Constants
    00060         *************************************************************************/
    00061         // event names from edit box
    00067         static const String EventReadOnlyModeChanged;
    00073         static const String EventValidationStringChanged;
    00079         static const String EventMaximumTextLengthChanged;
    00086         static const String EventTextInvalidated;
    00093         static const String EventInvalidEntryAttempted;
    00099         static const String EventCaratMoved;
    00105         static const String EventTextSelectionChanged;
    00112         static const String EventEditboxFull;
    00119         static const String EventTextAccepted;
    00120
    00121         // event names from list box
    00127         static const String EventListContentsChanged;
    00134         static const String EventListSelectionChanged;
    00140         static const String EventSortModeChanged;
    00147         static const String EventVertScrollbarModeChanged;
    00154         static const String EventHorzScrollbarModeChanged;
    00155
    00156         // events we produce / generate ourselves
    00162         static const String EventDropListDisplayed;
    00168         static const String EventDropListRemoved;
    00174         static const String EventListSelectionAccepted;
    00175
    00176     /*************************************************************************
    00177         Child Widget name suffix constants
    00178     *************************************************************************/
    00179     static const String EditboxNameSuffix;
    00180     static const String DropListNameSuffix;
    00181     static const String ButtonNameSuffix;
    00182
    00183     // override from Window class
    00184     bool isHit(const Vector2& position,
    00185                const bool allow_disabled = false) const;
    00186
    00195         bool    getSingleClickEnabled(void) const;
    00196
    00197
    00205         bool    isDropDownListVisible(void) const;
    00206
    00207
    00218     Editbox* getEditbox() const;
    00219
    00230     PushButton* getPushButton() const;
    00231
    00243     ComboDropList* getDropList() const;
    00244
    00245
    00246         /*************************************************************************
    00247                 Editbox Accessors
    00248         *************************************************************************/
    00256         bool    hasInputFocus(void) const;
    00257
    00258
    00267         bool    isReadOnly(void) const;
    00268
    00269
    00286         bool    isTextValid(void) const;
    00287
    00288
    00300         const String&   getValidationString(void) const;
    00301
    00302
    00310         size_t  getCaratIndex(void) const;
    00311
    00312
    00321         size_t  getSelectionStartIndex(void) const;
    00322
    00323
    00332         size_t  getSelectionEndIndex(void) const;
    00333
    00334
    00342         size_t  getSelectionLength(void) const;
    00343
    00344
    00356         size_t  getMaxTextLength(void) const;
    00357
    00358
    00359         /*************************************************************************
    00360                 List Accessors
    00361         *************************************************************************/
    00369         size_t  getItemCount(void) const;
    00370
    00371
    00380         ListboxItem*    getSelectedItem(void) const;
    00381
    00382
    00395         ListboxItem*    getListboxItemFromIndex(size_t index) const;
    00396
    00397
    00410         size_t  getItemIndex(const ListboxItem* item) const;
    00411
    00412
    00420         bool    isSortEnabled(void) const;
    00421
    00422
    00435         bool    isItemSelected(size_t index) const;
    00436
    00437
    00455         ListboxItem*    findItemWithText(const String& text, const ListboxItem* start_item);
    00456
    00457
    00465         bool    isListboxItemInList(const ListboxItem* item) const;
    00466
    00467
    00476         bool    isVertScrollbarAlwaysShown(void) const;
    00477
    00478
    00487         bool    isHorzScrollbarAlwaysShown(void) const;
    00488
    00489
    00490         /*************************************************************************
    00491                 Combobox Manipulators
    00492         *************************************************************************/
    00503         virtual void    initialiseComponents(void);
    00504
    00505
    00513         void    showDropList(void);
    00514
    00515
    00523         void    hideDropList(void);
    00524
    00525
    00537         void    setSingleClickEnabled(bool setting);
    00538
    00539
    00540         /*************************************************************************
    00541                 Editbox Manipulators
    00542         *************************************************************************/
    00554         void    setReadOnly(bool setting);
    00555
    00556
    00571         void    setValidationString(const String& validation_string);
    00572
    00573
    00585         void    setCaratIndex(size_t carat_pos);
    00586
    00587
    00603         void    setSelection(size_t start_pos, size_t end_pos);
    00604
    00605
    00620         void    setMaxTextLength(size_t max_len);
    00621
    00622
    00630         void    activateEditbox(void);
    00631
    00632
    00633         /*************************************************************************
    00634                 List Manipulators
    00635         *************************************************************************/
    00642         void    resetList(void);
    00643
    00644
    00656         void    addItem(ListboxItem* item);
    00657
    00658
    00676         void    insertItem(ListboxItem* item, const ListboxItem* position);
    00677
    00678
    00690         void    removeItem(const ListboxItem* item);
    00691
    00692
    00700         void    clearAllSelections(void);
    00701
    00702
    00713         void    setSortingEnabled(bool setting);
    00714
    00715
    00727         void    setShowVertScrollbar(bool setting);
    00728
    00729
    00741         void    setShowHorzScrollbar(bool setting);
    00742
    00743
    00763         void    setItemSelectState(ListboxItem* item, bool state);
    00764
    00765
    00785         void    setItemSelectState(size_t item_index, bool state);
    00786
    00787
    00800         void    handleUpdatedListItemData(void);
    00801
    00802
    00803         /*************************************************************************
    00804                 Construction and Destruction
    00805         *************************************************************************/
    00810         Combobox(const String& type, const String& name);
    00811
    00812
    00817         virtual ~Combobox(void);
    00818
    00819
    00820 protected:
    00821         /*************************************************************************
    00822                 Implementation Methods
    00823         *************************************************************************/
    00828         bool    button_PressHandler(const EventArgs& e);
    00829
    00830
    00835         bool    droplist_SelectionAcceptedHandler(const EventArgs& e);
    00836
    00837
    00842         bool    droplist_HiddenHandler(const EventArgs& e);
    00843
    00844
    00849         bool    editbox_MouseDownHandler(const EventArgs& e);
    00850
    00851
    00862         virtual bool    testClassName_impl(const String& class_name) const
    00863         {
    00864                 if (class_name=="Combobox")     return true;
    00865                 return Window::testClassName_impl(class_name);
    00866         }
    00867
    00873     void itemSelectChangeTextUpdate(const ListboxItem* const item,
    00874                                     bool new_state, bool old_state);
    00875
    00876         /*************************************************************************
    00877                 Handlers to relay child widget events so they appear to come from us
    00878         *************************************************************************/
    00879         bool editbox_ReadOnlyChangedHandler(const EventArgs& e);
    00880         bool editbox_ValidationStringChangedHandler(const EventArgs& e);
    00881         bool editbox_MaximumTextLengthChangedHandler(const EventArgs& e);
    00882         bool editbox_TextInvalidatedEventHandler(const EventArgs& e);
    00883         bool editbox_InvalidEntryAttemptedHandler(const EventArgs& e);
    00884         bool editbox_CaratMovedHandler(const EventArgs& e);
    00885         bool editbox_TextSelectionChangedHandler(const EventArgs& e);
    00886         bool editbox_EditboxFullEventHandler(const EventArgs& e);
    00887         bool editbox_TextAcceptedEventHandler(const EventArgs& e);
    00888         bool editbox_TextChangedEventHandler(const EventArgs& e);
    00889         bool listbox_ListContentsChangedHandler(const EventArgs& e);
    00890         bool listbox_ListSelectionChangedHandler(const EventArgs& e);
    00891         bool listbox_SortModeChangedHandler(const EventArgs& e);
    00892         bool listbox_VertScrollModeChangedHandler(const EventArgs& e);
    00893         bool listbox_HorzScrollModeChangedHandler(const EventArgs& e);
    00894
    00895
    00896         /*************************************************************************
    00897                 New Events for Combobox
    00898         *************************************************************************/
    00903         virtual void    onReadOnlyChanged(WindowEventArgs& e);
    00904
    00905
    00910         virtual void    onValidationStringChanged(WindowEventArgs& e);
    00911
    00912
    00917         virtual void    onMaximumTextLengthChanged(WindowEventArgs& e);
    00918
    00919
    00924         virtual void    onTextInvalidatedEvent(WindowEventArgs& e);
    00925
    00926
    00931         virtual void    onInvalidEntryAttempted(WindowEventArgs& e);
    00932
    00933
    00938         virtual void    onCaratMoved(WindowEventArgs& e);
    00939
    00940
    00945         virtual void    onTextSelectionChanged(WindowEventArgs& e);
    00946
    00947
    00952         virtual void    onEditboxFullEvent(WindowEventArgs& e);
    00953
    00954
    00959         virtual void    onTextAcceptedEvent(WindowEventArgs& e);
    00960
    00961
    00966         virtual void    onListContentsChanged(WindowEventArgs& e);
    00967
    00968
    00974         virtual void    onListSelectionChanged(WindowEventArgs& e);
    00975
    00976
    00981         virtual void    onSortModeChanged(WindowEventArgs& e);
    00982
    00983
    00989         virtual void    onVertScrollbarModeChanged(WindowEventArgs& e);
    00990
    00991
    00997         virtual void    onHorzScrollbarModeChanged(WindowEventArgs& e);
    00998
    00999
    01004         virtual void    onDropListDisplayed(WindowEventArgs& e);
    01005
    01006
    01011         virtual void    onDroplistRemoved(WindowEventArgs& e);
    01012
    01013
    01018         virtual void    onListSelectionAccepted(WindowEventArgs& e);
    01019
    01020
    01021         /*************************************************************************
    01022                 Overridden Event handlers
    01023         *************************************************************************/
    01024         virtual void    onFontChanged(WindowEventArgs& e);
    01025         virtual void    onTextChanged(WindowEventArgs& e);
    01026         virtual void    onActivated(ActivationEventArgs& e);
    01027
    01028
    01029         /*************************************************************************
    01030                 Implementation Data
    01031         *************************************************************************/
    01032         bool                    d_singleClickOperation;
    01033
    01034
    01035 private:
    01036         /*************************************************************************
    01037                 Static Properties for this class
    01038         *************************************************************************/
    01039         static ComboboxProperties::ReadOnly                                             d_readOnlyProperty;
    01040         static ComboboxProperties::ValidationString                             d_validationStringProperty;
    01041         static ComboboxProperties::CaratIndex                                   d_caratIndexProperty;
    01042         static ComboboxProperties::EditSelectionStart                   d_selStartProperty;
    01043         static ComboboxProperties::EditSelectionLength                  d_selLengthProperty;
    01044         static ComboboxProperties::MaxEditTextLength                    d_maxTextLengthProperty;
    01045         static ComboboxProperties::SortList                                             d_sortProperty;
    01046         static ComboboxProperties::ForceVertScrollbar                   d_forceVertProperty;
    01047         static ComboboxProperties::ForceHorzScrollbar                   d_forceHorzProperty;
    01048         static ComboboxProperties::SingleClickMode                              d_singleClickOperationProperty;
    01049
    01050         /*************************************************************************
    01051                 Private methods
    01052         *************************************************************************/
    01053         void    addComboboxProperties(void);
    01054 };
    01055
    01056 } // End of  CEGUI namespace section
    01057
    01058 #if defined(_MSC_VER)
    01059 #       pragma warning(pop)
    01060 #endif
    01061
    01062 #endif  // end of guard _CEGUICombobox_h_