| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: combo.h
- // Purpose: interface of wxComboCtrl and wxComboPopup
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- //
- // New window styles for wxComboCtrlBase
- //
- enum
- {
- // Double-clicking a read-only combo triggers call to popup's OnComboPopup.
- // In wxOwnerDrawnComboBox, for instance, it cycles item.
- wxCC_SPECIAL_DCLICK = 0x0100,
- // Dropbutton acts like standard push button.
- wxCC_STD_BUTTON = 0x0200
- };
- /**
- @class wxComboPopup
- In order to use a custom popup with wxComboCtrl, an interface class must be
- derived from wxComboPopup.
- For more information on how to use it, see @ref comboctrl_custompopup.
- @library{wxcore}
- @category{ctrl}
- @see wxComboCtrl
- */
- class wxComboPopup
- {
- public:
- /**
- Default constructor. It is recommended that internal variables are
- prepared in Init() instead (because m_combo is not valid in
- constructor).
- */
- wxComboPopup();
- /**
- The derived class must implement this to create the popup control.
- @return @true if the call succeeded, @false otherwise.
- */
- virtual bool Create(wxWindow* parent) = 0;
- /**
- You only need to implement this member function if you create
- your popup class in non-standard way. The default implementation can
- handle both multiple-inherited popup control (as seen in wxComboCtrl
- samples) and one allocated separately in heap.
- If you do completely re-implement this function, make sure it calls
- Destroy() for the popup control and also deletes @a this object
- (usually as the last thing).
- */
- virtual void DestroyPopup();
- /**
- Utility function that hides the popup.
- */
- void Dismiss();
- /**
- Implement to customize matching of value string to an item container
- entry.
-
- @param item
- String entered, usually by user or from SetValue() call.
-
- @param trueItem
- When item matches an entry, but the entry's string representation
- is not exactly the same (case mismatch, for example), then the
- true item string should be written back to here, if it is not
- a NULL pointer.
- @remarks
- Default implementation always return true and does not alter
- trueItem.
- */
- virtual bool FindItem(const wxString& item, wxString* trueItem=NULL);
- /**
- The derived class may implement this to return adjusted size for the
- popup control, according to the variables given.
- @param minWidth
- Preferred minimum width.
- @param prefHeight
- Preferred height. May be -1 to indicate no preference.
- @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() = 0;
- /**
- The derived class must implement this to return string representation
- of the value.
- */
- virtual wxString GetStringValue() const = 0;
- /**
- The derived class must implement this to initialize its internal
- variables. This method is called immediately after construction
- finishes. m_combo member variable has been initialized before the call.
- */
- virtual void Init();
- /**
- Utility method that returns @true if Create has been called.
- Useful in conjunction with LazyCreate().
- */
- bool IsCreated() const;
-
- /**
- The derived class may implement this to return @true if it wants to
- delay call to Create() until the popup is shown for the first time. It
- is more efficient, but on the other hand it is often more convenient to
- have the control created immediately.
- @remarks Base implementation returns @false.
- */
- virtual bool LazyCreate();
- /**
- The derived class may implement this to do something when the parent
- wxComboCtrl gets double-clicked.
- */
- virtual void OnComboDoubleClick();
- /**
- The derived class may implement this to receive key events from the
- parent wxComboCtrl.
- Events not handled should be skipped, as usual.
- */
- virtual void OnComboKeyEvent(wxKeyEvent& event);
- /**
- The derived class may implement this to do special processing when
- popup is hidden.
- */
- virtual void OnDismiss();
- /**
- The derived class may implement this to do special processing when
- popup is shown.
- */
- virtual void OnPopup();
- /**
- The derived class may implement this to paint the parent wxComboCtrl.
- Default implementation draws value as string.
- */
- virtual void PaintComboControl(wxDC& dc, const wxRect& rect);
- /**
- The derived class must implement this to receive string value changes
- from wxComboCtrl.
- */
- virtual void SetStringValue(const wxString& value);
- protected:
- /**
- Parent wxComboCtrl. This member variable is prepared automatically
- 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::SetMargins() 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
- A combo control is a generic combobox that allows totally custom popup. In
- addition it has other customization features. For instance, position and
- size of the dropdown button can be changed.
- @section comboctrl_custompopup Setting Custom Popup for wxComboCtrl
- wxComboCtrl needs to be told somehow which control to use and this is done
- by SetPopupControl(). However, we need something more than just a wxControl
- in this method as, for example, we need to call
- SetStringValue("initial text value") and wxControl doesn't have such
- method. So we also need a wxComboPopup which is an interface which must be
- implemented by a control to be usable as a popup.
- 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,
- so instead it is just a mix-in.
- Here's a minimal sample of wxListView popup:
- @code
- #include <wx/combo.h>
- #include <wx/listctrl.h>
- class wxListViewComboPopup : public wxListView, public wxComboPopup
- {
- public:
- // Initialize member variables
- virtual void Init()
- {
- m_value = -1;
- }
- // Create popup control
- virtual bool Create(wxWindow* parent)
- {
- return wxListView::Create(parent,1,wxPoint(0,0),wxDefaultSize);
- }
- // Return pointer to the created control
- virtual wxWindow *GetControl() { return this; }
- // Translate string into a list selection
- virtual void SetStringValue(const wxString& s)
- {
- int n = wxListView::FindItem(-1,s);
- if ( n >= 0 && n < wxListView::GetItemCount() )
- wxListView::Select(n);
- }
- // Get list selection as a string
- virtual wxString GetStringValue() const
- {
- if ( m_value >= 0 )
- return wxListView::GetItemText(m_value);
- return wxEmptyString;
- }
- // Do mouse hot-tracking (which is typical in list popups)
- void OnMouseMove(wxMouseEvent& event)
- {
- // TODO: Move selection to cursor
- }
- // On mouse left up, set the value and close the popup
- void OnMouseClick(wxMouseEvent& WXUNUSED(event))
- {
- m_value = wxListView::GetFirstSelected();
- // TODO: Send event as well
- Dismiss();
- }
- protected:
- int m_value; // current item index
- private:
- wxDECLARE_EVENT_TABLE();
- };
- wxBEGIN_EVENT_TABLE(wxListViewComboPopup, wxListView)
- EVT_MOTION(wxListViewComboPopup::OnMouseMove)
- EVT_LEFT_UP(wxListViewComboPopup::OnMouseClick)
- wxEND_EVENT_TABLE()
- @endcode
- Here's how you would create and populate it in a dialog constructor:
- @code
- wxComboCtrl* comboCtrl = new wxComboCtrl(this, wxID_ANY, wxEmptyString);
- wxListViewComboPopup* popupCtrl = new wxListViewComboPopup();
- // It is important to call SetPopupControl() as soon as possible
- comboCtrl->SetPopupControl(popupCtrl);
- // Populate using wxListView methods
- popupCtrl->InsertItem(popupCtrl->GetItemCount(), "First Item");
- popupCtrl->InsertItem(popupCtrl->GetItemCount(), "Second Item");
- popupCtrl->InsertItem(popupCtrl->GetItemCount(), "Third Item");
- @endcode
- @beginStyleTable
- @style{wxCB_READONLY}
- Text will not be editable.
- @style{wxCB_SORT}
- Sorts the entries in the list alphabetically.
- @style{wxTE_PROCESS_ENTER}
- The control will generate the event @c wxEVT_TEXT_ENTER
- (otherwise pressing Enter key is either processed internally by the
- control or used for navigation between dialog controls). Windows
- only.
- @style{wxCC_SPECIAL_DCLICK}
- Double-clicking triggers a call to popup's OnComboDoubleClick.
- Actual behaviour is defined by a derived class. For instance,
- wxOwnerDrawnComboBox will cycle an item. This style only applies if
- wxCB_READONLY is used as well.
- @style{wxCC_STD_BUTTON}
- Drop button will behave more like a standard push button.
- @endStyleTable
- @beginEventEmissionTable{wxCommandEvent}
- @event{EVT_TEXT(id, func)}
- Process a @c wxEVT_TEXT event, when the text changes.
- @event{EVT_TEXT_ENTER(id, func)}
- Process a @c wxEVT_TEXT_ENTER event, when RETURN is pressed in
- the combo control.
- @event{EVT_COMBOBOX_DROPDOWN(id, func)}
- Process a @c wxEVT_COMBOBOX_DROPDOWN event, which is generated
- when the popup window is shown (drops down).
- @event{EVT_COMBOBOX_CLOSEUP(id, func)}
- Process a @c wxEVT_COMBOBOX_CLOSEUP event, which is generated
- when the popup window of the combo control disappears (closes up).
- You should avoid adding or deleting items in this event.
- @endEventTable
- @library{wxcore}
- @category{ctrl}
- @appearance{comboctrl}
- @see wxComboBox, wxChoice, wxOwnerDrawnComboBox, wxComboPopup,
- wxCommandEvent
- */
- class wxComboCtrl : public wxControl,
- public wxTextEntry
- {
- public:
- /**
- Default constructor.
- */
- wxComboCtrl();
- /**
- Constructor, creating and showing a combo control.
- @param parent
- Parent window. Must not be @NULL.
- @param id
- Window identifier. The value wxID_ANY indicates a default value.
- @param value
- 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.
- @param style
- Window style. See wxComboCtrl.
- @param validator
- Window validator.
- @param name
- Window name.
- @see Create(), wxValidator
- */
- 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 = wxComboBoxNameStr);
- /**
- Destructor, destroying the combo control.
- */
- virtual ~wxComboCtrl();
- /**
- Copies the selected text to the clipboard.
- */
- virtual void Copy();
- /**
- Creates the combo control for two-step construction. Derived classes
- should call or replace this function. See wxComboCtrl() for further
- details.
- */
- 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 = wxComboBoxNameStr);
- /**
- Copies the selected text to the clipboard and removes the selection.
- */
- virtual void Cut();
- /**
- Dismisses the popup window.
- Notice that calling this function will generate a
- @c wxEVT_COMBOBOX_CLOSEUP event.
- @since 2.9.2
- */
- virtual void Dismiss();
- /**
- Enables or disables popup animation, if any, depending on the value of
- the argument.
- */
- void EnablePopupAnimation(bool enable = true);
-
- /**
- Returns true if given key combination should toggle the popup.
- */
- virtual bool IsKeyPopupToggle(const wxKeyEvent& event) const;
- /**
- Prepare background of combo control or an item in a dropdown list in a
- way typical on platform. This includes painting the focus/disabled
- background and setting the clipping region.
- Unless you plan to paint your own focus indicator, you should always
- call this in your wxComboPopup::PaintComboControl implementation. In
- addition, it sets pen and text colour to what looks good and proper
- against the background.
- flags: wxRendererNative flags:
- wxCONTROL_ISSUBMENU: is drawing a list item instead of combo control
- wxCONTROL_SELECTED: list item is selected
- wxCONTROL_DISABLED: control/item is disabled
- */
- virtual void PrepareBackground( wxDC& dc, const wxRect& rect, int flags ) const;
- /**
- Returns true if focus indicator should be drawn in the control.
- */
- bool ShouldDrawFocus() const;
- /**
- Returns disabled button bitmap that has been set with
- SetButtonBitmaps().
- @return A reference to the disabled state bitmap.
- */
- const wxBitmap& GetBitmapDisabled() const;
- /**
- Returns button mouse hover bitmap that has been set with
- SetButtonBitmaps().
- @return A reference to the mouse hover state bitmap.
- */
- const wxBitmap& GetBitmapHover() const;
- /**
- Returns default button bitmap that has been set with
- SetButtonBitmaps().
- @return A reference to the normal state bitmap.
- */
- const wxBitmap& GetBitmapNormal() const;
- /**
- Returns depressed button bitmap that has been set with
- SetButtonBitmaps().
- @return A reference to the depressed state bitmap.
- */
- const wxBitmap& GetBitmapPressed() const;
- /**
- Returns current size of the dropdown button.
- */
- wxSize GetButtonSize();
- /**
- Returns custom painted area in control.
- @see SetCustomPaintWidth().
- */
- int GetCustomPaintWidth() const;
- /**
- Returns features supported by wxComboCtrl. If needed feature is
- missing, you need to instead use wxGenericComboCtrl, which however may
- lack a native look and feel (but otherwise sports identical API).
- @return Value returned is a combination of the flags defined in
- wxComboCtrlFeatures.
- */
- static int GetFeatures();
- /**
- Returns the current hint string.
- See SetHint() for more information about hints.
- @since 2.9.1
- */
- virtual wxString GetHint() const;
- /**
- Returns the insertion point for the combo control's text field.
- @note Under Windows, this function always returns 0 if the combo
- control doesn't have the focus.
- */
- virtual long GetInsertionPoint() const;
- /**
- Returns the last position in the combo control text field.
- */
- virtual long GetLastPosition() const;
- /**
- Returns the margins used by the control. The @c x field of the returned
- point is the horizontal margin and the @c y field is the vertical one.
- @remarks If given margin cannot be accurately determined, its value
- will be set to -1.
- @see SetMargins()
- @since 2.9.1
- */
- wxPoint GetMargins() const;
- /**
- Returns current popup interface that has been set with
- SetPopupControl().
- */
- wxComboPopup* GetPopupControl();
- /**
- Returns popup window containing the popup control.
- */
- wxWindow* GetPopupWindow() const;
- /**
- Get the text control which is part of the combo control.
- */
- wxTextCtrl* GetTextCtrl() const;
- /**
- Returns actual indentation in pixels.
- @deprecated Use GetMargins() instead.
- */
- wxCoord GetTextIndent() const;
- /**
- Returns area covered by the text field (includes everything except
- borders and the dropdown button).
- */
- const wxRect& GetTextRect() const;
- /**
- Returns text representation of the current value. For writable combo
- control it always returns the value in the text field.
- */
- virtual wxString GetValue() const;
- /**
- Dismisses the popup window.
- @param generateEvent
- Set this to @true in order to generate
- @c wxEVT_COMBOBOX_CLOSEUP event.
- @deprecated Use Dismiss() instead.
- */
- virtual void HidePopup(bool generateEvent=false);
- /**
- Returns @true if the popup is currently shown
- */
- bool IsPopupShown() const;
- /**
- Returns @true if the popup window is in the given state. Possible
- values are:
- @beginTable
- @row2col{wxComboCtrl::Hidden, Popup window is hidden.}
- @row2col{wxComboCtrl::Animating, Popup window is being shown, but the
- popup animation has not yet finished.}
- @row2col{wxComboCtrl::Visible, Popup window is fully visible.}
- @endTable
- */
- bool IsPopupWindowState(int state) const;
- /**
- Implement in a derived class to define what happens on dropdown button
- click. Default action is to show the popup.
- @note If you implement this to do something else than show the popup,
- you must then also implement DoSetPopupControl() to always return
- @NULL.
- */
- virtual void OnButtonClick();
- /**
- Pastes text from the clipboard to the text field.
- */
- virtual void Paste();
- /**
- Shows the popup portion of the combo control.
- Notice that calling this function will generate a
- @c wxEVT_COMBOBOX_DROPDOWN event.
- @since 2.9.2
- */
- virtual void Popup();
- /**
- Removes the text between the two positions in the combo control text
- field.
- @param from
- The first position.
- @param to
- The last position.
- */
- virtual void Remove(long from, long to);
- /**
- Replaces the text between two positions with the given text, in the
- combo control text field.
- @param from
- The first position.
- @param to
- The second position.
- @param text
- The text to insert.
- */
- virtual void Replace(long from, long to, const wxString& text);
- /**
- Sets custom dropdown button graphics.
- @param bmpNormal
- Default button image.
- @param pushButtonBg
- If @true, blank push button background is painted below the image.
- @param bmpPressed
- Depressed button image.
- @param bmpHover
- Button image when mouse hovers above it. This should be ignored on
- platforms and themes that do not generally draw different kind of
- button on mouse hover.
- @param bmpDisabled
- Disabled button image.
- */
- void SetButtonBitmaps(const wxBitmap& bmpNormal,
- bool pushButtonBg = false,
- const wxBitmap& bmpPressed = wxNullBitmap,
- const wxBitmap& bmpHover = wxNullBitmap,
- const wxBitmap& bmpDisabled = wxNullBitmap);
- /**
- Sets size and position of dropdown button.
- @param width
- Button width. Value = 0 specifies default.
- @param height
- Button height. Value = 0 specifies default.
- @param side
- Indicates which side the button will be placed. Value can be wxLEFT
- or wxRIGHT.
- @param spacingX
- Horizontal spacing around the button. Default is 0.
- */
- void SetButtonPosition(int width = -1, int height = -1,
- int side = wxRIGHT, int spacingX = 0);
- /**
- Set width, in pixels, of custom painted area in control without
- @c wxCB_READONLY style. In read-only wxOwnerDrawnComboBox, this is used
- to indicate area that is not covered by the focus rectangle.
- */
- void SetCustomPaintWidth(int width);
- /**
- Sets a hint shown in an empty unfocused combo control.
- Notice that hints are known as <em>cue banners</em> under MSW or
- <em>placeholder strings</em> under OS X.
- @see wxTextEntry::SetHint()
- @since 2.9.1
- */
- virtual bool SetHint(const wxString& hint);
- /**
- Sets the insertion point in the text field.
- @param pos
- The new insertion point.
- */
- virtual void SetInsertionPoint(long pos);
- /**
- Sets the insertion point at the end of the combo control text field.
- */
- virtual void SetInsertionPointEnd();
- //@{
- /**
- Attempts to set the control margins. When margins are given as wxPoint,
- x indicates the left and y the top margin. Use -1 to indicate that
- an existing value should be used.
- @return
- @true if setting of all requested margins was successful.
- @since 2.9.1
- */
- bool SetMargins(const wxPoint& pt);
- bool SetMargins(wxCoord left, wxCoord top = -1);
- //@}
- /**
- Set side of the control to which the popup will align itself. Valid
- values are @c wxLEFT, @c wxRIGHT and 0. The default value 0 means that
- the most appropriate side is used (which, currently, is always
- @c wxLEFT).
- */
- void SetPopupAnchor(int anchorSide);
- /**
- Set popup interface class derived from wxComboPopup. This method should
- be called as soon as possible after the control has been created,
- unless OnButtonClick() has been overridden.
- */
- void SetPopupControl(wxComboPopup* popup);
- /**
- Extends popup size horizontally, relative to the edges of the combo
- control.
- @param extLeft
- How many pixel to extend beyond the left edge of the control.
- Default is 0.
- @param extRight
- How many pixel to extend beyond the right edge of the control.
- Default is 0.
- @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);
- /**
- Sets preferred maximum height of the popup.
- @remarks Value -1 indicates the default.
- */
- void SetPopupMaxHeight(int height);
- /**
- Sets minimum width of the popup. If wider than combo control, it will
- extend to the left.
- @remarks Value -1 indicates the default. Also, popup implementation may
- choose to ignore this.
- */
- void SetPopupMinWidth(int width);
- /**
- Selects the text between the two positions, in the combo control text
- field.
- @param from
- The first position.
- @param to
- The second position.
- */
- virtual void SetSelection(long from, long to);
- /**
- Sets the text for the text field without affecting the popup. Thus,
- unlike SetValue(), it works equally well with combo control using
- @c wxCB_READONLY style.
- */
- void SetText(const wxString& value);
- /**
- Set a custom window style for the embedded wxTextCtrl. Usually you
- will need to use this during two-step creation, just before Create().
- For example:
- @code
- wxComboCtrl* comboCtrl = new wxComboCtrl();
- // Let's make the text right-aligned
- comboCtrl->SetTextCtrlStyle(wxTE_RIGHT);
- comboCtrl->Create(parent, wxID_ANY, wxEmptyString);
- @endcode
- */
- void SetTextCtrlStyle( int style );
- /**
- This will set the space in pixels between left edge of the control and
- the text, regardless whether control is read-only or not. Value -1 can
- be given to indicate platform default.
- @deprecated Use SetMargins() instead.
- */
- void SetTextIndent(int indent);
- /**
- 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
- list), otherwise the call to SetValue() is ignored.
- */
- virtual void SetValue(const wxString& value);
- /**
- Changes value of the control as if user had done it by selecting an
- item from a combo box drop-down list.
- */
- void SetValueByUser(const wxString& value);
- /**
- Show the popup.
- @deprecated Use Popup() instead.
- */
- virtual void ShowPopup();
- /**
- Undoes the last edit in the text field. Windows only.
- */
- virtual void Undo();
- /**
- Enable or disable usage of an alternative popup window, which
- guarantees ability to focus the popup control, and allows common native
- controls to function normally. This alternative popup window is usually
- a wxDialog, and as such, when it is shown, its parent top-level window
- 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, in case @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);
- };
|