]> git.saurik.com Git - wxWidgets.git/blame - wxPython/contrib/ogl/oglcanvas.i
VC++ free must take place in same DLL as allocation when using non dll
[wxWidgets.git] / wxPython / contrib / ogl / oglcanvas.i
CommitLineData
e91a9dfc
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: oglcanvas.i
3// Purpose: SWIG definitions for the wxWindows Object Graphics Library
4//
5// Author: Robin Dunn
6//
7// Created: 7-Sept-1999
8// RCS-ID: $Id$
9// Copyright: (c) 1998 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13
14%module oglcanvas
15
16%{
6e2129f9 17#include "wxPython.h"
e91a9dfc
RD
18#include "oglhelpers.h"
19%}
20
21//---------------------------------------------------------------------------
22
23%include typemaps.i
24%include my_typemaps.i
25
26%extern wx.i
27%import windows.i
28%extern _defs.i
29%extern misc.i
30%extern gdi.i
31
32%include _ogldefs.i
33
edf2f43e 34%import oglbasic.i
e91a9dfc
RD
35
36
37%pragma(python) code = "import wx"
38
39//---------------------------------------------------------------------------
4fcf77bc
RD
40%{
41 // Put some wx default wxChar* values into wxStrings.
42 DECLARE_DEF_STRING(ShapeCanvasNameStr);
43%}
44
e91a9dfc
RD
45//---------------------------------------------------------------------------
46//---------------------------------------------------------------------------
47
9416aa89 48class wxDiagram : public wxObject {
e91a9dfc
RD
49public:
50 wxDiagram();
9416aa89 51 //~wxDiagram();
e91a9dfc 52
edf2f43e 53 void AddShape(wxPyShape* shape, wxPyShape *addAfter = NULL);
e91a9dfc
RD
54 void Clear(wxDC& dc);
55 void DeleteAllShapes();
56 void DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2);
57 wxPyShape* FindShape(long id);
58 wxPyShapeCanvas* GetCanvas();
59 int GetCount();
60 double GetGridSpacing();
61 int GetMouseTolerance();
62
63 // wxList* GetShapeList();
64 %addmethods {
65 PyObject* GetShapeList() {
66 wxList* list = self->GetShapeList();
c893f25d 67 return wxPy_ConvertShapeList(list, "wxPyShape");
e91a9dfc
RD
68 }
69 }
70
71 bool GetQuickEditMode();
72 bool GetSnapToGrid();
73 void InsertShape(wxPyShape *shape);
1e4a197e
RD
74
75#ifdef wxUSE_PROLOGIO
e91a9dfc 76 bool LoadFile(const wxString& filename);
1e4a197e
RD
77 bool SaveFile(const wxString& filename);
78#endif
e91a9dfc 79
1e4a197e 80#ifdef wxUSE_PROLOGIO
e91a9dfc
RD
81 // **** Have to deal with wxExpr and wxExprDatabase first...
82 //void OnDatabaseLoad(wxExprDatabase& database);
83 //void OnDatabaseSave(wxExprDatabase& database);
84 //bool OnHeaderLoad(wxExprDatabase& database, wxExpr& expr);
85 //bool OnHeaderSave(wxExprDatabase& database, wxExpr& expr);
86 //bool OnShapeLoad(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr);
87 //bool OnShapeSave(wxExprDatabase& database, wxPyShape& shape, wxExpr& expr);
1e4a197e 88#endif
e91a9dfc 89
1e4a197e 90#ifdef wxUSE_PROLOGIO
e91a9dfc
RD
91 void ReadContainerGeometry(wxExprDatabase& database);
92 void ReadLines(wxExprDatabase& database);
93 void ReadNodes(wxExprDatabase& database);
1e4a197e
RD
94#endif
95
e91a9dfc
RD
96 void RecentreAll(wxDC& dc);
97 void Redraw(wxDC& dc);
98 void RemoveAllShapes();
99 void RemoveShape(wxPyShape* shape);
e91a9dfc
RD
100 void SetCanvas(wxPyShapeCanvas* canvas);
101 void SetGridSpacing(double spacing);
102 void SetMouseTolerance(int tolerance);
103 void SetQuickEditMode(bool mode);
104 void SetSnapToGrid(bool snap);
105 void ShowAll(bool show);
211a46cf 106 void Snap(double *INOUT, double *INOUT);
e91a9dfc
RD
107
108};
109
110//---------------------------------------------------------------------------
111
112%{
113 IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnBeginDragLeft);
114 IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnBeginDragRight);
115 IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnEndDragLeft);
116 IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnEndDragRight);
117 IMP_PYCALLBACK__BOOL2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnDragLeft);
118 IMP_PYCALLBACK__BOOL2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnDragRight);
119 IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnLeftClick);
120 IMP_PYCALLBACK__2DBLINT(wxPyShapeCanvas, wxShapeCanvas, OnRightClick);
121%}
122
123
124class wxPyShapeCanvas : public wxScrolledWindow {
125public:
126 wxPyShapeCanvas(wxWindow* parent = NULL, wxWindowID id = -1,
1e7ecb7b
RD
127 const wxPoint& pos = wxDefaultPosition,
128 const wxSize& size = wxDefaultSize,
4fcf77bc
RD
129 long style = wxBORDER,
130 const wxString& name = wxPyShapeCanvasNameStr);
e91a9dfc 131
0122b7e3
RD
132 void _setCallbackInfo(PyObject* self, PyObject* _class);
133 %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyShapeCanvas)"
134 %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
e91a9dfc
RD
135
136 void AddShape(wxPyShape *shape, wxPyShape *addAfter = NULL);
137
138 // **** Need a typemap for wxClassInfo, or implement wxObject, etc.....
4e0dcbb1 139 wxPyShape* FindShape(double x1, double y, int *OUTPUT,
e91a9dfc
RD
140 wxClassInfo *info = NULL, wxPyShape* notImage = NULL);
141
4e0dcbb1 142 wxPyShape * FindFirstSensitiveShape(double x1, double y, int *OUTPUT, int op);
e91a9dfc
RD
143 wxDiagram* GetDiagram();
144
145 bool GetQuickEditMode();
146 void InsertShape(wxPyShape* shape);
147
148
149 void base_OnBeginDragLeft(double x, double y, int keys = 0);
150 void base_OnBeginDragRight(double x, double y, int keys = 0);
151 void base_OnEndDragLeft(double x, double y, int keys = 0);
152 void base_OnEndDragRight(double x, double y, int keys = 0);
153 void base_OnDragLeft(bool draw, double x, double y, int keys = 0);
154 void base_OnDragRight(bool draw, double x, double y, int keys = 0);
155 void base_OnLeftClick(double x, double y, int keys = 0);
156 void base_OnRightClick(double x, double y, int keys = 0);
157
158 void Redraw(wxDC& dc);
159 void RemoveShape(wxPyShape *shape);
160 void SetDiagram(wxDiagram *diagram);
211a46cf 161 void Snap(double *INOUT, double *INOUT);
e91a9dfc 162
c893f25d
RD
163
164 %pragma(python) addtoclass = "
165 def GetShapeList(self):
166 return self.GetDiagram().GetShapeList()
167 "
168
e91a9dfc
RD
169};
170
171
172//---------------------------------------------------------------------------
173
174