X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae3c17b4013e80b99976c750c19fca47729517f6..574be073c070a9bbe81ad68e98187b0b9e82c2df:/interface/wx/combo.h?ds=inline diff --git a/interface/wx/combo.h b/interface/wx/combo.h index 353daaf8f5..e5cb5c7dc7 100644 --- a/interface/wx/combo.h +++ b/interface/wx/combo.h @@ -8,7 +8,6 @@ /** @class wxComboPopup - @wxheader{combo.h} In order to use a custom popup with wxComboCtrl, an interface class must be derived from wxComboPopup. @@ -35,7 +34,7 @@ public: @return @true if the call succeeded, @false otherwise. */ - virtual bool Create(wxWindow* parent); + virtual bool Create(wxWindow* parent) = 0; /** Utility function that hides the popup. @@ -50,24 +49,29 @@ public: Preferred minimum width. @param prefHeight Preferred height. May be -1 to indicate no preference. - @param maxWidth + @param maxHeight Max height for window, as limited by screen size. @remarks This function is called each time popup is about to be shown. */ virtual wxSize GetAdjustedSize(int minWidth, int prefHeight, int maxHeight); + /** + Returns pointer to the associated parent wxComboCtrl. + */ + wxComboCtrl* GetComboCtrl() const; + /** The derived class must implement this to return pointer to the associated control created in Create(). */ - virtual wxWindow* GetControl(); + virtual wxWindow* GetControl() = 0; /** The derived class must implement this to return string representation of the value. */ - virtual wxString GetStringValue() const; + virtual wxString GetStringValue() const = 0; /** The derived class must implement this to initialize its internal @@ -132,11 +136,12 @@ public: */ virtual void SetStringValue(const wxString& value); +protected: /** - Parent wxComboCtrl. This is parameter has been prepared before Init() - is called. + Parent wxComboCtrl. This member variable is prepared automatically + before Init() is called. */ - wxComboCtrl m_combo; + wxComboCtrl* m_combo; }; @@ -170,7 +175,6 @@ struct wxComboCtrlFeatures /** @class wxComboCtrl - @wxheader{combo.h} A combo control is a generic combobox that allows totally custom popup. In addition it has other customization features. For instance, position and @@ -266,6 +270,7 @@ struct wxComboCtrlFeatures wxListViewComboPopup* popupCtrl = new wxListViewComboPopup(); + // It is important to call SetPopupControl() as soon as possible comboCtrl->SetPopupControl(popupCtrl); // Populate using wxListView methods @@ -293,7 +298,7 @@ struct wxComboCtrlFeatures Drop button will behave more like a standard push button. @endStyleTable - @beginEventTable{wxCommandEvent} + @beginEventEmissionTable{wxCommandEvent} @event{EVT_TEXT(id, func)} Process a wxEVT_COMMAND_TEXT_UPDATED event, when the text changes. @event{EVT_TEXT_ENTER(id, func)} @@ -303,7 +308,7 @@ struct wxComboCtrlFeatures @library{wxbase} @category{ctrl} - + @appearance{comboctrl.png} @see wxComboBox, wxChoice, wxOwnerDrawnComboBox, wxComboPopup, wxCommandEvent @@ -327,9 +332,10 @@ public: Initial selection string. An empty string indicates no selection. @param pos Window position. + If ::wxDefaultPosition is specified then a default position is chosen. @param size - Window size. If wxDefaultSize is specified then the window is sized - appropriately. + Window size. + If ::wxDefaultSize is specified then the window is sized appropriately. @param style Window style. See wxComboCtrl. @param validator @@ -339,32 +345,19 @@ public: @see Create(), wxValidator */ - wxComboCtrl(wxWindow* parent, wxWindowID id, - const wxString& value = "", + wxComboCtrl(wxWindow* parent, wxWindowID id = wxID_ANY, + const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "comboCtrl"); + const wxString& name = wxComboBoxNameStr); /** Destructor, destroying the combo control. */ virtual ~wxComboCtrl(); - /** - This member function is not normally called in application code. - Instead, it can be implemented in a derived class to create a custom - popup animation. - - The parameters are the same as those for DoShowPopup(). - - @return @true if animation finishes before the function returns, - @false otherwise. In the latter case you need to manually call - DoShowPopup() after the animation ends. - */ - virtual bool AnimateShow(const wxRect& rect, int flags); - /** Copies the selected text to the clipboard. */ @@ -375,51 +368,19 @@ public: should call or replace this function. See wxComboCtrl() for further details. */ - bool Create(wxWindow* parent, wxWindowID id, - const wxString& value = "", + bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, + const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "comboCtrl"); + const wxString& name = wxComboBoxNameStr); /** Copies the selected text to the clipboard and removes the selection. */ virtual void Cut(); - /** - This member function is not normally called in application code. - Instead, it can be implemented in a derived class to return default - wxComboPopup, incase @a popup is @NULL. - - @note If you have implemented OnButtonClick() to do something else than - show the popup, then DoSetPopupControl() must always set @a popup - to @NULL. - */ - void DoSetPopupControl(wxComboPopup* popup); - - /** - This member function is not normally called in application code. - Instead, it must be called in a derived class to make sure popup is - properly shown after a popup animation has finished (but only if - AnimateShow() did not finish the animation within its function scope). - - @param rect - Position to show the popup window at, in screen coordinates. - @param flags - Combination of any of the following: - @beginTable - @row2col{wxComboCtrl::ShowAbove, - Popup is shown above the control instead of below.} - @row2col{wxComboCtrl::CanDeferShow, - Showing the popup can be deferred to happen sometime after - ShowPopup() has finished. In this case, AnimateShow() must - return false.} - @endTable - */ - virtual void DoShowPopup(const wxRect& rect, int flags); - /** Enables or disables popup animation, if any, depending on the value of the argument. @@ -432,7 +393,7 @@ public: @return A reference to the disabled state bitmap. */ - const wxBitmap GetBitmapDisabled() const; + const wxBitmap& GetBitmapDisabled() const; /** Returns button mouse hover bitmap that has been set with @@ -440,7 +401,7 @@ public: @return A reference to the mouse hover state bitmap. */ - const wxBitmap GetBitmapHover() const; + const wxBitmap& GetBitmapHover() const; /** Returns default button bitmap that has been set with @@ -448,7 +409,7 @@ public: @return A reference to the normal state bitmap. */ - const wxBitmap GetBitmapNormal() const; + const wxBitmap& GetBitmapNormal() const; /** Returns depressed button bitmap that has been set with @@ -456,7 +417,7 @@ public: @return A reference to the depressed state bitmap. */ - const wxBitmap GetBitmapPressed() const; + const wxBitmap& GetBitmapPressed() const; /** Returns current size of the dropdown button. @@ -518,7 +479,7 @@ public: Returns area covered by the text field (includes everything except borders and the dropdown button). */ - const wxRect GetTextRect() const; + const wxRect& GetTextRect() const; /** Returns text representation of the current value. For writable combo @@ -586,7 +547,7 @@ public: @param text The text to insert. */ - virtual void Replace(long from, long to, const wxString& value); + virtual void Replace(long from, long to, const wxString& text); /** Sets custom dropdown button graphics. @@ -751,5 +712,52 @@ public: will appear as if the focus has been lost from it. */ void UseAltPopupWindow(bool enable = true); + +protected: + + /** + This member function is not normally called in application code. + Instead, it can be implemented in a derived class to create a custom + popup animation. + + The parameters are the same as those for DoShowPopup(). + + @return @true if animation finishes before the function returns, + @false otherwise. In the latter case you need to manually call + DoShowPopup() after the animation ends. + */ + virtual bool AnimateShow(const wxRect& rect, int flags); + + /** + This member function is not normally called in application code. + Instead, it can be implemented in a derived class to return default + wxComboPopup, incase @a popup is @NULL. + + @note If you have implemented OnButtonClick() to do something else than + show the popup, then DoSetPopupControl() must always set @a popup + to @NULL. + */ + virtual void DoSetPopupControl(wxComboPopup* popup); + + /** + This member function is not normally called in application code. + Instead, it must be called in a derived class to make sure popup is + properly shown after a popup animation has finished (but only if + AnimateShow() did not finish the animation within its function scope). + + @param rect + Position to show the popup window at, in screen coordinates. + @param flags + Combination of any of the following: + @beginTable + @row2col{wxComboCtrl::ShowAbove, + Popup is shown above the control instead of below.} + @row2col{wxComboCtrl::CanDeferShow, + Showing the popup can be deferred to happen sometime after + ShowPopup() has finished. In this case, AnimateShow() must + return false.} + @endTable + */ + virtual void DoShowPopup(const wxRect& rect, int flags); };