1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface defs for wxStatusBar
 
   7 // Created:     24-Aug-1998
 
   9 // Copyright:   (c) 2003 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  16 //---------------------------------------------------------------------------
 
  18 MAKE_CONST_WXSTRING_NOSWIG(ToolBarNameStr);
 
  21 //---------------------------------------------------------------------------
 
  27 enum wxToolBarToolStyle
 
  29     wxTOOL_STYLE_BUTTON    = 1,
 
  30     wxTOOL_STYLE_SEPARATOR = 2,
 
  56 // wxToolBarTool is a toolbar element.
 
  58 // It has a unique id (except for the separators which always have id -1), the
 
  59 // style (telling whether it is a normal button, separator or a control), the
 
  60 // state (toggled or not, enabled or not) and short and long help strings. The
 
  61 // default implementations use the short help string for the tooltip text which
 
  62 // is popped up when the mouse pointer enters the tool and the long help string
 
  63 // for the applications status bar.
 
  64 class wxToolBarToolBase : public wxObject {
 
  66 //      wxToolBarToolBase(wxToolBarBase *tbar = (wxToolBarBase *)NULL,
 
  67 //                        int id = wxID_SEPARATOR,
 
  68 //                        const wxString& label = wxPyEmptyString,
 
  69 //                        const wxBitmap& bmpNormal = wxNullBitmap,
 
  70 //                        const wxBitmap& bmpDisabled = wxNullBitmap,
 
  71 //                        wxItemKind kind = wxITEM_NORMAL,
 
  72 //                        wxObject *clientData = (wxObject *) NULL,
 
  73 //                        const wxString& shortHelpString = wxPyEmptyString,
 
  74 //                        const wxString& longHelpString = wxPyEmptyString)
 
  75 //      ~wxToolBarToolBase();
 
  78     wxControl *GetControl();
 
  79     wxToolBarBase *GetToolBar();
 
  88     const wxBitmap& GetNormalBitmap();
 
  89     const wxBitmap& GetDisabledBitmap();
 
  92     wxString GetShortHelp();
 
  93     wxString GetLongHelp();
 
  94     bool Enable(bool enable);
 
  96     bool SetToggle(bool toggle);
 
  97     bool SetShortHelp(const wxString& help);
 
  98     bool SetLongHelp(const wxString& help);
 
  99     void SetNormalBitmap(const wxBitmap& bmp);
 
 100     void SetDisabledBitmap(const wxBitmap& bmp);
 
 101     void SetLabel(const wxString& label);
 
 103     void Attach(wxToolBarBase *tbar);
 
 105     //wxObject *GetClientData();
 
 107         // convert the ClientData back to a PyObject
 
 108         PyObject* GetClientData() {
 
 109             wxPyUserData* udata = (wxPyUserData*)self->GetClientData();
 
 111                 Py_INCREF(udata->m_obj);
 
 119         void SetClientData(PyObject* clientData) {
 
 120             self->SetClientData(new wxPyUserData(clientData));
 
 125     GetBitmap1 = GetNormalBitmap
 
 126     GetBitmap2 = GetDisabledBitmap
 
 127     SetBitmap1 = SetNormalBitmap
 
 128     SetBitmap2 = SetDisabledBitmap
 
 131     %property(Bitmap, GetBitmap, doc="See `GetBitmap`");
 
 132     %property(ClientData, GetClientData, SetClientData, doc="See `GetClientData` and `SetClientData`");
 
 133     %property(Control, GetControl, doc="See `GetControl`");
 
 134     %property(DisabledBitmap, GetDisabledBitmap, SetDisabledBitmap, doc="See `GetDisabledBitmap` and `SetDisabledBitmap`");
 
 135     %property(Id, GetId, doc="See `GetId`");
 
 136     %property(Kind, GetKind, doc="See `GetKind`");
 
 137     %property(Label, GetLabel, SetLabel, doc="See `GetLabel` and `SetLabel`");
 
 138     %property(LongHelp, GetLongHelp, SetLongHelp, doc="See `GetLongHelp` and `SetLongHelp`");
 
 139     %property(NormalBitmap, GetNormalBitmap, SetNormalBitmap, doc="See `GetNormalBitmap` and `SetNormalBitmap`");
 
 140     %property(ShortHelp, GetShortHelp, SetShortHelp, doc="See `GetShortHelp` and `SetShortHelp`");
 
 141     %property(Style, GetStyle, doc="See `GetStyle`");
 
 142     %property(ToolBar, GetToolBar, doc="See `GetToolBar`");
 
 148 class wxToolBarBase : public wxControl {
 
 151     // This is an Abstract Base Class
 
 155         // The full AddTool() function.  Call it DoAddTool in wxPython and
 
 156         // implement the other Add methods by calling it.
 
 158         // If bmpDisabled is wxNullBitmap, a shadowed version of the normal bitmap
 
 159         // is created and used as the disabled image.
 
 160         wxToolBarToolBase *DoAddTool(int id,
 
 161                                      const wxString& label,
 
 162                                      const wxBitmap& bitmap,
 
 163                                      const wxBitmap& bmpDisabled = wxNullBitmap,
 
 164                                      wxItemKind kind = wxITEM_NORMAL,
 
 165                                      const wxString& shortHelp = wxPyEmptyString,
 
 166                                      const wxString& longHelp = wxPyEmptyString,
 
 167                                      PyObject *clientData = NULL)
 
 169             wxPyUserData* udata = NULL;
 
 170             if (clientData && clientData != Py_None)
 
 171                 udata = new wxPyUserData(clientData);
 
 172             return self->AddTool(id, label, bitmap, bmpDisabled, kind,
 
 173                                  shortHelp, longHelp, udata);
 
 177         // Insert the new tool at the given position, if pos == GetToolsCount(), it
 
 178         // is equivalent to DoAddTool()
 
 179         wxToolBarToolBase *DoInsertTool(size_t pos,
 
 181                                       const wxString& label,
 
 182                                       const wxBitmap& bitmap,
 
 183                                       const wxBitmap& bmpDisabled = wxNullBitmap,
 
 184                                       wxItemKind kind = wxITEM_NORMAL,
 
 185                                       const wxString& shortHelp = wxPyEmptyString,
 
 186                                       const wxString& longHelp = wxPyEmptyString,
 
 187                                       PyObject *clientData = NULL)
 
 189             wxPyUserData* udata = NULL;
 
 190             if (clientData && clientData != Py_None)
 
 191                 udata = new wxPyUserData(clientData);
 
 192             return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind,
 
 193                                     shortHelp, longHelp, udata);
 
 200     %# These match the original Add methods for this class, kept for
 
 201     %# backwards compatibility with versions < 2.3.3.
 
 204     def AddTool(self, id, bitmap,
 
 205                 pushedBitmap = wx.NullBitmap,
 
 208                 shortHelpString = '',
 
 209                 longHelpString = '') :
 
 210         '''Old style method to add a tool to the toolbar.'''
 
 211         kind = wx.ITEM_NORMAL
 
 212         if isToggle: kind = wx.ITEM_CHECK
 
 213         return self.DoAddTool(id, '', bitmap, pushedBitmap, kind,
 
 214                               shortHelpString, longHelpString, clientData)
 
 216     def AddSimpleTool(self, id, bitmap,
 
 217                       shortHelpString = '',
 
 220         '''Old style method to add a tool to the toolbar.'''
 
 221         kind = wx.ITEM_NORMAL
 
 222         if isToggle: kind = wx.ITEM_CHECK
 
 223         return self.DoAddTool(id, '', bitmap, wx.NullBitmap, kind,
 
 224                               shortHelpString, longHelpString, None)
 
 226     def InsertTool(self, pos, id, bitmap,
 
 227                    pushedBitmap = wx.NullBitmap,
 
 230                    shortHelpString = '',
 
 231                    longHelpString = ''):
 
 232         '''Old style method to insert a tool in the toolbar.'''
 
 233         kind = wx.ITEM_NORMAL
 
 234         if isToggle: kind = wx.ITEM_CHECK
 
 235         return self.DoInsertTool(pos, id, '', bitmap, pushedBitmap, kind,
 
 236                                  shortHelpString, longHelpString, clientData)
 
 238     def InsertSimpleTool(self, pos, id, bitmap,
 
 239                          shortHelpString = '',
 
 242         '''Old style method to insert a tool in the toolbar.'''
 
 243         kind = wx.ITEM_NORMAL
 
 244         if isToggle: kind = wx.ITEM_CHECK
 
 245         return self.DoInsertTool(pos, id, '', bitmap, wx.NullBitmap, kind,
 
 246                                  shortHelpString, longHelpString, None)
 
 249     %# The following are the new toolbar Add methods starting with
 
 250     %# 2.3.3.  They are renamed to have 'Label' in the name so as to be
 
 251     %# able to keep backwards compatibility with using the above
 
 252     %# methods.  Eventually these should migrate to be the methods used
 
 253     %# primarily and lose the 'Label' in the name...
 
 255     def AddLabelTool(self, id, label, bitmap,
 
 256                      bmpDisabled = wx.NullBitmap,
 
 257                      kind = wx.ITEM_NORMAL,
 
 258                      shortHelp = '', longHelp = '',
 
 261         The full AddTool() function.
 
 263         If bmpDisabled is wx.NullBitmap, a shadowed version of the normal bitmap
 
 264         is created and used as the disabled image.
 
 266         return self.DoAddTool(id, label, bitmap, bmpDisabled, kind,
 
 267                               shortHelp, longHelp, clientData)
 
 270     def InsertLabelTool(self, pos, id, label, bitmap,
 
 271                         bmpDisabled = wx.NullBitmap,
 
 272                         kind = wx.ITEM_NORMAL,
 
 273                         shortHelp = '', longHelp = '',
 
 276         Insert the new tool at the given position, if pos == GetToolsCount(), it
 
 277         is equivalent to AddTool()
 
 279         return self.DoInsertTool(pos, id, label, bitmap, bmpDisabled, kind,
 
 280                                  shortHelp, longHelp, clientData)
 
 282     def AddCheckLabelTool(self, id, label, bitmap,
 
 283                         bmpDisabled = wx.NullBitmap,
 
 284                         shortHelp = '', longHelp = '',
 
 286         '''Add a check tool, i.e. a tool which can be toggled'''
 
 287         return self.DoAddTool(id, label, bitmap, bmpDisabled, wx.ITEM_CHECK,
 
 288                               shortHelp, longHelp, clientData)
 
 290     def AddRadioLabelTool(self, id, label, bitmap,
 
 291                           bmpDisabled = wx.NullBitmap,
 
 292                           shortHelp = '', longHelp = '',
 
 295         Add a radio tool, i.e. a tool which can be toggled and releases any
 
 296         other toggled radio tools in the same group when it happens
 
 298         return self.DoAddTool(id, label, bitmap, bmpDisabled, wx.ITEM_RADIO,
 
 299                               shortHelp, longHelp, clientData)
 
 302     %# For consistency with the backwards compatible methods above, here are
 
 303     %# some non-'Label' versions of the Check and Radio methods
 
 305     def AddCheckTool(self, id, bitmap,
 
 306                      bmpDisabled = wx.NullBitmap,
 
 307                      shortHelp = '', longHelp = '',
 
 309         '''Add a check tool, i.e. a tool which can be toggled'''
 
 310         return self.DoAddTool(id, '', bitmap, bmpDisabled, wx.ITEM_CHECK,
 
 311                               shortHelp, longHelp, clientData)
 
 313     def AddRadioTool(self, id, bitmap,
 
 314                      bmpDisabled = wx.NullBitmap,
 
 315                      shortHelp = '', longHelp = '',
 
 318         Add a radio tool, i.e. a tool which can be toggled and releases any
 
 319         other toggled radio tools in the same group when it happens
 
 321         return self.DoAddTool(id, '', bitmap, bmpDisabled, wx.ITEM_RADIO,
 
 322                               shortHelp, longHelp, clientData)
 
 325     %Rename(AddToolItem,  wxToolBarToolBase*, AddTool (wxToolBarToolBase *tool));
 
 326     %Rename(InsertToolItem,  wxToolBarToolBase*, InsertTool (size_t pos, wxToolBarToolBase *tool));
 
 328     wxToolBarToolBase *AddControl(wxControl *control,
 
 329                                   const wxString& label = wxEmptyString);
 
 330     wxToolBarToolBase *InsertControl(size_t pos, wxControl *control,
 
 331                                      const wxString& label = wxEmptyString);
 
 332     wxControl *FindControl( int id );
 
 334     wxToolBarToolBase *AddSeparator();
 
 335     wxToolBarToolBase *InsertSeparator(size_t pos);
 
 337     wxToolBarToolBase *RemoveTool(int id);
 
 339     bool DeleteToolByPos(size_t pos);
 
 340     bool DeleteTool(int id);
 
 344     void EnableTool(int id, bool enable);
 
 345     void ToggleTool(int id, bool toggle);
 
 346     void SetToggle(int id, bool toggle);
 
 350         // convert the ClientData back to a PyObject
 
 351         PyObject* GetToolClientData(int id) {
 
 352             wxPyUserData* udata = (wxPyUserData*)self->GetToolClientData(id);
 
 354                 Py_INCREF(udata->m_obj);
 
 362         void SetToolClientData(int id, PyObject* clientData) {
 
 363             self->SetToolClientData(id, new wxPyUserData(clientData));
 
 367     // returns tool pos, or wxNOT_FOUND if tool isn't found
 
 368     int GetToolPos(int id) const;
 
 370     bool GetToolState(int id);
 
 371     bool GetToolEnabled(int id);
 
 372     void SetToolShortHelp(int id, const wxString& helpString);
 
 373     wxString GetToolShortHelp(int id);
 
 374     void SetToolLongHelp(int id, const wxString& helpString);
 
 375     wxString GetToolLongHelp(int id);
 
 377     %Rename(SetMarginsXY,  void, SetMargins(int x, int y));
 
 378     void SetMargins(const wxSize& size);
 
 379     void SetToolPacking(int packing);
 
 380     void SetToolSeparation(int separation);
 
 381     wxSize GetToolMargins();
 
 383     int GetToolPacking();
 
 384     int GetToolSeparation();
 
 386     void SetRows(int nRows);
 
 387     void SetMaxRowsCols(int rows, int cols);
 
 391     void SetToolBitmapSize(const wxSize& size);
 
 392     wxSize GetToolBitmapSize();
 
 393     wxSize GetToolSize();
 
 395     // returns a (non separator) tool containing the point (x, y) or NULL if
 
 396     // there is no tool at this point (corrdinates are client)
 
 397     wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
 
 399     // find the tool by id
 
 400     wxToolBarToolBase *FindById(int toolid) const;
 
 402     // return True if this is a vertical toolbar, otherwise False
 
 405     size_t GetToolsCount() const;
 
 407     %property(Margins, GetMargins, SetMargins, doc="See `GetMargins` and `SetMargins`");
 
 408     %property(MaxCols, GetMaxCols, doc="See `GetMaxCols`");
 
 409     %property(MaxRows, GetMaxRows, doc="See `GetMaxRows`");
 
 410     %property(ToolBitmapSize, GetToolBitmapSize, SetToolBitmapSize, doc="See `GetToolBitmapSize` and `SetToolBitmapSize`");
 
 411     %property(ToolMargins, GetToolMargins, doc="See `GetToolMargins`");
 
 412     %property(ToolPacking, GetToolPacking, SetToolPacking, doc="See `GetToolPacking` and `SetToolPacking`");
 
 413     %property(ToolSeparation, GetToolSeparation, SetToolSeparation, doc="See `GetToolSeparation` and `SetToolSeparation`");
 
 414     %property(ToolSize, GetToolSize, doc="See `GetToolSize`");
 
 415     %property(ToolsCount, GetToolsCount, doc="See `GetToolsCount`");
 
 421 MustHaveApp(wxToolBar);
 
 423 class wxToolBar : public wxToolBarBase {
 
 425     %pythonAppend wxToolBar         "self._setOORInfo(self)"
 
 426     %pythonAppend wxToolBar()       ""
 
 427     %typemap(out) wxToolBar*;    // turn off this typemap
 
 429     wxToolBar(wxWindow *parent,
 
 431               const wxPoint& pos = wxDefaultPosition,
 
 432               const wxSize& size = wxDefaultSize,
 
 433               long style = wxNO_BORDER | wxTB_HORIZONTAL,
 
 434               const wxString& name = wxPyToolBarNameStr);
 
 435     %RenameCtor(PreToolBar, wxToolBar());
 
 437     // Turn it back on again
 
 438     %typemap(out) wxToolBar* { $result = wxPyMake_wxObject($1, $owner); }
 
 440     bool Create(wxWindow *parent,
 
 442               const wxPoint& pos = wxDefaultPosition,
 
 443               const wxSize& size = wxDefaultSize,
 
 444               long style = wxNO_BORDER | wxTB_HORIZONTAL,
 
 445               const wxString& name = wxPyToolBarNameStr);
 
 447     // TODO: In 2.9 move these to the base class...
 
 448     void SetToolNormalBitmap(int id, const wxBitmap& bitmap);
 
 449     void SetToolDisabledBitmap(int id, const wxBitmap& bitmap);
 
 451     static wxVisualAttributes
 
 452     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
 455 //---------------------------------------------------------------------------
 
 459 #include <wx/generic/buttonbar.h>
 
 462 MustHaveApp(wxToolBar);
 
 463 class  wxButtonToolBar : public wxToolBarBase
 
 466     %pythonAppend wxButtonToolBar         "self._setOORInfo(self)"
 
 467     %pythonAppend wxButtonToolBar()       ""
 
 469     wxButtonToolBar(wxWindow *parent,
 
 471                     const wxPoint& pos = wxDefaultPosition,
 
 472                     const wxSize& size = wxDefaultSize,
 
 474                     const wxString& name = wxPyToolBarNameStr);
 
 475     %RenameCtor(PreButtonToolBar, wxButtonToolBar());
 
 478     bool Create(wxWindow *parent,
 
 480               const wxPoint& pos = wxDefaultPosition,
 
 481               const wxSize& size = wxDefaultSize,
 
 483               const wxString& name = wxPyToolBarNameStr);
 
 487 //---------------------------------------------------------------------------