///////////////////////////////////////////////////////////////////////////// // Name: windows2.i // Purpose: SWIG definitions of MORE window classes // // Author: Robin Dunn // // Created: 6/2/98 // RCS-ID: $Id$ // Copyright: (c) 1998 by Total Control Software // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// %module windows2 %{ #include "helpers.h" #ifdef OLD_GRID #include #endif #include #include #include #ifdef __WXMSW__ #include #endif %} //---------------------------------------------------------------------- %include typemaps.i %include my_typemaps.i // Import some definitions of other classes, etc. %import _defs.i %import misc.i %import gdi.i %import windows.i %import controls.i %import events.i %pragma(python) code = "import wx" //--------------------------------------------------------------------------- #ifdef OLD_GRID enum { wxGRID_TEXT_CTRL, wxGRID_HSCROLL, wxGRID_VSCROLL }; class wxGridCell { public: wxGridCell(); ~wxGridCell(); wxString& GetTextValue(); void SetTextValue(const wxString& str); wxFont& GetFont(); void SetFont(wxFont& f); wxColour& GetTextColour(); 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); }; class wxGrid : public wxPanel { public: wxGrid(wxWindow* parent, wxWindowID id, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize, long style=0, char* name="grid"); %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, int updateLabels=TRUE); bool AppendRows(int n=1, int updateLabels=TRUE); void BeginBatch(); bool CellHitTest(int x, int y, int *OUTPUT, int *OUTPUT); %addmethods { // TODO: For now we are just ignoring the initial cellValues // and widths. Add support for loading them from // Python sequence objects. bool CreateGrid(int rows, int cols, //PyObject* cellValues = NULL, //PyObject* widths = NULL, short defaultWidth = wxGRID_DEFAULT_CELL_WIDTH, short defaultHeight = wxGRID_DEFAULT_CELL_HEIGHT) { return self->CreateGrid(rows, cols, NULL, NULL, defaultWidth, defaultHeight); } } bool CurrentCellVisible(); bool DeleteCols(int pos=0, int n=1, bool updateLabels=TRUE); bool DeleteRows(int pos=0, int n=1, bool updateLabels=TRUE); void EndBatch(); int GetBatchCount(); wxGridCell* GetCell(int row, int col); int GetCellAlignment(int row, int col); %name(GetDefCellAlignment)int GetCellAlignment(); wxColour& GetCellBackgroundColour(int row, int col); %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(); wxString& GetCellValue(int row, int col); int GetCols(); int GetColumnWidth(int col); wxRect GetCurrentRect(); int GetCursorColumn(); int GetCursorRow(); bool GetEditable(); wxScrollBar * GetHorizScrollBar(); int GetLabelAlignment(int orientation); wxColour& GetLabelBackgroundColour(); int GetLabelSize(int orientation); wxColour& GetLabelTextColour(); wxFont& GetLabelTextFont(); wxString& GetLabelValue(int orientation, int pos); int GetRowHeight(int row); int GetRows(); int GetScrollPosX(); int GetScrollPosY(); wxTextCtrl* GetTextItem(); wxScrollBar* GetVertScrollBar(); bool InsertCols(int pos=0, int n=1, bool updateLabels=TRUE); bool InsertRows(int pos=0, int n=1, bool updateLabels=TRUE); void OnActivate(bool active); void SetCellAlignment(int alignment, int row, int col); %name(SetDefCellAlignment)void SetCellAlignment(int alignment); void SetCellBackgroundColour(const wxColour& colour, int row, int col); %name(SetDefCellBackgroundColour) 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 SetCellValue(const wxString& val, int row, int col); void SetColumnWidth(int col, int width); void SetDividerPen(wxPen& pen); 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 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, }; #endif //--------------------------------------------------------------------------- enum { /* notebook control event types */ wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, }; class wxNotebookEvent : public wxNotifyEvent { public: int GetSelection(); int GetOldSelection(); void SetOldSelection(int page); void SetSelection(int page); }; class wxNotebook : public wxControl { public: wxNotebook(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, char* name = "notebook"); %pragma(python) addtomethod = "__init__:#wx._StdWindowCallbacks(self)" int GetPageCount(); int SetSelection(int nPage); void AdvanceSelection(bool bForward = TRUE); int GetSelection(); bool SetPageText(int nPage, const wxString& strText); wxString GetPageText(int nPage) const; void SetImageList(wxImageList* imageList); wxImageList* GetImageList(); int GetPageImage(int nPage); bool SetPageImage(int nPage, int nImage); int GetRowCount(); void SetPageSize(const wxSize& size); void SetPadding(const wxSize& padding); bool DeletePage(int nPage); bool RemovePage(int nPage); bool DeleteAllPages(); bool AddPage(/*wxNotebookPage*/ wxWindow *pPage, const wxString& strText, int bSelect = FALSE, int imageId = -1); bool InsertPage(int nPage, /*wxNotebookPage*/ wxWindow *pPage, const wxString& strText, bool bSelect = FALSE, int imageId = -1); /*wxNotebookPage*/ wxWindow *GetPage(int nPage); %addmethods { void ResizeChildren() { wxSizeEvent evt(self->GetClientSize()); self->GetEventHandler()->ProcessEvent(evt); } } }; //--------------------------------------------------------------------------- enum { /* splitter window events */ wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, wxEVT_COMMAND_SPLITTER_UNSPLIT, wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, }; enum { wxSPLIT_HORIZONTAL, wxSPLIT_VERTICAL, wxSPLIT_DRAG_NONE, wxSPLIT_DRAG_DRAGGING, wxSPLIT_DRAG_LEFT_DOWN }; 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 = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style=wxSP_3D|wxCLIP_CHILDREN, char* name = "splitterWindow"); %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(); bool ReplaceWindow(wxWindow * winOld, wxWindow * winNew); 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); bool SplitVertically(wxWindow* window1, wxWindow* window2, int sashPosition = 0); bool Unsplit(wxWindow* toRemove = NULL); }; //--------------------------------------------------------------------------- #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(); // We still use the magic methods here since that is the way it is documented... %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); bool IsIconInstalled(); bool IsOK(); }; #endif //---------------------------------------------------------------------------