1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG definitions for StatusBar and ToolBar classes
 
   9 // Copyright:   (c) 1998 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  18 #include <wx/toolbar.h>
 
  19 #include <wx/tbarsmpl.h>
 
  22 //----------------------------------------------------------------------
 
  25 %include my_typemaps.i
 
  27 // Import some definitions of other classes, etc.
 
  33 %pragma(python) code = "import wx"
 
  34 %pragma(python) code = "wxITEM_NORMAL = 0 # predeclare this since wx isn't fully imported yet"
 
  36 //----------------------------------------------------------------------
 
  39     // Put some wx default wxChar* values into wxStrings.
 
  40     DECLARE_DEF_STRING(StatusLineNameStr);
 
  41     DECLARE_DEF_STRING(ToolBarNameStr);
 
  42     static const wxString wxPyEmptyString(wxT(""));
 
  45 //---------------------------------------------------------------------------
 
  47 class wxStatusBar : public wxWindow {
 
  49     wxStatusBar(wxWindow* parent, wxWindowID id = -1,
 
  50                 long style = wxST_SIZEGRIP,
 
  51                 const wxString& name = wxPyStatusLineNameStr);
 
  52     %name(wxPreStatusBar)wxStatusBar();
 
  54     bool Create(wxWindow* parent, wxWindowID id,
 
  55                 long style = wxST_SIZEGRIP,
 
  56                 const wxString& name = wxPyStatusLineNameStr);
 
  58     %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
 
  59     %pragma(python) addtomethod = "wxPreStatusBar:val._setOORInfo(val)"
 
  62         %new wxRect* GetFieldRect(long item) {
 
  63             wxRect* rect= new wxRect;
 
  64             self->GetFieldRect(item, *rect);
 
  68     int GetFieldsCount(void);
 
  69     wxString GetStatusText(int ir = 0);
 
  73     void SetFieldsCount(int number = 1);
 
  74     void SetStatusText(const wxString& text, int i = 0);
 
  75     void SetStatusWidths(int LCOUNT, int* choices);
 
  76     void PushStatusText(const wxString& text, int number = 0);
 
  77     void PopStatusText(int number = 0);
 
  79     void SetMinHeight(int height);
 
  83 //---------------------------------------------------------------------------
 
  87 enum wxToolBarToolStyle
 
  89     wxTOOL_STYLE_BUTTON    = 1,
 
  90     wxTOOL_STYLE_SEPARATOR = 2,
 
 110 class wxToolBarToolBase : public wxObject {
 
 112 //      wxToolBarToolBase(wxToolBarBase *tbar = (wxToolBarBase *)NULL,
 
 113 //                        int id = wxID_SEPARATOR,
 
 114 //                        const wxString& label = wxEmptyString,
 
 115 //                        const wxBitmap& bmpNormal = wxNullBitmap,
 
 116 //                        const wxBitmap& bmpDisabled = wxNullBitmap,
 
 117 //                        wxItemKind kind = wxITEM_NORMAL,
 
 118 //                        wxObject *clientData = (wxObject *) NULL,
 
 119 //                        const wxString& shortHelpString = wxEmptyString,
 
 120 //                        const wxString& longHelpString = wxEmptyString)
 
 121 //      ~wxToolBarToolBase();
 
 123     %addmethods { void Destroy() { delete self; } }
 
 126     wxControl *GetControl();
 
 127     wxToolBarBase *GetToolBar();
 
 132     wxItemKind GetKind();
 
 136     const wxBitmap& GetNormalBitmap();
 
 137     const wxBitmap& GetDisabledBitmap();
 
 138     wxBitmap GetBitmap();
 
 140     wxString GetShortHelp();
 
 141     wxString GetLongHelp();
 
 142     bool Enable(bool enable);
 
 144     bool SetToggle(bool toggle);
 
 145     bool SetShortHelp(const wxString& help);
 
 146     bool SetLongHelp(const wxString& help);
 
 147     void SetNormalBitmap(const wxBitmap& bmp);
 
 148     void SetDisabledBitmap(const wxBitmap& bmp);
 
 149     void SetLabel(const wxString& label);
 
 151     void Attach(wxToolBarBase *tbar);
 
 153     //wxObject *GetClientData();
 
 155         // convert the ClientData back to a PyObject
 
 156         PyObject* GetClientData() {
 
 157             wxPyUserData* udata = (wxPyUserData*)self->GetClientData();
 
 159                 Py_INCREF(udata->m_obj);
 
 167         void SetClientData(PyObject* clientData) {
 
 168             self->SetClientData(new wxPyUserData(clientData));
 
 172     %pragma(python) addtoclass="
 
 173     GetBitmap1 = GetNormalBitmap
 
 174     GetBitmap2 = GetDisabledBitmap
 
 175     SetBitmap1 = SetNormalBitmap
 
 176     SetBitmap2 = SetDisabledBitmap
 
 182 class wxToolBarBase : public wxControl {
 
 185     // This is an Abstract Base Class
 
 189         // The full AddTool() function.  Call it DoAddTool in wxPython and
 
 190         // implement the other Add methods by calling it.
 
 192         // If bmpDisabled is wxNullBitmap, a shadowed version of the normal bitmap
 
 193         // is created and used as the disabled image.
 
 194         wxToolBarToolBase *DoAddTool(int id,
 
 195                                      const wxString& label,
 
 196                                      const wxBitmap& bitmap,
 
 197                                      const wxBitmap& bmpDisabled = wxNullBitmap,
 
 198                                      wxItemKind kind = wxITEM_NORMAL,
 
 199                                      const wxString& shortHelp = wxPyEmptyString,
 
 200                                      const wxString& longHelp = wxPyEmptyString,
 
 201                                      PyObject *clientData = NULL)
 
 203             wxPyUserData* udata = NULL;
 
 204             if (clientData && clientData != Py_None)
 
 205                 udata = new wxPyUserData(clientData);
 
 206             return self->AddTool(id, label, bitmap, bmpDisabled, kind,
 
 207                                  shortHelp, longHelp, udata);
 
 211         // Insert the new tool at the given position, if pos == GetToolsCount(), it
 
 212         // is equivalent to DoAddTool()
 
 213         wxToolBarToolBase *DoInsertTool(size_t pos,
 
 215                                       const wxString& label,
 
 216                                       const wxBitmap& bitmap,
 
 217                                       const wxBitmap& bmpDisabled = wxNullBitmap,
 
 218                                       wxItemKind kind = wxITEM_NORMAL,
 
 219                                       const wxString& shortHelp = wxPyEmptyString,
 
 220                                       const wxString& longHelp = wxPyEmptyString,
 
 221                                       PyObject *clientData = NULL)
 
 223             wxPyUserData* udata = NULL;
 
 224             if (clientData && clientData != Py_None)
 
 225                 udata = new wxPyUserData(clientData);
 
 226             return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind,
 
 227                                     shortHelp, longHelp, udata);
 
 233     %pragma(python) addtoclass = "
 
 234     # These match the original Add methods for this class, kept for
 
 235     # backwards compatibility with versions < 2.3.3.
 
 238     def AddTool(self, id, bitmap,
 
 239                 pushedBitmap = wxNullBitmap,
 
 242                 shortHelpString = '',
 
 243                 longHelpString = '') :
 
 244         '''Old style method to add a tool to the toolbar.'''
 
 245         kind = wx.wxITEM_NORMAL
 
 246         if isToggle: kind = wx.wxITEM_CHECK
 
 247         return self.DoAddTool(id, '', bitmap, pushedBitmap, kind,
 
 248                               shortHelpString, longHelpString, clientData)
 
 250     def AddSimpleTool(self, id, bitmap,
 
 251                       shortHelpString = '',
 
 254         '''Old style method to add a tool to the toolbar.'''
 
 255         kind = wx.wxITEM_NORMAL
 
 256         if isToggle: kind = wx.wxITEM_CHECK
 
 257         return self.DoAddTool(id, '', bitmap, wxNullBitmap, kind,
 
 258                               shortHelpString, longHelpString, None)
 
 260     def InsertTool(self, pos, id, bitmap,
 
 261                    pushedBitmap = wxNullBitmap,
 
 264                    shortHelpString = '',
 
 265                    longHelpString = ''):
 
 266         '''Old style method to insert a tool in the toolbar.'''
 
 267         kind = wx.wxITEM_NORMAL
 
 268         if isToggle: kind = wx.wxITEM_CHECK
 
 269         return self.DoInsertTool(pos, id, '', bitmap, pushedBitmap, kind,
 
 270                                  shortHelpString, longHelpString, clientData)
 
 272     def InsertSimpleTool(self, pos, id, bitmap,
 
 273                          shortHelpString = '',
 
 276         '''Old style method to insert a tool in the toolbar.'''
 
 277         kind = wx.wxITEM_NORMAL
 
 278         if isToggle: kind = wx.wxITEM_CHECK
 
 279         return self.DoInsertTool(pos, id, '', bitmap, wxNullBitmap, kind,
 
 280                                  shortHelpString, longHelpString, None)
 
 283     # The following are the new toolbar Add methods starting with
 
 284     # 2.3.3.  They are renamed to have 'Label' in the name so as to be
 
 285     # able to keep backwards compatibility with using the above
 
 286     # methods.  Eventually these should migrate to be the methods used
 
 287     # primarily and lose the 'Label' in the name...
 
 289     def AddLabelTool(self, id, label, bitmap,
 
 290                      bmpDisabled = wxNullBitmap,
 
 291                      kind = wxITEM_NORMAL,
 
 292                      shortHelp = '', longHelp = '',
 
 295         The full AddTool() function.
 
 297         If bmpDisabled is wxNullBitmap, a shadowed version of the normal bitmap
 
 298         is created and used as the disabled image.
 
 300         return self.DoAddTool(id, label, bitmap, bmpDisabled, kind,
 
 301                               shortHelp, longHelp, clientData)
 
 304     def InsertLabelTool(self, pos, id, label, bitmap,
 
 305                         bmpDisabled = wxNullBitmap,
 
 306                         kind = wxITEM_NORMAL,
 
 307                         shortHelp = '', longHelp = '',
 
 310         Insert the new tool at the given position, if pos == GetToolsCount(), it
 
 311         is equivalent to AddTool()
 
 313         return self.DoInsertTool(pos, id, label, bitmap, bmpDisabled, kind,
 
 314                                  shortHelp, longHelp, clientData)
 
 316     def AddCheckLabelTool(self, id, label, bitmap,
 
 317                         bmpDisabled = wxNullBitmap,
 
 318                         shortHelp = '', longHelp = '',
 
 320         '''Add a check tool, i.e. a tool which can be toggled'''
 
 321         return self.DoAddTool(id, label, bitmap, bmpDisabled, wx.wxITEM_CHECK,
 
 322                               shortHelp, longHelp, clientData)
 
 324     def AddRadioLabelTool(self, id, label, bitmap,
 
 325                           bmpDisabled = wxNullBitmap,
 
 326                           shortHelp = '', longHelp = '',
 
 329         Add a radio tool, i.e. a tool which can be toggled and releases any
 
 330         other toggled radio tools in the same group when it happens
 
 332         return self.DoAddTool(id, label, bitmap, bmpDisabled, wx.wxITEM_RADIO,
 
 333                               shortHelp, longHelp, clientData)
 
 336     # For consistency with the backwards compatible methods above, here are
 
 337     # some non-'Label' versions of the Check and Radio methods
 
 338     def AddCheckTool(self, id, bitmap,
 
 339                      bmpDisabled = wxNullBitmap,
 
 340                      shortHelp = '', longHelp = '',
 
 342         '''Add a check tool, i.e. a tool which can be toggled'''
 
 343         return self.DoAddTool(id, '', bitmap, bmpDisabled, wx.wxITEM_CHECK,
 
 344                               shortHelp, longHelp, clientData)
 
 346     def AddRadioTool(self, id, bitmap,
 
 347                      bmpDisabled = wxNullBitmap,
 
 348                      shortHelp = '', longHelp = '',
 
 351         Add a radio tool, i.e. a tool which can be toggled and releases any
 
 352         other toggled radio tools in the same group when it happens
 
 354         return self.DoAddTool(id, '', bitmap, bmpDisabled, wx.wxITEM_RADIO,
 
 355                               shortHelp, longHelp, clientData)
 
 359     //wxToolBarToolBase *AddTool (wxToolBarToolBase *tool);
 
 360     //wxToolBarToolBase *InsertTool (size_t pos, wxToolBarToolBase *tool);
 
 362     wxToolBarToolBase *AddControl(wxControl *control);
 
 363     wxToolBarToolBase *InsertControl(size_t pos, wxControl *control);
 
 364     wxControl *FindControl( int id );
 
 366     wxToolBarToolBase *AddSeparator();
 
 367     wxToolBarToolBase *InsertSeparator(size_t pos);
 
 369     wxToolBarToolBase *RemoveTool(int id);
 
 371     bool DeleteToolByPos(size_t pos);
 
 372     bool DeleteTool(int id);
 
 376     void EnableTool(int id, bool enable);
 
 377     void ToggleTool(int id, bool toggle);
 
 378     void SetToggle(int id, bool toggle);
 
 382         // convert the ClientData back to a PyObject
 
 383         PyObject* GetToolClientData(int id) {
 
 384             wxPyUserData* udata = (wxPyUserData*)self->GetToolClientData(id);
 
 386                 Py_INCREF(udata->m_obj);
 
 394         void SetToolClientData(int id, PyObject* clientData) {
 
 395             self->SetToolClientData(id, new wxPyUserData(clientData));
 
 399     // returns tool pos, or wxNOT_FOUND if tool isn't found
 
 400     int GetToolPos(int id) const;
 
 402     bool GetToolState(int id);
 
 403     bool GetToolEnabled(int id);
 
 404     void SetToolShortHelp(int id, const wxString& helpString);
 
 405     wxString GetToolShortHelp(int id);
 
 406     void SetToolLongHelp(int id, const wxString& helpString);
 
 407     wxString GetToolLongHelp(int id);
 
 409     %name(SetMarginsXY) void SetMargins(int x, int y);
 
 410     void SetMargins(const wxSize& size);
 
 411     void SetToolPacking(int packing);
 
 412     void SetToolSeparation(int separation);
 
 413     wxSize GetToolMargins();
 
 415     int GetToolPacking();
 
 416     int GetToolSeparation();
 
 418     void SetRows(int nRows);
 
 419     void SetMaxRowsCols(int rows, int cols);
 
 423     void SetToolBitmapSize(const wxSize& size);
 
 424     wxSize GetToolBitmapSize();
 
 425     wxSize GetToolSize();
 
 427     // returns a (non separator) tool containing the point (x, y) or NULL if
 
 428     // there is no tool at this point (corrdinates are client)
 
 429     wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
 
 431     // return TRUE if this is a vertical toolbar, otherwise FALSE
 
 438 class wxToolBar : public wxToolBarBase {
 
 440     wxToolBar(wxWindow *parent,
 
 442               const wxPoint& pos = wxDefaultPosition,
 
 443               const wxSize& size = wxDefaultSize,
 
 444               long style = wxNO_BORDER | wxTB_HORIZONTAL,
 
 445               const wxString& name = wxPyToolBarNameStr);
 
 446     %name(wxPreToolBar)wxToolBar();
 
 448     bool Create(wxWindow *parent,
 
 450               const wxPoint& pos = wxDefaultPosition,
 
 451               const wxSize& size = wxDefaultSize,
 
 452               long style = wxNO_BORDER | wxTB_HORIZONTAL,
 
 453               const wxString& name = wxPyToolBarNameStr);
 
 455     %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
 
 456     %pragma(python) addtomethod = "wxPreToolBar:val._setOORInfo(val)"
 
 458     wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
 
 464 class wxToolBarSimple : public wxToolBarBase {
 
 466     wxToolBarSimple(wxWindow *parent,
 
 468                     const wxPoint& pos = wxDefaultPosition,
 
 469                     const wxSize& size = wxDefaultSize,
 
 470                     long style = wxNO_BORDER | wxTB_HORIZONTAL,
 
 471                     const wxString& name = wxPyToolBarNameStr);
 
 472     %name(wxPreToolBarSimple)wxToolBarSimple();
 
 474     bool Create(wxWindow *parent,
 
 476                     const wxPoint& pos = wxDefaultPosition,
 
 477                     const wxSize& size = wxDefaultSize,
 
 478                     long style = wxNO_BORDER | wxTB_HORIZONTAL,
 
 479                     const wxString& name = wxPyToolBarNameStr);
 
 481     %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
 
 482     %pragma(python) addtomethod = "wxPreToolBarSimple:val._setOORInfo(val)"
 
 484     wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
 
 487 //---------------------------------------------------------------------------
 
 488 //---------------------------------------------------------------------------