Finished initial review of some [co*] interface headers.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53098 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Bryan Petty
2008-04-10 02:57:09 +00:00
parent 47ac374e0d
commit 968f15e262
4 changed files with 307 additions and 297 deletions

View File

@@ -1,6 +1,6 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: collpane.h // Name: collpane.h
// Purpose: interface of wxCollapsiblePaneEvent // Purpose: interface of wxCollapsiblePane
// Author: wxWidgets team // Author: wxWidgets team
// RCS-ID: $Id$ // RCS-ID: $Id$
// Licence: wxWindows license // Licence: wxWindows license
@@ -10,11 +10,15 @@
@class wxCollapsiblePaneEvent @class wxCollapsiblePaneEvent
@wxheader{collpane.h} @wxheader{collpane.h}
This event class is used for the events generated by This event class is used for the events generated by wxCollapsiblePane.
wxCollapsiblePane.
@beginEventTable{wxCollapsiblePaneEvent}
@event{EVT_COLLAPSIBLEPANE_CHANGED(id, func)}
The user expanded or collapsed the collapsible pane.
@endEventTable
@library{wxcore} @library{wxcore}
@category{FIXME} @category{events}
@see wxCollapsiblePane @see wxCollapsiblePane
*/ */
@@ -24,8 +28,7 @@ public:
/** /**
The constructor is not normally used by the user code. The constructor is not normally used by the user code.
*/ */
wxCollapsiblePaneEvent(wxObject* generator, int id, wxCollapsiblePaneEvent(wxObject* generator, int id, bool collapsed);
bool collapsed);
/** /**
Returns @true if the pane has been collapsed. Returns @true if the pane has been collapsed.
@@ -34,8 +37,7 @@ public:
/** /**
Sets this as a collapsed pane event (if @a collapsed is @true) or as an Sets this as a collapsed pane event (if @a collapsed is @true) or as an
expanded expanded pane event (if @a collapsed is @false).
pane event (if @a collapsed is @false).
*/ */
void SetCollapsed(bool collapsed); void SetCollapsed(bool collapsed);
}; };
@@ -46,43 +48,36 @@ public:
@class wxCollapsiblePane @class wxCollapsiblePane
@wxheader{collpane.h} @wxheader{collpane.h}
A collapsible pane is a container with an embedded button-like control which A collapsible pane is a container with an embedded button-like control
can be which can be used by the user to collapse or expand the pane's contents.
used by the user to collapse or expand the pane's contents.
Once constructed you should use the wxCollapsiblePane::GetPane Once constructed you should use the GetPane() function to access the pane
function to access the pane and add your controls inside it (i.e. use the and add your controls inside it (i.e. use the returned pointer from
wxCollapsiblePane::GetPane's returned pointer as parent for the GetPane() as parent for the controls which must go in the pane, @b not the
controls which must go in the pane, NOT the wxCollapsiblePane itself!). wxCollapsiblePane itself!).
Note that because of its nature of control which can dynamically (and Note that because of its nature of control which can dynamically (and
drastically) drastically) change its size at run-time under user-input, when putting
change its size at run-time under user-input, when putting wxCollapsiblePane wxCollapsiblePane inside a wxSizer you should be careful to add it with a
inside proportion value of zero; this is because otherwise all other windows with
a wxSizer you should be careful to add it with a proportion value non-null proportion values will automatically resize each time the user
of zero; this is because otherwise all other windows with non-null proportion expands or collapse the pane window usually resulting in a weird,
values flickering effect.
would automatically get resized each time the user expands or collapse the pane
window
resulting usually in a weird, flickering effect.
Usage sample: Usage sample:
@code @code
wxCollapsiblePane *collpane = new wxCollapsiblePane(this, wxID_ANY, wxCollapsiblePane *collpane = new wxCollapsiblePane(this, wxID_ANY, wxT("Details:"));
wxT("Details:"));
// add the pane with a zero proportion value to the 'sz' sizer which // add the pane with a zero proportion value to the 'sz' sizer which contains it
contains it sz->Add(collpane, 0, wxGROW|wxALL, 5);
sz-Add(collpane, 0, wxGROW|wxALL, 5);
// now add a test label in the collapsible pane using a sizer to layout it: // now add a test label in the collapsible pane using a sizer to layout it:
wxWindow *win = collpane-GetPane(); wxWindow *win = collpane->GetPane();
wxSizer *paneSz = new wxBoxSizer(wxVERTICAL); wxSizer *paneSz = new wxBoxSizer(wxVERTICAL);
paneSz-Add(new wxStaticText(win, wxID_ANY, wxT("test!")), 1, wxGROW|wxALL, paneSz->Add(new wxStaticText(win, wxID_ANY, wxT("test!")), 1, wxGROW|wxALL, 2);
2); win->SetSizer(paneSz);
win-SetSizer(paneSz); paneSz->SetSizeHints(win);
paneSz-SetSizeHints(win);
@endcode @endcode
It is only available if @c wxUSE_COLLPANE is set to 1 (the default). It is only available if @c wxUSE_COLLPANE is set to 1 (the default).
@@ -92,9 +87,14 @@ public:
The default style: 0. The default style: 0.
@endStyleTable @endStyleTable
@beginEventTable{wxCollapsiblePaneEvent}
@event{EVT_COLLAPSIBLEPANE_CHANGED(id, func)}
The user expanded or collapsed the collapsible pane.
@endEventTable
@library{wxcore} @library{wxcore}
@category{ctrl} @category{ctrl}
@appearance{collapsiblepane.png} <!-- @appearance{collapsiblepane.png} -->
@see wxPanel, wxCollapsiblePaneEvent @see wxPanel, wxCollapsiblePaneEvent
*/ */
@@ -102,8 +102,7 @@ class wxCollapsiblePane : public wxControl
{ {
public: public:
/** /**
Initializes the object and calls Create() with Initializes the object and calls Create() with all the parameters.
all the parameters.
*/ */
wxCollapsiblePane(wxWindow* parent, wxWindowID id, wxCollapsiblePane(wxWindow* parent, wxWindowID id,
const wxString& label, const wxString& label,
@@ -113,19 +112,14 @@ public:
const wxValidator& validator = wxDefaultValidator, const wxValidator& validator = wxDefaultValidator,
const wxString& name = "collapsiblePane"); const wxString& name = "collapsiblePane");
/**
Collapses or expands the pane window.
*/
void Collapse(bool collapse = true);
/** /**
@param parent @param parent
Parent window, must not be non-@NULL. Parent window, must not be non-@NULL.
@param id @param id
The identifier for the control. The identifier for the control.
@param label @param label
The initial label shown in the button which allows the user to expand or The initial label shown in the button which allows the user to
collapse the pane window. expand or collapse the pane window.
@param pos @param pos
Initial position. Initial position.
@param size @param size
@@ -149,13 +143,18 @@ public:
const wxString& name = "collapsiblePane"); const wxString& name = "collapsiblePane");
/** /**
Same as @c wxCollapsiblePane::Collapse(@false). Collapses or expands the pane window.
*/
void Collapse(bool collapse = true);
/**
Same as calling Collapse(@false).
*/ */
void Expand(); void Expand();
/** /**
Returns a pointer to the pane window. Add controls to the returned wxWindow Returns a pointer to the pane window. Add controls to the returned
to make them collapsible. wxWindow to make them collapsible.
*/ */
wxWindow* GetPane() const; wxWindow* GetPane() const;

View File

@@ -15,19 +15,21 @@
@library{wxcore} @library{wxcore}
@category{cmndlg} @category{cmndlg}
@see @ref overview_wxcolourdialogoverview "wxColourDialog Overview", wxColour, @see @ref overview_cmndlg_colour, wxColour, wxColourData,
wxColourData, wxGetColourFromUser() wxGetColourFromUser()
*/ */
class wxColourDialog : public wxDialog class wxColourDialog : public wxDialog
{ {
public: public:
/** /**
Constructor. Pass a parent window, and optionally a pointer to a block of colour Constructor. Pass a parent window, and optionally a pointer to a block
data, which will be copied to the colour dialog's colour data. Custom of colour data, which will be copied to the colour dialog's colour
colours from colour data object will be be used in dialog's colour palette. data.
Invalid entries in custom colours list will be ignored on some platforms (GTK)
or replaced with white colour on platforms where custom colours palette has Custom colours from colour data object will be be used in the dialog's
fixed size (MSW). colour palette. Invalid entries in custom colours list will be ignored
on some platforms(GTK) or replaced with white colour on platforms where
custom colours palette has fixed size (MSW).
@see wxColourData @see wxColourData
*/ */
@@ -39,19 +41,18 @@ public:
~wxColourDialog(); ~wxColourDialog();
/** /**
Same as @ref ctor() constructor. Same as wxColourDialog().
*/ */
bool Create(wxWindow* parent, wxColourData* data = NULL); bool Create(wxWindow* parent, wxColourData* data = NULL);
/** /**
Returns the @ref overview_wxcolourdata "colour data" associated with the colour Returns the colour data associated with the colour dialog.
dialog.
*/ */
wxColourData GetColourData(); wxColourData GetColourData();
/** /**
Shows the dialog, returning wxID_OK if the user pressed OK, and wxID_CANCEL Shows the dialog, returning wxID_OK if the user pressed OK, and
otherwise. wxID_CANCEL otherwise.
*/ */
int ShowModal(); int ShowModal();
}; };

View File

@@ -23,8 +23,14 @@
@category{gdi} @category{gdi}
@stdobjects @stdobjects
::wxNullColour, ::wxBLACK, ::wxWHITE, ::wxRED, ::wxBLUE, ::wxGREEN, - ::wxNullColour - An empty, invalid colour.
::wxCYAN, ::wxLIGHT_GREY - ::wxBLACK
- ::wxBLUE
- ::wxCYAN
- ::wxGREEN
- ::wxLIGHT_GREY
- ::wxRED
- ::wxWHITE
@see wxColourDatabase, wxPen, wxBrush, wxColourDialog, wxSystemSettings @see wxColourDatabase, wxPen, wxBrush, wxColourDialog, wxSystemSettings
*/ */
@@ -163,45 +169,17 @@ public:
}; };
/** /** @name Predefined colors. */
An empty colour. //@{
*/
wxColour wxNullColour; wxColour wxNullColour;
wxColour* wxBLACK;
/** wxColour* wxBLUE;
FIXME wxColour* wxCYAN;
*/ wxColour* wxGREEN;
wxColour wxBLACK; wxColour* wxLIGHT_GREY;
wxColour* wxRED;
/** wxColour* wxWHITE;
FIXME //@}
*/
wxColour wxWHITE;
/**
FIXME
*/
wxColour wxRED;
/**
FIXME
*/
wxColour wxBLUE;
/**
FIXME
*/
wxColour wxGREEN;
/**
FIXME
*/
wxColour wxCYAN;
/**
FIXME
*/
wxColour wxLIGHT_GREY;

View File

@@ -1,6 +1,6 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: combo.h // Name: combo.h
// Purpose: interface of wxComboPopup // Purpose: interface of wxComboCtrl and wxComboPopup
// Author: wxWidgets team // Author: wxWidgets team
// RCS-ID: $Id$ // RCS-ID: $Id$
// Licence: wxWindows license // Licence: wxWindows license
@@ -10,14 +10,13 @@
@class wxComboPopup @class wxComboPopup
@wxheader{combo.h} @wxheader{combo.h}
In order to use a custom popup with wxComboCtrl, an interface class must In order to use a custom popup with wxComboCtrl, an interface class must be
be derived from wxComboPopup. derived from wxComboPopup.
For more information on how to use it, see @ref overview_wxcomboctrl "Setting Custom Popup for For more information on how to use it, see @ref comboctrl_custompopup.
wxComboCtrl".
@library{wxcore} @library{wxcore}
@category{FIXME} @category{ctrl}
@see wxComboCtrl @see wxComboCtrl
*/ */
@@ -25,9 +24,9 @@ class wxComboPopup
{ {
public: public:
/** /**
Default constructor. It is recommended that internal variables Default constructor. It is recommended that internal variables are
are prepared in Init() instead prepared in Init() instead (because m_combo is not valid in
(because @ref mcombo() m_combo is not valid in constructor). constructor).
*/ */
wxComboPopup(); wxComboPopup();
@@ -36,7 +35,7 @@ public:
@returns @true if the call succeeded, @false otherwise. @returns @true if the call succeeded, @false otherwise.
*/ */
bool Create(wxWindow* parent); virtual bool Create(wxWindow* parent);
/** /**
Utility function that hides the popup. Utility function that hides the popup.
@@ -44,123 +43,147 @@ public:
void Dismiss(); void Dismiss();
/** /**
The derived class may implement this to return adjusted size The derived class may implement this to return adjusted size for the
for the popup control, according to the variables given. popup control, according to the variables given.
@param minWidth @param minWidth
Preferred minimum width. Preferred minimum width.
@param prefHeight @param prefHeight
Preferred height. May be -1 to indicate Preferred height. May be -1 to indicate no preference.
no preference.
@param maxWidth @param maxWidth
Max height for window, as limited by Max height for window, as limited by screen size.
screen size.
@remarks Called each time popup is about to be shown. @remarks This function is called each time popup is about to be shown.
*/ */
wxSize GetAdjustedSize(int minWidth, int prefHeight, virtual wxSize GetAdjustedSize(int minWidth, int prefHeight, int maxHeight);
int maxHeight);
/** /**
The derived class must implement this to return pointer The derived class must implement this to return pointer to the
to the associated control created in Create(). associated control created in Create().
*/ */
wxWindow* GetControl(); virtual wxWindow* GetControl();
/** /**
The derived class must implement this to return The derived class must implement this to return string representation
string representation of the value. of the value.
*/ */
wxString GetStringValue() const; virtual wxString GetStringValue() const;
/** /**
The derived class must implement this to initialize The derived class must implement this to initialize its internal
its internal variables. This method is called immediately variables. This method is called immediately after construction
after construction finishes. @ref mcombo() m_combo finishes. m_combo member variable has been initialized before the call.
member variable has been initialized before the call.
*/ */
void Init(); virtual void Init();
/** /**
Utility method that returns @true if Create has been called. Utility method that returns @true if Create has been called.
Useful in conjunction with LazyCreate(). Useful in conjunction with LazyCreate().
*/ */
bool IsCreated() const; bool IsCreated() const;
/** /**
The derived class may implement this to return The derived class may implement this to return @true if it wants to
@true if it wants to delay call to Create() delay call to Create() until the popup is shown for the first time. It
until the popup is shown for the first time. It is more is more efficient, but on the other hand it is often more convenient to
efficient, but on the other hand it is often more convenient have the control created immediately.
to have the control created immediately.
@remarks Base implementation returns @false. @remarks Base implementation returns @false.
*/ */
bool LazyCreate(); virtual bool LazyCreate();
/** /**
The derived class may implement this to do something The derived class may implement this to do something when the parent
when the parent wxComboCtrl gets double-clicked. wxComboCtrl gets double-clicked.
*/ */
void OnComboDoubleClick(); virtual void OnComboDoubleClick();
/** /**
The derived class may implement this to receive The derived class may implement this to receive key events from the
key events from the parent wxComboCtrl. parent wxComboCtrl.
Events not handled should be skipped, as usual. Events not handled should be skipped, as usual.
*/ */
void OnComboKeyEvent(wxKeyEvent& event); virtual void OnComboKeyEvent(wxKeyEvent& event);
/** /**
The derived class may implement this to do The derived class may implement this to do special processing when
special processing when popup is hidden. popup is hidden.
*/ */
void OnDismiss(); virtual void OnDismiss();
/** /**
The derived class may implement this to do The derived class may implement this to do special processing when
special processing when popup is shown. popup is shown.
*/ */
void OnPopup(); virtual void OnPopup();
/** /**
The derived class may implement this to paint The derived class may implement this to paint the parent wxComboCtrl.
the parent wxComboCtrl.
Default implementation draws value as string. Default implementation draws value as string.
*/ */
void PaintComboControl(wxDC& dc, const wxRect& rect); virtual void PaintComboControl(wxDC& dc, const wxRect& rect);
/** /**
The derived class must implement this to receive The derived class must implement this to receive string value changes
string value changes from wxComboCtrl. from wxComboCtrl.
*/ */
void SetStringValue(const wxString& value); virtual void SetStringValue(const wxString& value);
/** /**
wxComboCtrl m_combo Parent wxComboCtrl. This is parameter has been prepared before Init()
Parent wxComboCtrl. This is parameter has is called.
been prepared before Init() is called.
*/ */
wxComboCtrl m_combo;
}; };
/**
Features enabled for wxComboCtrl.
@see wxComboCtrl::GetFeatures()
*/
struct wxComboCtrlFeatures
{
enum
{
MovableButton = 0x0001, ///< Button can be on either side of control.
BitmapButton = 0x0002, ///< Button may be replaced with bitmap.
ButtonSpacing = 0x0004, ///< Button can have spacing from the edge
///< of the control.
TextIndent = 0x0008, ///< wxComboCtrl::SetTextIndent() can be used.
PaintControl = 0x0010, ///< Combo control itself can be custom painted.
PaintWritable = 0x0020, ///< A variable-width area in front of writable
///< combo control's textctrl can be custom
///< painted.
Borderless = 0x0040, ///< wxNO_BORDER window style works.
All = MovableButton | BitmapButton | ButtonSpacing |
TextIndent | PaintControl | PaintWritable |
Borderless ///< All features.
};
};
/** /**
@class wxComboCtrl @class wxComboCtrl
@wxheader{combo.h} @wxheader{combo.h}
A combo control is a generic combobox that allows totally custom popup. A combo control is a generic combobox that allows totally custom popup. In
In addition it has other customization features. addition it has other customization features. For instance, position and
For instance, position and size of the dropdown button can be changed. size of the dropdown button can be changed.
@section wxcomboctrl_custompopup Setting Custom Popup for wxComboCtrl @section comboctrl_custompopup Setting Custom Popup for wxComboCtrl
wxComboCtrl needs to be told somehow which control to use and this is done wxComboCtrl needs to be told somehow which control to use and this is done
by SetPopupControl(). by SetPopupControl(). However, we need something more than just a wxControl
However, we need something more than just a wxControl in this method as, in this method as, for example, we need to call
for example, we need to call SetStringValue("initial text value") and SetStringValue("initial text value") and wxControl doesn't have such
wxControl doesn't have such method. So we also need a wxComboPopup which method. So we also need a wxComboPopup which is an interface which must be
is an interface which must be implemented by a control to be usable as a popup. implemented by a control to be usable as a popup.
We couldn't derive wxComboPopup from wxControl as this would make it We couldn't derive wxComboPopup from wxControl as this would make it
impossible to have a class deriving from a wxWidgets control and from it, impossible to have a class deriving from a wxWidgets control and from it,
@@ -172,11 +195,9 @@ public:
#include <wx/combo.h> #include <wx/combo.h>
#include <wx/listctrl.h> #include <wx/listctrl.h>
class wxListViewComboPopup : public wxListView, class wxListViewComboPopup : public wxListView, public wxComboPopup
public wxComboPopup
{ {
public: public:
// Initialize member variables // Initialize member variables
virtual void Init() virtual void Init()
{ {
@@ -204,7 +225,7 @@ public:
virtual wxString GetStringValue() const virtual wxString GetStringValue() const
{ {
if ( m_value >= 0 ) if ( m_value >= 0 )
return wxListView::GetItemText(m_value); return wxListView::GetItemText(m_value);
return wxEmptyString; return wxEmptyString;
} }
@@ -225,7 +246,8 @@ public:
} }
protected: protected:
int m_value; // current item index
int m_value; // current item index
private: private:
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
@@ -240,16 +262,16 @@ public:
Here's how you would create and populate it in a dialog constructor: Here's how you would create and populate it in a dialog constructor:
@code @code
wxComboCtrl* comboCtrl = new wxComboCtrl(this,wxID_ANY,wxEmptyString); wxComboCtrl* comboCtrl = new wxComboCtrl(this, wxID_ANY, wxEmptyString);
wxListViewComboPopup* popupCtrl = new wxListViewComboPopup(); wxListViewComboPopup* popupCtrl = new wxListViewComboPopup();
comboCtrl->SetPopupControl(popupCtrl); comboCtrl->SetPopupControl(popupCtrl);
// Populate using wxListView methods // Populate using wxListView methods
popupCtrl->InsertItem(popupCtrl->GetItemCount(),wxT("First Item")); popupCtrl->InsertItem(popupCtrl->GetItemCount(), "First Item");
popupCtrl->InsertItem(popupCtrl->GetItemCount(),wxT("Second Item")); popupCtrl->InsertItem(popupCtrl->GetItemCount(), "Second Item");
popupCtrl->InsertItem(popupCtrl->GetItemCount(),wxT("Third Item")); popupCtrl->InsertItem(popupCtrl->GetItemCount(), "Third Item");
@endcode @endcode
@beginStyleTable @beginStyleTable
@@ -281,14 +303,19 @@ public:
@library{wxbase} @library{wxbase}
@category{ctrl} @category{ctrl}
@appearance{comboctrl.png} <!-- @appearance{comboctrl.png} -->
@see wxComboBox, wxChoice, wxOwnerDrawnComboBox, wxComboPopup, wxCommandEvent @see wxComboBox, wxChoice, wxOwnerDrawnComboBox, wxComboPopup,
wxCommandEvent
*/ */
class wxComboCtrl : public wxControl class wxComboCtrl : public wxControl
{ {
public: public:
//@{ /**
Default constructor.
*/
wxComboCtrl();
/** /**
Constructor, creating and showing a combo control. Constructor, creating and showing a combo control.
@@ -301,8 +328,7 @@ public:
@param pos @param pos
Window position. Window position.
@param size @param size
Window size. If wxDefaultSize is specified then the window is Window size. If wxDefaultSize is specified then the window is sized
sized
appropriately. appropriately.
@param style @param style
Window style. See wxComboCtrl. Window style. See wxComboCtrl.
@@ -313,7 +339,6 @@ public:
@see Create(), wxValidator @see Create(), wxValidator
*/ */
wxComboCtrl();
wxComboCtrl(wxWindow* parent, wxWindowID id, wxComboCtrl(wxWindow* parent, wxWindowID id,
const wxString& value = "", const wxString& value = "",
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
@@ -321,33 +346,34 @@ public:
long style = 0, long style = 0,
const wxValidator& validator = wxDefaultValidator, const wxValidator& validator = wxDefaultValidator,
const wxString& name = "comboCtrl"); const wxString& name = "comboCtrl");
//@}
/** /**
Destructor, destroying the combo control. Destructor, destroying the combo control.
*/ */
~wxComboCtrl(); virtual ~wxComboCtrl();
/** /**
This member function is not normally called in application code. This member function is not normally called in application code.
Instead, it can be implemented in a derived class to create a Instead, it can be implemented in a derived class to create a custom
custom popup animation. popup animation.
@returns @true if animation finishes before the function returns. @false The parameters are the same as those for DoShowPopup().
otherwise. In the latter case you need to manually call
DoShowPopup after the animation ends. @returns @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); virtual bool AnimateShow(const wxRect& rect, int flags);
/** /**
Copies the selected text to the clipboard. Copies the selected text to the clipboard.
*/ */
void Copy(); virtual void Copy();
/** /**
Creates the combo control for two-step construction. Derived classes Creates the combo control for two-step construction. Derived classes
should call or replace this function. See wxComboCtrl() should call or replace this function. See wxComboCtrl() for further
for further details. details.
*/ */
bool Create(wxWindow* parent, wxWindowID id, bool Create(wxWindow* parent, wxWindowID id,
const wxString& value = "", const wxString& value = "",
@@ -360,29 +386,37 @@ public:
/** /**
Copies the selected text to the clipboard and removes the selection. Copies the selected text to the clipboard and removes the selection.
*/ */
void Cut(); virtual void Cut();
/** /**
This member function is not normally called in application code. This member function is not normally called in application code.
Instead, it can be implemented in a derived class to return Instead, it can be implemented in a derived class to return default
default wxComboPopup, incase @c popup is @NULL. wxComboPopup, incase @a popup is @NULL.
@note If you have implemented OnButtonClick to do
something else than show the popup, then DoSetPopupControl @note If you have implemented OnButtonClick() to do something else than
must always return @NULL. show the popup, then DoSetPopupControl() must always set @a popup
to @NULL.
*/ */
void DoSetPopupControl(wxComboPopup* popup); void DoSetPopupControl(wxComboPopup* popup);
/** /**
This member function is not normally called in application code. This member function is not normally called in application code.
Instead, it must be called in a derived class to make sure popup Instead, it must be called in a derived class to make sure popup is
is properly shown after a popup animation has finished (but only properly shown after a popup animation has finished (but only if
if AnimateShow() did not finish AnimateShow() did not finish the animation within its function scope).
the animation within it's function scope).
@param rect @param rect
Position to show the popup window at, in screen coordinates. Position to show the popup window at, in screen coordinates.
@param flags @param flags
Combination of any of the following: 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); virtual void DoShowPopup(const wxRect& rect, int flags);
@@ -437,28 +471,31 @@ public:
int GetCustomPaintWidth() const; int GetCustomPaintWidth() const;
/** /**
Returns features supported by wxComboCtrl. If needed feature is missing, Returns features supported by wxComboCtrl. If needed feature is
you need to instead use wxGenericComboCtrl, which however may lack missing, you need to instead use wxGenericComboCtrl, which however may
native look and feel (but otherwise sports identical API). lack a native look and feel (but otherwise sports identical API).
@returns Value returned is a combination of following flags: @returns Value returned is a combination of the flags defined in
wxComboCtrlFeatures.
*/ */
static int GetFeatures(); static int GetFeatures();
/** /**
Returns the insertion point for the combo control's text field. Returns the insertion point for the combo control's text field.
@note Under wxMSW, this function always returns 0 if the combo control
doesn't have the focus. @note Under Windows, this function always returns 0 if the combo
control doesn't have the focus.
*/ */
long GetInsertionPoint() const; virtual long GetInsertionPoint() const;
/** /**
Returns the last position in the combo control text field. Returns the last position in the combo control text field.
*/ */
long GetLastPosition() const; virtual long GetLastPosition() const;
/** /**
Returns current popup interface that has been set with SetPopupControl. Returns current popup interface that has been set with
SetPopupControl().
*/ */
wxComboPopup* GetPopupControl(); wxComboPopup* GetPopupControl();
@@ -484,15 +521,15 @@ public:
const wxRect GetTextRect() const; const wxRect GetTextRect() const;
/** /**
Returns text representation of the current value. For writable Returns text representation of the current value. For writable combo
combo control it always returns the value in the text field. control it always returns the value in the text field.
*/ */
wxString GetValue() const; virtual wxString GetValue() const;
/** /**
Dismisses the popup window. Dismisses the popup window.
*/ */
void HidePopup(); virtual void HidePopup();
/** /**
Returns @true if the popup is currently shown Returns @true if the popup is currently shown
@@ -500,53 +537,47 @@ public:
bool IsPopupShown() const; bool IsPopupShown() const;
/** /**
Returns @true if the popup window is in the given state. Returns @true if the popup window is in the given state. Possible
Possible values are: values are:
@c Hidden() @beginTable
@row2col{wxComboCtrl::Hidden, Popup window is hidden.}
Popup window is hidden. @row2col{wxComboCtrl::Animating, Popup window is being shown, but the
popup animation has not yet finished.}
@c Animating() @row2col{wxComboCtrl::Visible, Popup window is fully visible.}
@endTable
Popup window is being shown, but the
popup animation has not yet finished.
@c Visible()
Popup window is fully visible.
*/ */
bool IsPopupWindowState(int state) const; bool IsPopupWindowState(int state) const;
/** /**
Implement in a derived class to define what happens on Implement in a derived class to define what happens on dropdown button
dropdown button click. click. Default action is to show the popup.
Default action is to show the popup.
@note If you implement this to do something else than @note If you implement this to do something else than show the popup,
show the popup, you must then also implement you must then also implement DoSetPopupControl() to always return
DoSetPopupControl() to always @NULL.
return @NULL.
*/ */
void OnButtonClick(); virtual void OnButtonClick();
/** /**
Pastes text from the clipboard to the text field. Pastes text from the clipboard to the text field.
*/ */
void Paste(); virtual void Paste();
/** /**
Removes the text between the two positions in the combo control text field. Removes the text between the two positions in the combo control text
field.
@param from @param from
The first position. The first position.
@param to @param to
The last position. The last position.
*/ */
void Remove(long from, long to); virtual void Remove(long from, long to);
/** /**
Replaces the text between two positions with the given text, in the combo Replaces the text between two positions with the given text, in the
control text field. combo control text field.
@param from @param from
The first position. The first position.
@@ -555,7 +586,7 @@ public:
@param text @param text
The text to insert. The text to insert.
*/ */
void Replace(long from, long to, const wxString& value); virtual void Replace(long from, long to, const wxString& value);
/** /**
Sets custom dropdown button graphics. Sets custom dropdown button graphics.
@@ -563,14 +594,13 @@ public:
@param bmpNormal @param bmpNormal
Default button image. Default button image.
@param pushButtonBg @param pushButtonBg
If @true, blank push button background is painted If @true, blank push button background is painted below the image.
below the image.
@param bmpPressed @param bmpPressed
Depressed button image. Depressed button image.
@param bmpHover @param bmpHover
Button image when mouse hovers above it. This Button image when mouse hovers above it. This should be ignored on
should be ignored on platforms and themes that do not generally draw platforms and themes that do not generally draw different kind of
different kind of button on mouse hover. button on mouse hover.
@param bmpDisabled @param bmpDisabled
Disabled button image. Disabled button image.
*/ */
@@ -588,18 +618,17 @@ public:
@param height @param height
Button height. Value = 0 specifies default. Button height. Value = 0 specifies default.
@param side @param side
Indicates which side the button will be placed. Indicates which side the button will be placed. Value can be wxLEFT
Value can be wxLEFT or wxRIGHT. or wxRIGHT.
@param spacingX @param spacingX
Horizontal spacing around the button. Default is 0. Horizontal spacing around the button. Default is 0.
*/ */
void SetButtonPosition(int width = -1, int height = -1, void SetButtonPosition(int width = -1, int height = -1,
int side = wxRIGHT, int side = wxRIGHT, int spacingX = 0);
int spacingX = 0);
/** /**
Set width, in pixels, of custom painted area in control without @c wxCB_READONLY Set width, in pixels, of custom painted area in control without
style. In read-only wxOwnerDrawnComboBox, this is used @c wxCB_READONLY style. In read-only wxOwnerDrawnComboBox, this is used
to indicate area that is not covered by the focus rectangle. to indicate area that is not covered by the focus rectangle.
*/ */
void SetCustomPaintWidth(int width); void SetCustomPaintWidth(int width);
@@ -610,39 +639,41 @@ public:
@param pos @param pos
The new insertion point. The new insertion point.
*/ */
void SetInsertionPoint(long pos); virtual void SetInsertionPoint(long pos);
/** /**
Sets the insertion point at the end of the combo control text field. Sets the insertion point at the end of the combo control text field.
*/ */
void SetInsertionPointEnd(); virtual void SetInsertionPointEnd();
/** /**
Set side of the control to which the popup will align itself. Valid values are Set side of the control to which the popup will align itself. Valid
@c wxLEFT, @c wxRIGHT and 0. The default value 0 means that the most appropriate values are @c wxLEFT, @c wxRIGHT and 0. The default value 0 means that
side is used (which, currently, is always @c wxLEFT). the most appropriate side is used (which, currently, is always
@c wxLEFT).
*/ */
void SetPopupAnchor(int anchorSide); void SetPopupAnchor(int anchorSide);
/** /**
Set popup interface class derived from wxComboPopup. Set popup interface class derived from wxComboPopup. This method should
This method should be called as soon as possible after the control be called as soon as possible after the control has been created,
has been created, unless OnButtonClick() unless OnButtonClick() has been overridden.
has been overridden.
*/ */
void SetPopupControl(wxComboPopup* popup); void SetPopupControl(wxComboPopup* popup);
/** /**
Extends popup size horizontally, relative to the edges of the combo control. Extends popup size horizontally, relative to the edges of the combo
control.
@param extLeft @param extLeft
How many pixel to extend beyond the left edge of the How many pixel to extend beyond the left edge of the control.
control. Default is 0. Default is 0.
@param extRight @param extRight
How many pixel to extend beyond the right edge of the How many pixel to extend beyond the right edge of the control.
control. Default is 0. Default is 0.
@remarks Popup minimum width may override arguments. @remarks Popup minimum width may override arguments. It is up to the
popup to fully take this into account.
*/ */
void SetPopupExtents(int extLeft, int extRight); void SetPopupExtents(int extLeft, int extRight);
@@ -654,69 +685,70 @@ public:
void SetPopupMaxHeight(int height); void SetPopupMaxHeight(int height);
/** /**
Sets minimum width of the popup. If wider than combo control, it will extend to Sets minimum width of the popup. If wider than combo control, it will
the left. extend to the left.
@remarks Value -1 indicates the default. @remarks Value -1 indicates the default. Also, popup implementation may
choose to ignore this.
*/ */
void SetPopupMinWidth(int width); void SetPopupMinWidth(int width);
/** /**
Selects the text between the two positions, in the combo control text field. Selects the text between the two positions, in the combo control text
field.
@param from @param from
The first position. The first position.
@param to @param to
The second position. The second position.
*/ */
void SetSelection(long from, long to); virtual void SetSelection(long from, long to);
/** /**
Sets the text for the text field without affecting the Sets the text for the text field without affecting the popup. Thus,
popup. Thus, unlike SetValue(), it works unlike SetValue(), it works equally well with combo control using
equally well with combo control using @c wxCB_READONLY style. @c wxCB_READONLY style.
*/ */
void SetText(const wxString& value); void SetText(const wxString& value);
/** /**
This will set the space in pixels between left edge of the control and the This will set the space in pixels between left edge of the control and
text, regardless whether control is read-only or not. Value -1 can be the text, regardless whether control is read-only or not. Value -1 can
given to indicate platform default. be given to indicate platform default.
*/ */
void SetTextIndent(int indent); void SetTextIndent(int indent);
/** /**
Sets the text for the combo control text field. Sets the text for the combo control text field.
@note For a combo control with @c wxCB_READONLY style the
string must be accepted by the popup (for instance, exist in the dropdown @note For a combo control with @c wxCB_READONLY style the string must
list), otherwise the call to SetValue() is ignored be accepted by the popup (for instance, exist in the dropdown
list), otherwise the call to SetValue() is ignored.
*/ */
void SetValue(const wxString& value); virtual void SetValue(const wxString& value);
/** /**
Same as SetValue, but also sends wxCommandEvent of type Same as SetValue(), but also sends wxCommandEvent of type
wxEVT_COMMAND_TEXT_UPDATED wxEVT_COMMAND_TEXT_UPDATED if @a withEvent is @true.
if @c withEvent is @true.
*/ */
void SetValueWithEvent(const wxString& value, void SetValueWithEvent(const wxString& value, bool withEvent = true);
bool withEvent = true);
/** /**
Show the popup. Show the popup.
*/ */
void ShowPopup(); virtual void ShowPopup();
/** /**
Undoes the last edit in the text field. Windows only. Undoes the last edit in the text field. Windows only.
*/ */
void Undo(); virtual void Undo();
/** /**
Enable or disable usage of an alternative popup window, which guarantees Enable or disable usage of an alternative popup window, which
ability to focus the popup control, and allows common native controls to guarantees ability to focus the popup control, and allows common native
function normally. This alternative popup window is usually a wxDialog, controls to function normally. This alternative popup window is usually
and as such, when it is shown, its parent top-level window will appear a wxDialog, and as such, when it is shown, its parent top-level window
as if the focus has been lost from it. will appear as if the focus has been lost from it.
*/ */
void UseAltPopupWindow(bool enable = true); void UseAltPopupWindow(bool enable = true);
}; };