wxCC_IFLAG_CREATED = 0x0100,
// Internal use: really put button outside
wxCC_IFLAG_BUTTON_OUTSIDE = 0x0200,
- // Internal use: SetMargins has been succesfully called
+ // Internal use: SetMargins has been successfully called
wxCC_IFLAG_LEFT_MARGIN_SET = 0x0400,
// Internal use: Set wxTAB_TRAVERSAL to parent when popup is dismissed
wxCC_IFLAG_PARENT_TAB_TRAVERSAL = 0x0800,
virtual ~wxComboCtrlBase();
- // show/hide popup window
+ // Show/hide popup window (wxComboBox-compatible methods)
+ virtual void Popup();
+ virtual void Dismiss()
+ {
+ HidePopup(true);
+ }
+
+ // Show/hide popup window.
+ // TODO: Maybe deprecate in favor of Popup()/Dismiss().
+ // However, these functions are still called internally
+ // so it is not straightforward.
virtual void ShowPopup();
virtual void HidePopup(bool generateEvent=false);
virtual bool Show(bool show = true);
virtual bool SetFont(const wxFont& font);
- // wxTextCtrl methods - for readonly combo they should return
- // without errors.
- virtual void SetValue(const wxString& value);
+ //
+ // wxTextEntry methods
+ //
+ // NB: We basically need to override all of them because there is
+ // no guarantee how platform-specific wxTextEntry is implemented.
+ //
+ virtual void SetValue(const wxString& value)
+ { wxTextEntryBase::SetValue(value); }
+ virtual void ChangeValue(const wxString& value)
+ { wxTextEntryBase::ChangeValue(value); }
- // wxTextEntry methods - we basically need to override all of them
virtual void WriteText(const wxString& text);
+ virtual void AppendText(const wxString& text)
+ { wxTextEntryBase::AppendText(text); }
+
+ virtual wxString GetValue() const
+ { return wxTextEntryBase::GetValue(); }
+
+ virtual wxString GetRange(long from, long to) const
+ { return wxTextEntryBase::GetRange(from, to); }
+ // Replace() and DoSetValue() need to be fully re-implemented since
+ // EventSuppressor utility class does not work with the way
+ // wxComboCtrl is implemented.
virtual void Replace(long from, long to, const wxString& value);
+
virtual void Remove(long from, long to);
virtual void Copy();
// This method sets value and also optionally sends EVT_TEXT
// (needed by combo popups)
- void SetValueWithEvent(const wxString& value, bool withEvent = true);
+ wxDEPRECATED( void SetValueWithEvent(const wxString& value,
+ bool withEvent = true) );
+
+ // Changes value of the control as if user had done it by selecting an
+ // item from a combo box drop-down list. Needs to be public so that
+ // derived popup classes can call it.
+ void SetValueByUser(const wxString& value);
//
// Popup customization methods
// Return true if Create has finished
bool IsCreated() const { return m_iFlags & wxCC_IFLAG_CREATED ? true : false; }
+ // Need to override to return text area background colour
+ wxColour GetBackgroundColour() const;
+
// common code to be called on popup hide/dismiss
void OnPopupDismiss(bool generateEvent);
// extraStyle: Extra style parameters
void CreateTextCtrl( int extraStyle );
+ // Called when text was changed programmatically
+ // (e.g. from WriteText())
+ void OnSetValue(const wxString& value);
+
// Installs standard input handler to combo (and optionally to the textctrl)
void InstallInputHandlers();
// Standard textctrl positioning routine. Just give it platform-dependant
// textctrl coordinate adjustment.
- virtual void PositionTextCtrl( int textCtrlXAdjust, int textCtrlYAdjust );
+ virtual void PositionTextCtrl( int textCtrlXAdjust = 0,
+ int textCtrlYAdjust = 0);
// event handlers
void OnSizeEvent( wxSizeEvent& event );
#endif
// protected wxTextEntry methods
+ virtual void DoSetValue(const wxString& value, int flags);
virtual wxString DoGetValue() const;
virtual wxWindow *GetEditableWindow() { return this; }
// main (ie. topmost) window of a composite control (default = this)
wxWindow* m_mainCtrlWnd;
- // used to prevent immediate re-popupping incase closed popup
+ // used to prevent immediate re-popupping in case closed popup
// by clicking on the combo control (needed because of inconsistent
// transient implementation across platforms).
wxLongLong m_timeCanAcceptClick;
wxRect m_tcArea;
wxRect m_btnArea;
+ // Colour of the text area, in case m_text is NULL
+ wxColour m_tcBgCol;
+
// current button state (uses renderer flags)
int m_btnState;
// should the focus be reset to the textctrl in idle time?
bool m_resetFocus;
+ // is the text-area background colour overridden?
+ bool m_hasTcBgCol;
+
private:
void Init();
// Return true for success.
virtual bool Create(wxWindow* parent) = 0;
+ // Calls Destroy() for the popup control (i.e. one returned by
+ // GetControl()) and makes sure that 'this' is deleted at the end.
+ // Default implementation works for both cases where popup control
+ // class is multiple inherited or created on heap as a separate
+ // object.
+ virtual void DestroyPopup();
+
// We must have an associated control which is subclassed by the combobox.
virtual wxWindow *GetControl() = 0;
// Gets displayed string representation of the value.
virtual wxString GetStringValue() const = 0;
+ // Called to check if the popup - when an item container - actually
+ // has matching item. Case-sensitivity checking etc. is up to the
+ // implementation. If the found item matched the string, but is
+ // different, it should be written back to pItem. Default implementation
+ // always return true and does not alter trueItem.
+ virtual bool FindItem(const wxString& item, wxString* trueItem=NULL);
+
// This is called to custom paint in the combo control itself (ie. not the popup).
// Default implementation draws value as string.
virtual void PaintComboControl( wxDC& dc, const wxRect& rect );