]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/stattool.i
fix text scrolling in GTK2 (patch 703988)
[wxWidgets.git] / wxPython / src / stattool.i
index 51887643c4e7dac19b83836d0b3bc6d14121f800..e8a592d9dfb7f6daa67b78cfd6cd3a995906bdf3 100644 (file)
@@ -16,7 +16,6 @@
 %{
 #include "helpers.h"
 #include <wx/toolbar.h>
-#include <wx/tbarsmpl.h>
 %}
 
 //----------------------------------------------------------------------
@@ -31,7 +30,7 @@
 %import controls.i
 
 %pragma(python) code = "import wx"
-
+%pragma(python) code = "wxITEM_NORMAL = 0 # predeclare this since wx isn't fully imported yet"
 
 //----------------------------------------------------------------------
 
@@ -73,6 +72,9 @@ public:
     void SetFieldsCount(int number = 1);
     void SetStatusText(const wxString& text, int i = 0);
     void SetStatusWidths(int LCOUNT, int* choices);
+    void PushStatusText(const wxString& text, int number = 0);
+    void PopStatusText(int number = 0);
+
     void SetMinHeight(int height);
 };
 
@@ -88,6 +90,20 @@ enum wxToolBarToolStyle
     wxTOOL_STYLE_CONTROL
 };
 
+enum {
+    wxTB_HORIZONTAL,
+    wxTB_VERTICAL,
+    wxTB_3DBUTTONS,
+    wxTB_FLAT,
+    wxTB_DOCKABLE,
+    wxTB_NOICONS,
+    wxTB_TEXT,
+    wxTB_NODIVIDER,
+    wxTB_NOALIGN,
+    wxTB_HORZ_LAYOUT,
+    wxTB_HORZ_TEXT,
+};
+
 
 
 class wxToolBarToolBase : public wxObject {
@@ -169,74 +185,31 @@ public:
 
     %addmethods {
 
-        // the full AddTool() function
+        // The full AddTool() function.  Call it DoAddTool in wxPython and
+        // implement the other Add methods by calling it.
         //
         // If bmpDisabled is wxNullBitmap, a shadowed version of the normal bitmap
         // is created and used as the disabled image.
-        wxToolBarToolBase *AddTool(int id,
-                                   const wxString& label,
-                                   const wxBitmap& bitmap,
-                                   const wxBitmap& bmpDisabled,
-                                   wxItemKind kind = wxITEM_NORMAL,
-                                   const wxString& shortHelp = wxPyEmptyString,
-                                   const wxString& longHelp = wxPyEmptyString,
-                                   PyObject *clientData = NULL)
+        wxToolBarToolBase *DoAddTool(int id,
+                                     const wxString& label,
+                                     const wxBitmap& bitmap,
+                                     const wxBitmap& bmpDisabled = wxNullBitmap,
+                                     wxItemKind kind = wxITEM_NORMAL,
+                                     const wxString& shortHelp = wxPyEmptyString,
+                                     const wxString& longHelp = wxPyEmptyString,
+                                     PyObject *clientData = NULL)
         {
             wxPyUserData* udata = NULL;
-            if (clientData)
+            if (clientData && clientData != Py_None)
                 udata = new wxPyUserData(clientData);
             return self->AddTool(id, label, bitmap, bmpDisabled, kind,
                                  shortHelp, longHelp, udata);
         }
 
-        // The most common version of AddTool
-        wxToolBarToolBase *AddSimpleTool(int id,
-                                         const wxString& label,
-                                         const wxBitmap& bitmap,
-                                         const wxString& shortHelp = wxPyEmptyString,
-                                         const wxString& longHelp = wxPyEmptyString,
-                                         wxItemKind kind = wxITEM_NORMAL)
-        {
-            return self->AddTool(id, label, bitmap, wxNullBitmap, kind,
-                                 shortHelp, longHelp, NULL);
-        }
-
-        // add a check tool, i.e. a tool which can be toggled
-        wxToolBarToolBase *AddCheckTool(int id,
-                                        const wxString& label,
-                                        const wxBitmap& bitmap,
-                                        const wxBitmap& bmpDisabled = wxNullBitmap,
-                                        const wxString& shortHelp = wxPyEmptyString,
-                                        const wxString& longHelp = wxPyEmptyString,
-                                        PyObject *clientData = NULL)
-        {
-            wxPyUserData* udata = NULL;
-            if (clientData)
-                udata = new wxPyUserData(clientData);
-            return self->AddCheckTool(id, label, bitmap, bmpDisabled,
-                                      shortHelp, longHelp, udata);
-        }
-
-        // add a radio tool, i.e. a tool which can be toggled and releases any
-        // other toggled radio tools in the same group when it happens
-        wxToolBarToolBase *AddRadioTool(int id,
-                                    const wxString& label,
-                                    const wxBitmap& bitmap,
-                                    const wxBitmap& bmpDisabled = wxNullBitmap,
-                                    const wxString& shortHelp = wxPyEmptyString,
-                                    const wxString& longHelp = wxPyEmptyString,
-                                    PyObject *clientData = NULL)
-        {
-            wxPyUserData* udata = NULL;
-            if (clientData)
-                udata = new wxPyUserData(clientData);
-            return self->AddRadioTool(id, label, bitmap, bmpDisabled,
-                                      shortHelp, longHelp, udata);
-        }
 
-        // insert the new tool at the given position, if pos == GetToolsCount(), it
-        // is equivalent to AddTool()
-        wxToolBarToolBase *InsertTool(size_t pos,
+        // Insert the new tool at the given position, if pos == GetToolsCount(), it
+        // is equivalent to DoAddTool()
+        wxToolBarToolBase *DoInsertTool(size_t pos,
                                       int id,
                                       const wxString& label,
                                       const wxBitmap& bitmap,
@@ -247,29 +220,147 @@ public:
                                       PyObject *clientData = NULL)
         {
             wxPyUserData* udata = NULL;
-            if (clientData)
+            if (clientData && clientData != Py_None)
                 udata = new wxPyUserData(clientData);
             return self->InsertTool(pos, id, label, bitmap, bmpDisabled, kind,
                                     shortHelp, longHelp, udata);
         }
 
-        // A simpler InsertTool
-        wxToolBarToolBase *InsertSimpleTool(size_t pos,
-                                      int id,
-                                      const wxString& label,
-                                      const wxBitmap& bitmap,
-                                      wxItemKind kind = wxITEM_NORMAL,
-                                      const wxString& shortHelp = wxPyEmptyString,
-                                      const wxString& longHelp = wxPyEmptyString)
-        {
-            return self->InsertTool(pos, id, label, bitmap, wxNullBitmap, kind,
-                                    shortHelp, longHelp);
-        }
     }
 
 
+    %pragma(python) addtoclass = "
+    # These match the original Add methods for this class, kept for
+    # backwards compatibility with versions < 2.3.3.
+
+
+    def AddTool(self, id, bitmap,
+                pushedBitmap = wxNullBitmap,
+                isToggle = 0,
+                clientData = None,
+                shortHelpString = '',
+                longHelpString = '') :
+        '''Old style method to add a tool to the toolbar.'''
+        kind = wx.wxITEM_NORMAL
+        if isToggle: kind = wx.wxITEM_CHECK
+        return self.DoAddTool(id, '', bitmap, pushedBitmap, kind,
+                              shortHelpString, longHelpString, clientData)
+
+    def AddSimpleTool(self, id, bitmap,
+                      shortHelpString = '',
+                      longHelpString = '',
+                      isToggle = 0):
+        '''Old style method to add a tool to the toolbar.'''
+        kind = wx.wxITEM_NORMAL
+        if isToggle: kind = wx.wxITEM_CHECK
+        return self.DoAddTool(id, '', bitmap, wxNullBitmap, kind,
+                              shortHelpString, longHelpString, None)
+
+    def InsertTool(self, pos, id, bitmap,
+                   pushedBitmap = wxNullBitmap,
+                   isToggle = 0,
+                   clientData = None,
+                   shortHelpString = '',
+                   longHelpString = ''):
+        '''Old style method to insert a tool in the toolbar.'''
+        kind = wx.wxITEM_NORMAL
+        if isToggle: kind = wx.wxITEM_CHECK
+        return self.DoInsertTool(pos, id, '', bitmap, pushedBitmap, kind,
+                                 shortHelpString, longHelpString, clientData)
+
+    def InsertSimpleTool(self, pos, id, bitmap,
+                         shortHelpString = '',
+                         longHelpString = '',
+                         isToggle = 0):
+        '''Old style method to insert a tool in the toolbar.'''
+        kind = wx.wxITEM_NORMAL
+        if isToggle: kind = wx.wxITEM_CHECK
+        return self.DoInsertTool(pos, id, '', bitmap, wxNullBitmap, kind,
+                                 shortHelpString, longHelpString, None)
+
+
+    # The following are the new toolbar Add methods starting with
+    # 2.3.3.  They are renamed to have 'Label' in the name so as to be
+    # able to keep backwards compatibility with using the above
+    # methods.  Eventually these should migrate to be the methods used
+    # primarily and lose the 'Label' in the name...
+
+    def AddLabelTool(self, id, label, bitmap,
+                     bmpDisabled = wxNullBitmap,
+                     kind = wxITEM_NORMAL,
+                     shortHelp = '', longHelp = '',
+                     clientData = None):
+        '''
+        The full AddTool() function.
+
+        If bmpDisabled is wxNullBitmap, a shadowed version of the normal bitmap
+        is created and used as the disabled image.
+        '''
+        return self.DoAddTool(id, label, bitmap, bmpDisabled, kind,
+                              shortHelp, longHelp, clientData)
+
+
+    def InsertLabelTool(self, pos, id, label, bitmap,
+                        bmpDisabled = wxNullBitmap,
+                        kind = wxITEM_NORMAL,
+                        shortHelp = '', longHelp = '',
+                        clientData = None):
+        '''
+        Insert the new tool at the given position, if pos == GetToolsCount(), it
+        is equivalent to AddTool()
+        '''
+        return self.DoInsertTool(pos, id, label, bitmap, bmpDisabled, kind,
+                                 shortHelp, longHelp, clientData)
+
+    def AddCheckLabelTool(self, id, label, bitmap,
+                        bmpDisabled = wxNullBitmap,
+                        shortHelp = '', longHelp = '',
+                        clientData = None):
+        '''Add a check tool, i.e. a tool which can be toggled'''
+        return self.DoAddTool(id, label, bitmap, bmpDisabled, wx.wxITEM_CHECK,
+                              shortHelp, longHelp, clientData)
+
+    def AddRadioLabelTool(self, id, label, bitmap,
+                          bmpDisabled = wxNullBitmap,
+                          shortHelp = '', longHelp = '',
+                          clientData = None):
+        '''
+        Add a radio tool, i.e. a tool which can be toggled and releases any
+        other toggled radio tools in the same group when it happens
+        '''
+        return self.DoAddTool(id, label, bitmap, bmpDisabled, wx.wxITEM_RADIO,
+                              shortHelp, longHelp, clientData)
+
+
+    # For consistency with the backwards compatible methods above, here are
+    # some non-'Label' versions of the Check and Radio methods
+    def AddCheckTool(self, id, bitmap,
+                     bmpDisabled = wxNullBitmap,
+                     shortHelp = '', longHelp = '',
+                     clientData = None):
+        '''Add a check tool, i.e. a tool which can be toggled'''
+        return self.DoAddTool(id, '', bitmap, bmpDisabled, wx.wxITEM_CHECK,
+                              shortHelp, longHelp, clientData)
+
+    def AddRadioTool(self, id, bitmap,
+                     bmpDisabled = wxNullBitmap,
+                     shortHelp = '', longHelp = '',
+                     clientData = None):
+        '''
+        Add a radio tool, i.e. a tool which can be toggled and releases any
+        other toggled radio tools in the same group when it happens
+        '''
+        return self.DoAddTool(id, '', bitmap, bmpDisabled, wx.wxITEM_RADIO,
+                              shortHelp, longHelp, clientData)
+    "
+
+    // TODO?
+    //wxToolBarToolBase *AddTool (wxToolBarToolBase *tool);
+    //wxToolBarToolBase *InsertTool (size_t pos, wxToolBarToolBase *tool);
+
     wxToolBarToolBase *AddControl(wxControl *control);
     wxToolBarToolBase *InsertControl(size_t pos, wxControl *control);
+    wxControl *FindControl( int id );
 
     wxToolBarToolBase *AddSeparator();
     wxToolBarToolBase *InsertSeparator(size_t pos);
@@ -304,6 +395,8 @@ public:
         }
     }
 
+    // returns tool pos, or wxNOT_FOUND if tool isn't found
+    int GetToolPos(int id) const;
 
     bool GetToolState(int id);
     bool GetToolEnabled(int id);
@@ -367,28 +460,28 @@ public:
 
 
 
-class wxToolBarSimple : public wxToolBarBase {
-public:
-    wxToolBarSimple(wxWindow *parent,
-                    wxWindowID id,
-                    const wxPoint& pos = wxDefaultPosition,
-                    const wxSize& size = wxDefaultSize,
-                    long style = wxNO_BORDER | wxTB_HORIZONTAL,
-                    const wxString& name = wxPyToolBarNameStr);
-    %name(wxPreToolBarSimple)wxToolBarSimple();
+// class wxToolBarSimple : public wxToolBarBase {
+// public:
+//     wxToolBarSimple(wxWindow *parent,
+//                     wxWindowID id,
+//                     const wxPoint& pos = wxDefaultPosition,
+//                     const wxSize& size = wxDefaultSize,
+//                     long style = wxNO_BORDER | wxTB_HORIZONTAL,
+//                     const wxString& name = wxPyToolBarNameStr);
+//     %name(wxPreToolBarSimple)wxToolBarSimple();
 
-    bool Create(wxWindow *parent,
-                    wxWindowID id,
-                    const wxPoint& pos = wxDefaultPosition,
-                    const wxSize& size = wxDefaultSize,
-                    long style = wxNO_BORDER | wxTB_HORIZONTAL,
-                    const wxString& name = wxPyToolBarNameStr);
+//     bool Create(wxWindow *parent,
+//                     wxWindowID id,
+//                     const wxPoint& pos = wxDefaultPosition,
+//                     const wxSize& size = wxDefaultSize,
+//                     long style = wxNO_BORDER | wxTB_HORIZONTAL,
+//                     const wxString& name = wxPyToolBarNameStr);
 
-    %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
-    %pragma(python) addtomethod = "wxPreToolBarSimple:val._setOORInfo(val)"
+//     %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
+//     %pragma(python) addtomethod = "wxPreToolBarSimple:val._setOORInfo(val)"
 
-    wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
-};
+//     wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
+// };
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------