#define _WX_PICKERBASE_H_BASE_
#include "wx/control.h"
+#include "wx/sizer.h"
+#include "wx/containr.h"
-class WXDLLIMPEXP_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
+class WXDLLIMPEXP_FWD_CORE wxToolTip;
-extern WXDLLEXPORT_DATA(const wxChar) wxButtonNameStr[];
+extern WXDLLIMPEXP_DATA_CORE(const char) wxButtonNameStr[];
// ----------------------------------------------------------------------------
// wxPickerBase is the base class for the picker controls which support
// ----------------------------------------------------------------------------
#define wxPB_USE_TEXTCTRL 0x0002
+#define wxPB_SMALL 0x8000
-class WXDLLIMPEXP_CORE wxPickerBase : public wxControl
+class WXDLLIMPEXP_CORE wxPickerBase : public wxNavigationEnabled<wxControl>
{
public:
// ctor: text is the associated text control
wxPickerBase() : m_text(NULL), m_picker(NULL), m_sizer(NULL)
- { m_container.SetContainerWindow(this); }
+ { }
virtual ~wxPickerBase() {}
// if present, intercepts wxPB_USE_TEXTCTRL style and creates the text control
// The 3rd argument is the initial wxString to display in the text control
- bool CreateBase(wxWindow *parent, wxWindowID id,
- const wxString& text = wxEmptyString,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxButtonNameStr);
-
+ bool CreateBase(wxWindow *parent,
+ wxWindowID id,
+ const wxString& text = wxEmptyString,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxButtonNameStr);
public: // public API
int GetInternalMargin() const
{ return GetTextCtrlItem()->GetBorder(); }
- // proportion of the text control respect the picker
- // (which has a fixed proportion value of 1)
+ // proportion of the text control
void SetTextCtrlProportion(int prop)
{ GetTextCtrlItem()->SetProportion(prop); m_sizer->Layout(); }
int GetTextCtrlProportion() const
{ return GetTextCtrlItem()->GetProportion(); }
+ // proportion of the picker control
+ void SetPickerCtrlProportion(int prop)
+ { GetPickerCtrlItem()->SetProportion(prop); m_sizer->Layout(); }
+ int GetPickerCtrlProportion() const
+ { return GetPickerCtrlItem()->GetProportion(); }
+
bool IsTextCtrlGrowable() const
- { return GetTextCtrlItem()->GetFlag() & wxGROW; }
+ { return (GetTextCtrlItem()->GetFlag() & wxGROW) != 0; }
void SetTextCtrlGrowable(bool grow = true)
{
int f = GetDefaultTextCtrlFlag();
- if (grow)
- GetTextCtrlItem()->SetFlag(f | wxGROW);
+ if ( grow )
+ f |= wxGROW;
else
- GetTextCtrlItem()->SetFlag(f & ~wxGROW);
+ f &= ~wxGROW;
+
+ GetTextCtrlItem()->SetFlag(f);
}
bool IsPickerCtrlGrowable() const
- { return GetPickerCtrlItem()->GetFlag() & wxGROW; }
+ { return (GetPickerCtrlItem()->GetFlag() & wxGROW) != 0; }
void SetPickerCtrlGrowable(bool grow = true)
{
int f = GetDefaultPickerCtrlFlag();
- if (grow)
- GetPickerCtrlItem()->SetFlag(f | wxGROW);
+ if ( grow )
+ f |= wxGROW;
else
- GetPickerCtrlItem()->SetFlag(f & ~wxGROW);
+ f &= ~wxGROW;
+
+ GetPickerCtrlItem()->SetFlag(f);
}
bool HasTextCtrl() const
wxControl *GetPickerCtrl()
{ return m_picker; }
-public: // methods that derived class must/may override
-
+ // methods that derived class must/may override
virtual void UpdatePickerFromTextCtrl() = 0;
virtual void UpdateTextCtrlFromPicker() = 0;
-protected: // utility functions
+protected:
+ // overridden base class methods
+#if wxUSE_TOOLTIPS
+ virtual void DoSetToolTip(wxToolTip *tip);
+#endif // wxUSE_TOOLTIPS
+
// event handlers
void OnTextCtrlDelete(wxWindowDestroyEvent &);
void OnTextCtrlUpdate(wxCommandEvent &);
void OnTextCtrlKillFocus(wxFocusEvent &);
- void OnSize(wxSizeEvent &);
-
// returns the set of styles for the attached wxTextCtrl
// from given wxPickerBase's styles
virtual long GetTextCtrlStyle(long style) const
private:
DECLARE_ABSTRACT_CLASS(wxPickerBase)
- DECLARE_EVENT_TABLE()
-
- // This class must be something just like a panel...
- WX_DECLARE_CONTROL_CONTAINER();
};