@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.
*/
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
*/
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;
};
wxListViewComboPopup* popupCtrl = new wxListViewComboPopup();
+ // It is important to call SetPopupControl() as soon as possible
comboCtrl->SetPopupControl(popupCtrl);
// Populate using wxListView methods
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)}
@library{wxbase}
@category{ctrl}
- <!-- @appearance{comboctrl.png} -->
+ @appearance{comboctrl.png}
@see wxComboBox, wxChoice, wxOwnerDrawnComboBox, wxComboPopup,
wxCommandEvent
@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,
*/
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.
*/
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,
*/
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.
@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
@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
@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
@return A reference to the depressed state bitmap.
*/
- const wxBitmap GetBitmapPressed() const;
+ const wxBitmap& GetBitmapPressed() const;
/**
Returns current size of the dropdown button.
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
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);
};