| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/pickerbase.h
 
- // Purpose:     wxPickerBase definition
 
- // Author:      Francesco Montorsi (based on Vadim Zeitlin's code)
 
- // Modified by:
 
- // Created:     14/4/2006
 
- // Copyright:   (c) Vadim Zeitlin, Francesco Montorsi
 
- // Licence:     wxWindows Licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_PICKERBASE_H_BASE_
 
- #define _WX_PICKERBASE_H_BASE_
 
- #include "wx/control.h"
 
- #include "wx/sizer.h"
 
- #include "wx/containr.h"
 
- class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
 
- class WXDLLIMPEXP_FWD_CORE wxToolTip;
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxButtonNameStr[];
 
- // ----------------------------------------------------------------------------
 
- // wxPickerBase is the base class for the picker controls which support
 
- // a wxPB_USE_TEXTCTRL style; i.e. for those pickers which can use an auxiliary
 
- // text control next to the 'real' picker.
 
- //
 
- // The wxTextPickerHelper class manages enabled/disabled state of the text control,
 
- // its sizing and positioning.
 
- // ----------------------------------------------------------------------------
 
- #define wxPB_USE_TEXTCTRL           0x0002
 
- #define wxPB_SMALL                  0x8000
 
- 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)
 
-         { }
 
-     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);
 
- public:     // public API
 
-     // margin between the text control and the picker
 
-     void SetInternalMargin(int newmargin)
 
-         { GetTextCtrlItem()->SetBorder(newmargin); m_sizer->Layout(); }
 
-     int GetInternalMargin() const
 
-         { return GetTextCtrlItem()->GetBorder(); }
 
-     // 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) != 0; }
 
-     void SetTextCtrlGrowable(bool grow = true)
 
-     {
 
-         int f = GetDefaultTextCtrlFlag();
 
-         if ( grow )
 
-             f |= wxGROW;
 
-         else
 
-             f &= ~wxGROW;
 
-         GetTextCtrlItem()->SetFlag(f);
 
-     }
 
-     bool IsPickerCtrlGrowable() const
 
-         { return (GetPickerCtrlItem()->GetFlag() & wxGROW) != 0; }
 
-     void SetPickerCtrlGrowable(bool grow = true)
 
-     {
 
-         int f = GetDefaultPickerCtrlFlag();
 
-         if ( grow )
 
-             f |= wxGROW;
 
-         else
 
-             f &= ~wxGROW;
 
-         GetPickerCtrlItem()->SetFlag(f);
 
-     }
 
-     bool HasTextCtrl() const
 
-         { return m_text != NULL; }
 
-     wxTextCtrl *GetTextCtrl()
 
-         { return m_text; }
 
-     wxControl *GetPickerCtrl()
 
-         { return m_picker; }
 
-     void SetTextCtrl(wxTextCtrl* text)
 
-         { m_text = text; }
 
-     void SetPickerCtrl(wxControl* picker)
 
-         { m_picker = picker; }
 
-     // methods that derived class must/may override
 
-     virtual void UpdatePickerFromTextCtrl() = 0;
 
-     virtual void UpdateTextCtrlFromPicker() = 0;
 
- 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 &);
 
-     // returns the set of styles for the attached wxTextCtrl
 
-     // from given wxPickerBase's styles
 
-     virtual long GetTextCtrlStyle(long style) const
 
-         { return (style & wxWINDOW_STYLE_MASK); }
 
-     // returns the set of styles for the m_picker
 
-     virtual long GetPickerStyle(long style) const
 
-         { return (style & wxWINDOW_STYLE_MASK); }
 
-     wxSizerItem *GetPickerCtrlItem() const
 
-     {
 
-         if (this->HasTextCtrl())
 
-             return m_sizer->GetItem((size_t)1);
 
-         return m_sizer->GetItem((size_t)0);
 
-     }
 
-     wxSizerItem *GetTextCtrlItem() const
 
-     {
 
-         wxASSERT(this->HasTextCtrl());
 
-         return m_sizer->GetItem((size_t)0);
 
-     }
 
-     int GetDefaultPickerCtrlFlag() const
 
-     {
 
-         // on macintosh, without additional borders
 
-         // there's not enough space for focus rect
 
-         return wxALIGN_CENTER_VERTICAL|wxGROW
 
- #ifdef __WXMAC__
 
-             | wxTOP | wxRIGHT | wxBOTTOM
 
- #endif
 
-             ;
 
-     }
 
-     int GetDefaultTextCtrlFlag() const
 
-     {
 
-         // on macintosh, without wxALL there's not enough space for focus rect
 
-         return wxALIGN_CENTER_VERTICAL
 
- #ifdef __WXMAC__
 
-             | wxALL
 
- #else
 
-             | wxRIGHT
 
- #endif
 
-             ;
 
-     }
 
-     void PostCreation();
 
- protected:
 
-     wxTextCtrl *m_text;     // can be NULL
 
-     wxControl *m_picker;
 
-     wxBoxSizer *m_sizer;
 
- private:
 
-     DECLARE_ABSTRACT_CLASS(wxPickerBase)
 
- };
 
- #endif
 
-     // _WX_PICKERBASE_H_BASE_
 
 
  |