1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface for Colour, Dir, File, Font picker controls
 
   7 // Created:     6-June-2006
 
   9 // Copyright:   (c) 2006 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  16 //---------------------------------------------------------------------------
 
  25 "Base abstract class for all pickers which support an auxiliary text
 
  26 control. This class handles all positioning and sizing of the text
 
  27 control like a an horizontal `wx.BoxSizer` would do, with the text
 
  28 control on the left of the picker button and the proportion of the
 
  29 picker fixed to value 1.", "");
 
  31 class wxPickerBase : public wxControl
 
  34     // This class is an ABC, can't be instantiated from Python.
 
  35     //wxPickerBase() : m_text(NULL), m_picker(NULL),
 
  36     //                 m_margin(5), m_textProportion(2) {}
 
  37     //virtual ~wxPickerBase();
 
  40     // if present, intercepts wxPB_USE_TEXTCTRL style and creates the text control
 
  41     // The 3rd argument is the initial wxString to display in the text control
 
  42     bool CreateBase(wxWindow *parent, wxWindowID id,
 
  43         const wxString& text = wxEmptyString,
 
  44         const wxPoint& pos = wxDefaultPosition,
 
  45         const wxSize& size = wxDefaultSize, long style = 0,
 
  46         const wxValidator& validator = wxDefaultValidator,
 
  47         const wxString& name = wxButtonNameStr);
 
  52         void , SetInternalMargin(int newmargin),
 
  53         "Sets the margin (in pixels) between the picker and the text control.", "");
 
  56         int , GetInternalMargin() const,
 
  57         "Returns the margin (in pixels) between the picker and the text
 
  62         void , SetTextCtrlProportion(int prop),
 
  63         "Sets the proportion between the text control and the picker button.
 
  64 This is used to set relative sizes of the text contorl and the picker.
 
  65 The value passed to this function must be >= 1.", "");
 
  68         int , GetTextCtrlProportion() const,
 
  69         "Returns the proportion between the text control and the picker.", "");
 
  73         void , SetPickerCtrlProportion(int prop),
 
  74         "Sets the proportion value of the picker.", "");
 
  77         int , GetPickerCtrlProportion() const,
 
  78         "Gets the proportion value of the picker.", "");
 
  82         bool , IsTextCtrlGrowable() const,
 
  86         void , SetTextCtrlGrowable(bool grow = true),
 
  91         bool , IsPickerCtrlGrowable() const,
 
  95         void , SetPickerCtrlGrowable(bool grow = true),
 
 100         bool , HasTextCtrl() const,
 
 101         "Returns true if this class has a valid text control (i.e. if the
 
 102 wx.PB_USE_TEXTCTRL style was given when creating this control).", "");
 
 105         wxTextCtrl *, GetTextCtrl(),
 
 106         "Returns a pointer to the text control handled by this class or None if
 
 107 the wx.PB_USE_TEXTCTRL style was not specified when this control was
 
 110 Very important: the contents of the text control could be containing
 
 111 an invalid representation of the entity which can be chosen through
 
 112 the picker (e.g. the user entered an invalid colour syntax because of
 
 113 a typo). Thus you should never parse the content of the textctrl to
 
 114 get the user's input; rather use the derived-class getter
 
 115 (e.g. `wx.ColourPickerCtrl.GetColour`, `wx.FilePickerCtrl.GetPath`,
 
 119         wxControl *, GetPickerCtrl(),
 
 123     %property(InternalMargin, GetInternalMargin, SetInternalMargin, doc="See `GetInternalMargin` and `SetInternalMargin`");
 
 124     %property(PickerCtrl, GetPickerCtrl, doc="See `GetPickerCtrl`");
 
 125     %property(PickerCtrlProportion, GetPickerCtrlProportion, SetPickerCtrlProportion, doc="See `GetPickerCtrlProportion` and `SetPickerCtrlProportion`");
 
 126     %property(TextCtrl, GetTextCtrl, doc="See `GetTextCtrl`");
 
 127     %property(TextCtrlProportion, GetTextCtrlProportion, SetTextCtrlProportion, doc="See `GetTextCtrlProportion` and `SetTextCtrlProportion`");
 
 129     %property(TextCtrlGrowable, IsTextCtrlGrowable, SetTextCtrlGrowable, doc="See `IsTextCtrlGrowable` and `SetTextCtrlGrowable`");
 
 130     %property(PickerCtrlGrowable, IsPickerCtrlGrowable, SetPickerCtrlGrowable, doc="See `IsPickerCtrlGrowable` and `SetPickerCtrlGrowable`");
 
 134 //---------------------------------------------------------------------------
 
 137 MAKE_CONST_WXSTRING(ColourPickerCtrlNameStr);
 
 142     wxCLRP_DEFAULT_STYLE,
 
 146 MustHaveApp(wxColourPickerCtrl);
 
 147 DocStr(wxColourPickerCtrl,
 
 148 "This control allows the user to select a colour. The generic
 
 149 implementation is a button which brings up a `wx.ColourDialog` when
 
 150 clicked. Native implementations may differ but this is usually a
 
 151 (small) widget which give access to the colour-chooser dialog.",
 
 157     ======================  ============================================
 
 158     wx.CLRP_DEFAULT         Default style.
 
 159     wx.CLRP_USE_TEXTCTRL    Creates a text control to the left of the
 
 160                             picker button which is completely managed
 
 161                             by the `wx.ColourPickerCtrl` and which can
 
 162                             be used by the user to specify a colour.
 
 163                             The text control is automatically synchronized
 
 164                             with the button's value. Use functions defined in
 
 165                             `wx.PickerBase` to modify the text control.
 
 166     wx.CLRP_SHOW_LABEL      Shows the colour in HTML form (AABBCC) as the
 
 167                             colour button label (instead of no label at all).
 
 168     ======================  ============================================
 
 173     ========================  ==========================================
 
 174     EVT_COLOURPICKER_CHANGED  The user changed the colour selected in the
 
 175                               control either using the button or using the
 
 176                               text control (see wx.CLRP_USE_TEXTCTRL; note
 
 177                               that in this case the event is fired only if
 
 178                               the user's input is valid, i.e. recognizable).
 
 179     ========================  ==========================================
 
 182 class wxColourPickerCtrl : public wxPickerBase
 
 185     %pythonAppend wxColourPickerCtrl      "self._setOORInfo(self)"
 
 186     %pythonAppend wxColourPickerCtrl()    ""
 
 188     wxColourPickerCtrl(wxWindow *parent, wxWindowID id=-1,
 
 189                        const wxColour& col = *wxBLACK,
 
 190                        const wxPoint& pos = wxDefaultPosition,
 
 191                        const wxSize& size = wxDefaultSize,
 
 192                        long style = wxCLRP_DEFAULT_STYLE,
 
 193                        const wxValidator& validator = wxDefaultValidator,
 
 194                        const wxString& name = wxPyColourPickerCtrlNameStr);
 
 195     %RenameCtor(PreColourPickerCtrl, wxColourPickerCtrl());
 
 197     bool Create(wxWindow *parent, wxWindowID id,
 
 198                 const wxColour& col = *wxBLACK,
 
 199                 const wxPoint& pos = wxDefaultPosition,
 
 200                 const wxSize& size = wxDefaultSize,
 
 201                 long style = wxCLRP_DEFAULT_STYLE,
 
 202                 const wxValidator& validator = wxDefaultValidator,
 
 203                 const wxString& name = wxPyColourPickerCtrlNameStr);
 
 207         wxColour , GetColour() const,
 
 208         "Returns the currently selected colour.", "");
 
 212         void , SetColour(const wxColour& col),
 
 213         "Set the displayed colour.", "");
 
 215     %property(Colour, GetColour, SetColour, doc="See `GetColour` and `SetColour`");
 
 220 %constant wxEventType wxEVT_COMMAND_COLOURPICKER_CHANGED;
 
 222     EVT_COLOURPICKER_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_COLOURPICKER_CHANGED, 1 )
 
 225 class wxColourPickerEvent : public wxCommandEvent
 
 228     wxColourPickerEvent(wxObject *generator, int id, const wxColour &col);
 
 230     wxColour GetColour() const;
 
 231     void SetColour(const wxColour &c);
 
 233     %property(Colour, GetColour, SetColour, doc="See `GetColour` and `SetColour`");
 
 237 //---------------------------------------------------------------------------
 
 240 MAKE_CONST_WXSTRING(FilePickerCtrlNameStr);
 
 241 MAKE_CONST_WXSTRING(FileSelectorPromptStr);
 
 242 MAKE_CONST_WXSTRING(DirPickerCtrlNameStr);
 
 243 MAKE_CONST_WXSTRING(DirSelectorPromptStr);
 
 244 MAKE_CONST_WXSTRING(FileSelectorDefaultWildcardStr);
 
 250     wxFLP_OVERWRITE_PROMPT,
 
 251     wxFLP_FILE_MUST_EXIST,
 
 253     wxDIRP_DIR_MUST_EXIST,
 
 260     wxDIRP_DEFAULT_STYLE,
 
 265 MustHaveApp(wxFilePickerCtrl);
 
 266 DocStr(wxFilePickerCtrl,
 
 269 class wxFilePickerCtrl : public wxPickerBase
 
 272     %pythonAppend wxFilePickerCtrl      "self._setOORInfo(self)"
 
 273     %pythonAppend wxFilePickerCtrl()    ""
 
 275     wxFilePickerCtrl(wxWindow *parent,
 
 277                      const wxString& path = wxPyEmptyString,
 
 278                      const wxString& message = wxPyFileSelectorPromptStr,
 
 279                      const wxString& wildcard = wxPyFileSelectorDefaultWildcardStr,
 
 280                      const wxPoint& pos = wxDefaultPosition,
 
 281                      const wxSize& size = wxDefaultSize,
 
 282                      long style = wxFLP_DEFAULT_STYLE,
 
 283                      const wxValidator& validator = wxDefaultValidator,
 
 284                      const wxString& name = wxPyFilePickerCtrlNameStr);
 
 285     %RenameCtor(PreFilePickerCtrl, wxFilePickerCtrl());
 
 287     bool Create(wxWindow *parent,
 
 289                 const wxString& path = wxPyEmptyString,
 
 290                 const wxString& message = wxPyFileSelectorPromptStr,
 
 291                 const wxString& wildcard = wxPyFileSelectorDefaultWildcardStr,
 
 292                 const wxPoint& pos = wxDefaultPosition,
 
 293                 const wxSize& size = wxDefaultSize,
 
 294                 long style = wxFLP_DEFAULT_STYLE,
 
 295                 const wxValidator& validator = wxDefaultValidator,
 
 296                 const wxString& name = wxPyFilePickerCtrlNameStr);
 
 298     wxString GetPath() const;
 
 299     void SetPath(const wxString &str);
 
 301     // return true if the given path is valid for this control
 
 302     bool CheckPath(const wxString& path) const;
 
 304     // Returns the filtered value currently placed in the text control (if present).
 
 305     wxString GetTextCtrlValue() const;
 
 307     %property(Path, GetPath, SetPath, doc="See `GetPath` and `SetPath`");
 
 308     %property(TextCtrlValue, GetTextCtrlValue, doc="See `GetTextCtrlValue`");
 
 314 MustHaveApp(wxDirPickerCtrl);
 
 315 DocStr(wxDirPickerCtrl,
 
 318 class wxDirPickerCtrl : public wxPickerBase
 
 321     %pythonAppend wxDirPickerCtrl      "self._setOORInfo(self)"
 
 322     %pythonAppend wxDirPickerCtrl()    ""
 
 324     wxDirPickerCtrl(wxWindow *parent, wxWindowID id=-1,
 
 325                     const wxString& path = wxPyEmptyString,
 
 326                     const wxString& message = wxPyDirSelectorPromptStr,
 
 327                     const wxPoint& pos = wxDefaultPosition,
 
 328                     const wxSize& size = wxDefaultSize,
 
 329                     long style = wxDIRP_DEFAULT_STYLE,
 
 330                     const wxValidator& validator = wxDefaultValidator,
 
 331                     const wxString& name = wxPyDirPickerCtrlNameStr);
 
 332     %RenameCtor(PreDirPickerCtrl, wxDirPickerCtrl());
 
 334     bool Create(wxWindow *parent, wxWindowID id=-1,
 
 335                 const wxString& path = wxPyEmptyString,
 
 336                 const wxString& message = wxPyDirSelectorPromptStr,
 
 337                 const wxPoint& pos = wxDefaultPosition,
 
 338                 const wxSize& size = wxDefaultSize,
 
 339                 long style = wxDIRP_DEFAULT_STYLE,
 
 340                 const wxValidator& validator = wxDefaultValidator,
 
 341                 const wxString& name = wxPyDirPickerCtrlNameStr);
 
 343     wxString GetPath() const;
 
 344     void SetPath(const wxString &str);
 
 346     // return true if the given path is valid for this control
 
 347     bool CheckPath(const wxString& path) const;
 
 349     // Returns the filtered value currently placed in the text control (if present).
 
 350     wxString GetTextCtrlValue() const;
 
 352     %property(Path, GetPath, SetPath, doc="See `GetPath` and `SetPath`");
 
 353     %property(TextCtrlValue, GetTextCtrlValue, doc="See `GetTextCtrlValue`");
 
 358 %constant wxEventType wxEVT_COMMAND_FILEPICKER_CHANGED;
 
 359 %constant wxEventType wxEVT_COMMAND_DIRPICKER_CHANGED;
 
 362 EVT_FILEPICKER_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_FILEPICKER_CHANGED, 1 )
 
 363 EVT_DIRPICKER_CHANGED  = wx.PyEventBinder( wxEVT_COMMAND_DIRPICKER_CHANGED,  1 )
 
 366 class wxFileDirPickerEvent : public wxCommandEvent
 
 369     wxFileDirPickerEvent(wxEventType type, wxObject *generator, int id, const wxString &path);
 
 371     wxString GetPath() const { return m_path; }
 
 372     void SetPath(const wxString &p) { m_path = p; }
 
 374     %property(Path, GetPath, SetPath, doc="See `GetPath` and `SetPath`");
 
 378 //---------------------------------------------------------------------------
 
 381 MAKE_CONST_WXSTRING(FontPickerCtrlNameStr);
 
 384     wxFNTP_FONTDESC_AS_LABEL,
 
 385     wxFNTP_USEFONT_FOR_LABEL,
 
 387     wxFNTP_DEFAULT_STYLE,
 
 391 MustHaveApp(wxFontPickerCtrl);
 
 392 DocStr(wxFontPickerCtrl,
 
 396 class wxFontPickerCtrl : public wxPickerBase
 
 399     %pythonAppend wxFontPickerCtrl      "self._setOORInfo(self)"
 
 400     %pythonAppend wxFontPickerCtrl()    ""
 
 403     wxFontPickerCtrl(wxWindow *parent,
 
 405                      const wxFont& initial = wxNullFont,
 
 406                      const wxPoint& pos = wxDefaultPosition,
 
 407                      const wxSize& size = wxDefaultSize,
 
 408                      long style = wxFNTP_DEFAULT_STYLE,
 
 409                      const wxValidator& validator = wxDefaultValidator,
 
 410                      const wxString& name = wxPyFontPickerCtrlNameStr);
 
 411     %RenameCtor(PreFontPickerCtrl, wxFontPickerCtrl());
 
 413     bool Create(wxWindow *parent,
 
 415                 const wxFont& initial = wxNullFont,
 
 416                 const wxPoint& pos = wxDefaultPosition,
 
 417                 const wxSize& size = wxDefaultSize,
 
 418                 long style = wxFNTP_DEFAULT_STYLE,
 
 419                 const wxValidator& validator = wxDefaultValidator,
 
 420                 const wxString& name = wxPyFontPickerCtrlNameStr);
 
 423     // get the font chosen
 
 424     wxFont GetSelectedFont() const;
 
 426     // sets currently displayed font
 
 427     void SetSelectedFont(const wxFont& f);
 
 429     // set/get the max pointsize
 
 430     void SetMaxPointSize(unsigned int max);
 
 431     unsigned int GetMaxPointSize() const;
 
 433     %property(MaxPointSize, GetMaxPointSize, SetMaxPointSize, doc="See `GetMaxPointSize` and `SetMaxPointSize`");
 
 434     %property(SelectedFont, GetSelectedFont, SetSelectedFont, doc="See `GetSelectedFont` and `SetSelectedFont`");
 
 438 %constant wxEventType wxEVT_COMMAND_FONTPICKER_CHANGED;
 
 441 EVT_FONTPICKER_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_FONTPICKER_CHANGED, 1 )
 
 445 class wxFontPickerEvent : public wxCommandEvent
 
 448     wxFontPickerEvent(wxObject *generator, int id, const wxFont &f);
 
 450     wxFont GetFont() const;
 
 451     void SetFont(const wxFont &c);
 
 453     %property(Font, GetFont, SetFont, doc="See `GetFont` and `SetFont`");
 
 456 //---------------------------------------------------------------------------