]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/stattool.i
Fixed wxWindowCreateEvent and wxWindowDestroyEvent to set m_eventType
[wxWidgets.git] / utils / wxPython / src / stattool.i
index f28a74f802156e9c5cc470d5aafac5f81b1aae30..c8987504ba73636a6d5b13917bf2220bbdf3e721 100644 (file)
@@ -57,8 +57,6 @@ public:
     void DrawFieldText(wxDC& dc, int i);
     void InitColours(void);
 
-    // OnSysColourChanged(wxSysColourChangedEvent& event);
-
     void SetFieldsCount(int number = 1);
     void SetStatusText(const wxString& text, int i = 0);
     void SetStatusWidths(int LCOUNT, int* LIST);
@@ -67,26 +65,260 @@ public:
 
 //---------------------------------------------------------------------------
 
+class wxToolBarBase;
+
+enum wxToolBarToolStyle
+{
+    wxTOOL_STYLE_BUTTON    = 1,
+    wxTOOL_STYLE_SEPARATOR = 2,
+    wxTOOL_STYLE_CONTROL
+};
+
+
+
+class wxToolBarToolBase {
+public:
+//      wxToolBarToolBase(wxToolBarBase *tbar = (wxToolBarBase *)NULL,
+//                        int id = wxID_SEPARATOR,
+//                        const wxBitmap& bitmap1 = wxNullBitmap,
+//                        const wxBitmap& bitmap2 = wxNullBitmap,
+//                        bool toggle = FALSE,
+//                        wxObject *clientData = (wxObject *) NULL,
+//                        const wxString& shortHelpString = wxEmptyString,
+//                        const wxString& longHelpString = wxEmptyString);
+//      wxToolBarToolBase(wxToolBarBase *tbar, wxControl *control);
+//      ~wxToolBarToolBase();
+
+    %addmethods { void Destroy() { delete self; } }
+
+    int GetId();
+    wxControl *GetControl();
+    wxToolBarBase *GetToolBar();
+    int IsButton();
+    int IsControl();
+    int IsSeparator();
+    int GetStyle();
+    bool IsEnabled();
+    bool IsToggled();
+    bool CanBeToggled();
+    const wxBitmap& GetBitmap1();
+    const wxBitmap& GetBitmap2();
+    const wxBitmap& GetBitmap();
+    wxString GetShortHelp();
+    wxString GetLongHelp();
+    bool Enable(bool enable);
+    bool Toggle(bool toggle);
+    bool SetToggle(bool toggle);
+    bool SetShortHelp(const wxString& help);
+    bool SetLongHelp(const wxString& help);
+    void SetBitmap1(const wxBitmap& bmp);
+    void SetBitmap2(const wxBitmap& bmp);
+    void Detach();
+    void Attach(wxToolBarBase *tbar);
+
+    //wxObject *GetClientData();
+    %addmethods {
+        // convert the ClientData back to a PyObject
+        PyObject* GetClientData() {
+            wxPyUserData* udata = (wxPyUserData*)self->GetClientData();
+            if (udata) {
+                Py_INCREF(udata->m_obj);
+                return udata->m_obj;
+            } else {
+                Py_INCREF(Py_None);
+                return Py_None;
+            }
+        }
+
+        void SetClientData(PyObject* clientData) {
+            self->SetClientData(new wxPyUserData(clientData));
+        }
+    }
+};
+
+
+
+class wxToolBarBase : public wxControl {
+public:
+
+    // This is an Abstract Base Class
+
+    %addmethods {
+        // wrap ClientData in a class that knows about PyObjects
+        wxToolBarToolBase *AddTool(int id,
+                                   const wxBitmap& bitmap,
+                                   const wxBitmap& pushedBitmap = wxNullBitmap,
+                                   int toggle = FALSE,
+                                   PyObject *clientData = NULL,
+                                   const wxString& shortHelpString = wxPyEmptyStr,
+                                   const wxString& longHelpString = wxPyEmptyStr) {
+            wxPyUserData* udata = NULL;
+            if (clientData)
+                udata = new wxPyUserData(clientData);
+            return self->AddTool(id, bitmap, pushedBitmap, (bool)toggle,
+                                 udata, shortHelpString, longHelpString);
+        }
+
+        // This one is easier to use...
+        wxToolBarToolBase *AddSimpleTool(int id,
+                                         const wxBitmap& bitmap,
+                                         const wxString& shortHelpString = wxPyEmptyStr,
+                                         const wxString& longHelpString = wxPyEmptyStr,
+                                         int toggle = FALSE) {
+            return self->AddTool(id, bitmap, wxNullBitmap, toggle, NULL,
+                                 shortHelpString, longHelpString);
+        }
+
+
+        // wrap ClientData in a class that knows about PyObjects
+        wxToolBarToolBase *InsertTool(size_t pos,
+                                      int id,
+                                      const wxBitmap& bitmap,
+                                      const wxBitmap& pushedBitmap = wxNullBitmap,
+                                      int toggle = FALSE,
+                                      PyObject *clientData = NULL,
+                                      const wxString& shortHelpString = wxPyEmptyStr,
+                                      const wxString& longHelpString = wxPyEmptyStr) {
+            wxPyUserData* udata = NULL;
+            if (clientData)
+                udata = new wxPyUserData(clientData);
+            return self->InsertTool(pos, id, bitmap, pushedBitmap, (bool)toggle,
+                                    udata, shortHelpString, longHelpString);
+        }
+
+        // This one is easier to use...
+        wxToolBarToolBase *InsertSimpleTool(size_t pos,
+                                            int id,
+                                            const wxBitmap& bitmap,
+                                            const wxString& shortHelpString = wxPyEmptyStr,
+                                            const wxString& longHelpString = wxPyEmptyStr,
+                                            int toggle = FALSE) {
+            return self->InsertTool(pos, id, bitmap, wxNullBitmap, toggle, NULL,
+                                    shortHelpString, longHelpString);
+        }
+    }
+
+
+    wxToolBarToolBase *AddControl(wxControl *control);
+    wxToolBarToolBase *InsertControl(size_t pos, wxControl *control);
+
+    wxToolBarToolBase *AddSeparator();
+    wxToolBarToolBase *InsertSeparator(size_t pos);
+
+    wxToolBarToolBase *RemoveTool(int id);
+
+    bool DeleteToolByPos(size_t pos);
+    bool DeleteTool(int id);
+    void ClearTools();
+    bool Realize();
+
+    void EnableTool(int id, bool enable);
+    void ToggleTool(int id, bool toggle);
+    void SetToggle(int id, bool toggle);
+
+
+    %addmethods {
+        // convert the ClientData back to a PyObject
+        PyObject* GetToolClientData(int index) {
+            wxPyUserData* udata = (wxPyUserData*)self->GetToolClientData(index);
+            if (udata) {
+                Py_INCREF(udata->m_obj);
+                return udata->m_obj;
+            } else {
+                Py_INCREF(Py_None);
+                return Py_None;
+            }
+        }
+
+        void SetToolClientData(int index, PyObject* clientData) {
+            self->SetToolClientData(index, new wxPyUserData(clientData));
+        }
+    }
+
+
+    bool GetToolState(int id);
+    bool GetToolEnabled(int id);
+    void SetToolShortHelp(int id, const wxString& helpString);
+    wxString GetToolShortHelp(int id);
+    void SetToolLongHelp(int id, const wxString& helpString);
+    wxString GetToolLongHelp(int id);
+
+    %name(SetMarginsXY) void SetMargins(int x, int y);
+    void SetMargins(const wxSize& size);
+    void SetToolPacking(int packing);
+    void SetToolSeparation(int separation);
+    wxSize GetToolMargins();
+    int GetToolPacking();
+    int GetToolSeparation();
+
+    void SetRows(int nRows);
+    void SetMaxRowsCols(int rows, int cols);
+    int GetMaxRows();
+    int GetMaxCols();
+
+    void SetToolBitmapSize(const wxSize& size);
+    wxSize GetToolBitmapSize();
+    wxSize GetToolSize();
+
+};
+
+
+
+
+class wxToolBar : public wxToolBarBase {
+public:
+    wxToolBar(wxWindow *parent,
+              wxWindowID id,
+              const wxPoint& pos = wxPyDefaultPosition,
+              const wxSize& size = wxPyDefaultSize,
+              long style = wxNO_BORDER | wxTB_HORIZONTAL,
+              const wxString& name = wxToolBarNameStr);
+
+    %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
+
+    wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
+};
+
+
+
+
+class wxToolBarSimple : public wxToolBarBase {
+public:
+    wxToolBarSimple(wxWindow *parent,
+                    wxWindowID id,
+                    const wxPoint& pos = wxPyDefaultPosition,
+                    const wxSize& size = wxPyDefaultSize,
+                    long style = wxNO_BORDER | wxTB_HORIZONTAL,
+                    const wxString& name = wxToolBarNameStr);
+
+    %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
+
+    wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y);
+};
+
+//---------------------------------------------------------------------------
+
+
+
+#ifdef THE_OLD_ONE
+
 class wxToolBarTool {
 public:
     wxToolBarTool();
     ~wxToolBarTool();
-#ifdef __WXMSW__
-    void SetSize( long w, long h ) { m_width = w; m_height = h; }
-    long GetWidth () const { return m_width; }
-    long GetHeight () const { return m_height; }
-#endif
+    void SetSize( long w, long h )
+    long GetWidth ();
+    long GetHeight ();
+    wxControl *GetControl();
 
 public:
     int                   m_toolStyle;
     wxObject *            m_clientData;
     int                   m_index;
-#ifdef __WXMSW__
     long                  m_x;
     long                  m_y;
     long                  m_width;
     long                  m_height;
-#endif
     bool                  m_toggleState;
     bool                  m_isToggle;
     bool                  m_deleteSecondBitmap;
@@ -114,7 +346,9 @@ public:
     %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
 
 
-    void AddSeparator(void);
+    bool AddControl(wxControl * control);
+    void AddSeparator();
+    void ClearTools();
 
     // Ignoge the clientData for now...
     %addmethods {
@@ -131,19 +365,28 @@ public:
                                  isToggle, xPos, yPos, NULL,
                                  shortHelpString, longHelpString);
         }
+
+        wxToolBarTool* AddSimpleTool(int toolIndex,
+                               const wxBitmap& bitmap,
+                               const wxString& shortHelpString = wxPyEmptyStr,
+                               const wxString& longHelpString = wxPyEmptyStr) {
+            return self->AddTool(toolIndex, bitmap, wxNullBitmap,
+                                 FALSE, -1, -1, NULL,
+                                 shortHelpString, longHelpString);
+        }
     }
 
-//    void DrawTool(wxMemoryDC& memDC, wxToolBarTool* tool);
-    void EnableTool(int toolIndex, const bool enable);
+
+    void EnableTool(int toolIndex, bool enable);
 #ifdef __WXMSW__
-    wxToolBarTool* FindToolForPosition(const float x, const float y);
+    wxToolBarTool* FindToolForPosition(long x, long y);
     wxSize GetToolSize();
     wxSize GetToolBitmapSize();
     void SetToolBitmapSize(const wxSize& size);
-//    wxSize GetMargins();
     wxSize GetMaxSize();
-//    wxObject* GetToolClientData(int toolIndex);
 #endif
+    wxSize GetToolMargins();
+//    wxObject* GetToolClientData(int toolIndex);
     bool GetToolEnabled(int toolIndex);
     wxString GetToolLongHelp(int toolIndex);
     int GetToolPacking();
@@ -151,90 +394,23 @@ public:
     wxString GetToolShortHelp(int toolIndex);
     bool GetToolState(int toolIndex);
 
-    // TODO:  figure out how to handle these
-    //bool OnLeftClick(int toolIndex, bool toggleDown);
-    //void OnMouseEnter(int toolIndex);
-    //void OnRightClick(int toolIndex, float x, float y);
 
     bool Realize();
-    
+
     void SetToolLongHelp(int toolIndex, const wxString& helpString);
     void SetToolShortHelp(int toolIndex, const wxString& helpString);
     void SetMargins(const wxSize& size);
     void SetToolPacking(int packing);
     void SetToolSeparation(int separation);
     void ToggleTool(int toolIndex, const bool toggle);
+    void SetToggle(int toolIndex, bool toggle);
+    void SetMaxRowsCols(int rows, int cols);
+    int GetMaxRows();
+    int GetMaxCols();
 };
 
 
-
-//  // The Native Toolbar
-//  class wxToolBar : public wxToolBarBase {
-//  public:
-//      wxToolBar(wxWindow* parent, wxWindowID id,
-//                const wxPoint& pos = wxPyDefaultPosition,
-//                const wxSize& size = wxPyDefaultSize,
-//                long style = wxTB_HORIZONTAL | wxNO_BORDER,
-//                char* name = "toolBar");
-
-//      %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
-
-//  };
-
-
-//  // A generic toolbar
-//  class wxToolBarSimple : public wxToolBarBase {
-//  public:
-//      wxToolBarSimple(wxWindow* parent, wxWindowID id,
-//                      const wxPoint& pos = wxPyDefaultPosition,
-//                      const wxSize& size = wxPyDefaultSize,
-//                      long style = wxTB_HORIZONTAL | wxNO_BORDER,
-//                      char* name = "toolBar");
-
-//      %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
-
-//  };
-
+#endif
 
 //---------------------------------------------------------------------------
 
-/////////////////////////////////////////////////////////////////////////////
-//
-// $Log$
-// Revision 1.4  1998/12/17 14:07:43  RR
-//   Removed minor differences between wxMSW and wxGTK
-//
-// Revision 1.3  1998/12/15 20:41:23  RD
-// Changed the import semantics from "from wxPython import *" to "from
-// wxPython.wx import *"  This is for people who are worried about
-// namespace pollution, they can use "from wxPython import wx" and then
-// prefix all the wxPython identifiers with "wx."
-//
-// Added wxTaskbarIcon for wxMSW.
-//
-// Made the events work for wxGrid.
-//
-// Added wxConfig.
-//
-// Added wxMiniFrame for wxGTK, (untested.)
-//
-// Changed many of the args and return values that were pointers to gdi
-// objects to references to reflect changes in the wxWindows API.
-//
-// Other assorted fixes and additions.
-//
-// Revision 1.2  1998/10/07 07:34:34  RD
-// Version 0.4.1 for wxGTK
-//
-// Revision 1.1  1998/10/02 06:40:42  RD
-//
-// Version 0.4 of wxPython for MSW.
-//
-//
-
-
-
-
-
-
-