]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/src/windows2.i
Some tweaks and updates
[wxWidgets.git] / utils / wxPython / src / windows2.i
index d154185afb6a2701102b7a9ebd024a24ad16facd..6aa7c46e7c5f20fc0543b367cc82bc09f251fa24 100644 (file)
@@ -17,6 +17,9 @@
 #include <wx/grid.h>
 #include <wx/notebook.h>
 #include <wx/splitter.h>
+#ifdef __WXMSW__
+#include <wx/msw/taskbar.h>
+#endif
 %}
 
 //----------------------------------------------------------------------
 %import controls.i
 %import events.i
 
-%pragma(python) code = "import wxp"
+%pragma(python) code = "import wx"
 
 //---------------------------------------------------------------------------
 
+
 enum {
     wxGRID_TEXT_CTRL,
     wxGRID_HSCROLL,
-    wxGRID_VSCROLL,
+    wxGRID_VSCROLL
 };
 
-
-
 class wxGridCell {
 public:
+    wxGridCell();
+    ~wxGridCell();
+
     wxString& GetTextValue();
-    void SetTextValue(const wxString& str);
-    wxFont *GetFont();
-    void SetFont(wxFont *f);
+    void      SetTextValue(const wxString& str);
+    wxFont&   GetFont();
+    void      SetFont(wxFont& f);
     wxColour& GetTextColour();
-    void SetTextColour(const wxColour& colour);
+    void      SetTextColour(const wxColour& colour);
     wxColour& GetBackgroundColour();
-    void SetBackgroundColour(const wxColour& colour);
-    wxBrush *GetBackgroundBrush();
-    int GetAlignment();
-    void SetAlignment(int align);
-    wxBitmap *GetCellBitmap();
-    void SetCellBitmap(wxBitmap *bitmap);
+    void      SetBackgroundColour(const wxColour& colour);
+    wxBrush&  GetBackgroundBrush();
+    int       GetAlignment();
+    void      SetAlignment(int align);
+    wxBitmapGetCellBitmap();
+    void      SetCellBitmap(wxBitmap* bitmap);
 };
 
 
 
 
-
 class wxGrid : public wxPanel {
 public:
     wxGrid(wxWindow* parent, wxWindowID id,
@@ -73,7 +77,17 @@ public:
            long style=0,
            char* name="grid");
 
-    %pragma(python) addtomethod = "__init__:wxp._StdWindowCallbacks(self)"
+    %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnSelectCell',           wxEVT_GRID_SELECT_CELL)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCreateCell',           wxEVT_GRID_CREATE_CELL)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnChangeLabels',         wxEVT_GRID_CHANGE_LABELS)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnChangeSelectionLabel', wxEVT_GRID_CHANGE_SEL_LABEL)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCellChange',           wxEVT_GRID_CELL_CHANGE)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCellLeftClick',        wxEVT_GRID_CELL_LCLICK)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCellRightClick',       wxEVT_GRID_CELL_RCLICK)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLabelLeftClick',       wxEVT_GRID_LABEL_LCLICK)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLabelRightClick',      wxEVT_GRID_LABEL_RCLICK)"
+
 
     void AdjustScrollbars();
     bool AppendCols(int n=1, bool updateLabels=TRUE);
@@ -105,17 +119,39 @@ public:
     int GetCellAlignment(int row, int col);
     %name(GetDefCellAlignment)int GetCellAlignment();
     wxColour& GetCellBackgroundColour(int row, int col);
-    %name(GetDefCellBackgroundColour)
-        wxColour& GetCellBackgroundColour();
+    %name(GetDefCellBackgroundColour) wxColour& GetCellBackgroundColour();
+
     //wxGridCell *** GetCells();
+    %addmethods {
+        PyObject* GetCells() {
+            int row, col;
+            PyObject* rows = PyList_New(0);
+            for (row=0; row < self->GetRows(); row++) {
+                PyObject* rowList = PyList_New(0);
+                for (col=0; col < self->GetCols(); col++) {
+                    wxGridCell* cell = self->GetCell(row, col);
+
+                    bool doSave = wxPyRestoreThread();
+                    PyObject* pyCell = wxPyConstructObject(cell, "wxGridCell");
+                    wxPySaveThread(doSave);
+
+                    if (PyList_Append(rowList, pyCell) == -1)
+                        return NULL;
+                }
+                if (PyList_Append(rows, rowList) == -1)
+                    return NULL;
+            }
+            return rows;
+        }
+    }
     wxColour& GetCellTextColour(int row, int col);
     %name(GetDefCellTextColour)wxColour& GetCellTextColour();
-    wxFont* GetCellTextFont(int row, int col);
-    %name(GetDefCellTextFont)wxFont* GetCellTextFont();
+    wxFont& GetCellTextFont(int row, int col);
+    %name(GetDefCellTextFont)wxFont& GetCellTextFont();
     wxString& GetCellValue(int row, int col);
     int GetCols();
     int GetColumnWidth(int col);
-    wxRect& GetCurrentRect();
+    wxRect GetCurrentRect();
     int GetCursorColumn();
     int GetCursorRow();
     bool GetEditable();
@@ -124,7 +160,7 @@ public:
     wxColour& GetLabelBackgroundColour();
     int GetLabelSize(int orientation);
     wxColour& GetLabelTextColour();
-    wxFont* GetLabelTextFont();
+    wxFont& GetLabelTextFont();
     wxString& GetLabelValue(int orientation, int pos);
     int GetRowHeight(int row);
     int GetRows();
@@ -136,19 +172,7 @@ public:
     bool InsertCols(int pos=0, int n=1, bool updateLabels=TRUE);
     bool InsertRows(int pos=0, int n=1, bool updateLabels=TRUE);
 
-    // TODO:  How to handle callbacks that don't come from
-    //        event system???
-    //
-    //void OnActivate(bool active);
-    //void OnChangeLabels();
-    //void OnChangeSelectionLabel();
-    //wxGridCell* OnCreateCell();
-    //void OnLeftClick(int row, int col, int x, int y, bool control, bool shift);
-    //void OnRightClick(int row, int col, int x, int y, bool control, bool shift);
-    //void OnLabelLeftClick(int row, int col, int x, int y, bool control, bool shift);
-    //void OnLabelRightClick(int row, int col, int x, int y, bool control, bool shift);
-    //void OnSelectCell(int row, int col);
-    //void OnSelectCellImplementation(wxDC *dc, int row, int col);
+    void OnActivate(bool active);
 
     void SetCellAlignment(int alignment, int row, int col);
     %name(SetDefCellAlignment)void SetCellAlignment(int alignment);
@@ -157,30 +181,69 @@ public:
         void SetCellBackgroundColour(const wxColour& colour);
     void SetCellTextColour(const wxColour& colour, int row, int col);
     %name(SetDefCellTextColour)void SetCellTextColour(const wxColour& colour);
-    void SetCellTextFont(wxFont *font, int row, int col);
-    %name(SetDefCellTextFont)void SetCellTextFont(wxFont *font);
+    void SetCellTextFont(wxFontfont, int row, int col);
+    %name(SetDefCellTextFont)void SetCellTextFont(wxFontfont);
     void SetCellValue(const wxString& val, int row, int col);
     void SetColumnWidth(int col, int width);
-    void SetDividerPen(wxPen *pen);
+    void SetDividerPen(wxPenpen);
     void SetEditable(bool editable);
     void SetGridCursor(int row, int col);
     void SetLabelAlignment(int orientation, int alignment);
     void SetLabelBackgroundColour(const wxColour& value);
     void SetLabelSize(int orientation, int size);
     void SetLabelTextColour(const wxColour& value);
-    void SetLabelTextFont(wxFont *font);
+    void SetLabelTextFont(wxFontfont);
     void SetLabelValue(int orientation, const wxString& value, int pos);
     void SetRowHeight(int row, int height);
 
     void UpdateDimensions();
+
+    bool GetEditInPlace();
+    void SetEditInPlace(int edit = TRUE);
+
 };
 
+
+class wxGridEvent : public wxEvent {
+public:
+    int         m_row;
+    int         m_col;
+    int         m_x;
+    int         m_y;
+    bool        m_control;
+    bool        m_shift;
+    wxGridCell* m_cell;
+
+    int GetRow();
+    int GetCol();
+    wxPoint GetPosition();
+    bool ControlDown();
+    bool ShiftDown();
+    wxGridCell* GetCell();
+};
+
+
+enum {
+    wxEVT_GRID_SELECT_CELL,
+    wxEVT_GRID_CREATE_CELL,
+    wxEVT_GRID_CHANGE_LABELS,
+    wxEVT_GRID_CHANGE_SEL_LABEL,
+    wxEVT_GRID_CELL_CHANGE,
+    wxEVT_GRID_CELL_LCLICK,
+    wxEVT_GRID_CELL_RCLICK,
+    wxEVT_GRID_LABEL_LCLICK,
+    wxEVT_GRID_LABEL_RCLICK,
+};
+
+
 //---------------------------------------------------------------------------
 
-class wxNotebookEvent : public wxCommandEvent {
+class wxNotebookEvent : public wxNotifyEvent {
 public:
     int GetSelection();
     int GetOldSelection();
+    void SetOldSelection(int page);
+    void SetSelection(int page);
 };
 
 
@@ -194,7 +257,7 @@ public:
                long style = 0,
                char* name = "notebook");
 
-    %pragma(python) addtomethod = "__init__:wxp._StdWindowCallbacks(self)"
+    %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
 
     int GetPageCount();
     int SetSelection(int nPage);
@@ -211,10 +274,11 @@ public:
     // LINK ERROR: void SetPageSize(const wxSize& size);
     // LINK ERROR: void SetPadding(const wxSize& padding);
     bool DeletePage(int nPage);
+    bool RemovePage(int nPage);
     bool DeleteAllPages();
     bool AddPage(/*wxNotebookPage*/ wxWindow *pPage,
                  const wxString& strText,
-                 bool bSelect = FALSE,
+                 int bSelect = FALSE,
                  int imageId = -1);
 #ifdef __WXMSW__
     bool InsertPage(int nPage,
@@ -223,37 +287,56 @@ public:
                     bool bSelect = FALSE,
                     int imageId = -1);
 #endif
-    wxNotebookPage *GetPage(int nPage);
+    /*wxNotebookPage*/ wxWindow *GetPage(int nPage);
+
+    %addmethods {
+        void ResizeChildren() {
+            wxSizeEvent evt(self->GetClientSize());
+            self->GetEventHandler()->ProcessEvent(evt);
+        }
+    }
+
 
 };
 
 //---------------------------------------------------------------------------
 
+class wxSplitterEvent : public wxCommandEvent {
+public:
+    int GetSashPosition();
+    int GetX();
+    int GetY();
+    wxWindow* GetWindowBeingRemoved();
+    void SetSashPosition(int pos);
+}
+
+
+
+
 class wxSplitterWindow : public wxWindow {
 public:
     wxSplitterWindow(wxWindow* parent, wxWindowID id,
                      const wxPoint& point = wxPyDefaultPosition,
                      const wxSize& size = wxPyDefaultSize,
-                     long style=wxSP_3D,
+                     long style=wxSP_3D|wxCLIP_CHILDREN,
                      char* name = "splitterWindow");
 
-    %pragma(python) addtomethod = "__init__:wxp._StdWindowCallbacks(self)"
+    %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
 
+    int GetBorderSize();
     int GetMinimumPaneSize();
     int GetSashPosition();
+    int GetSashSize();
     int GetSplitMode();
     wxWindow* GetWindow1();
     wxWindow* GetWindow2();
     void Initialize(wxWindow* window);
     bool IsSplit();
 
-    // TODO:  How to handle callbacks that don't come from
-    //        event system???
-    //
-    //void OnDoubleClickSash(int x, int y);
-    //void OnUnsplit(wxWindow* removed);
 
+    void SetBorderSize(int width);
     void SetSashPosition(int position, int redraw = TRUE);
+    void SetSashSize(int width);
     void SetMinimumPaneSize(int paneSize);
     void SetSplitMode(int mode);
     bool SplitHorizontally(wxWindow* window1, wxWindow* window2, int sashPosition = 0);
@@ -263,32 +346,37 @@ public:
 
 //---------------------------------------------------------------------------
 
+#ifdef __WXMSW__
+
+enum {
+    wxEVT_TASKBAR_MOVE,
+    wxEVT_TASKBAR_LEFT_DOWN,
+    wxEVT_TASKBAR_LEFT_UP,
+    wxEVT_TASKBAR_RIGHT_DOWN,
+    wxEVT_TASKBAR_RIGHT_UP,
+    wxEVT_TASKBAR_LEFT_DCLICK,
+    wxEVT_TASKBAR_RIGHT_DCLICK
+};
+
+
+class wxTaskBarIcon : public wxEvtHandler {
+public:
+    wxTaskBarIcon();
+    ~wxTaskBarIcon();
+
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnMouseMove',    wxEVT_TASKBAR_MOVE)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLButtonDown',  wxEVT_TASKBAR_LEFT_DOWN)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLButtonUp',    wxEVT_TASKBAR_LEFT_UP)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnRButtonDown',  wxEVT_TASKBAR_RIGHT_DOWN)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnRButtonUp',    wxEVT_TASKBAR_RIGHT_UP)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLButtonDClick',wxEVT_TASKBAR_LEFT_DCLICK)"
+    %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnRButtonDClick',wxEVT_TASKBAR_RIGHT_DCLICK)"
 
+    bool SetIcon(const wxIcon& icon, const char* tooltip = "");
+    bool RemoveIcon(void);
+    bool PopupMenu(wxMenu *menu);
+
+};
+#endif
 
 //---------------------------------------------------------------------------
-/////////////////////////////////////////////////////////////////////////////
-//
-// $Log$
-// Revision 1.5  1998/11/03 09:21:57  RD
-// fixed a typo
-//
-// Revision 1.4  1998/10/02 06:40:43  RD
-//
-// Version 0.4 of wxPython for MSW.
-//
-// Revision 1.3  1998/08/18 19:48:20  RD
-// more wxGTK compatibility things.
-//
-// It builds now but there are serious runtime problems...
-//
-// Revision 1.2  1998/08/15 07:36:50  RD
-// - Moved the header in the .i files out of the code that gets put into
-// the .cpp files.  It caused CVS conflicts because of the RCS ID being
-// different each time.
-//
-// - A few minor fixes.
-//
-// Revision 1.1  1998/08/09 08:25:52  RD
-// Initial version
-//
-//