1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG definitions for the wxWindows Object Graphics Library
 
   7 // Created:     3-Sept-1999
 
   9 // Copyright:   (c) 1998 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  18 #include "oglhelpers.h"
 
  21 //---------------------------------------------------------------------------
 
  24 %include my_typemaps.i
 
  38 %pragma(python) code = "import wx"
 
  40 //---------------------------------------------------------------------------
 
  41 //---------------------------------------------------------------------------
 
  43     WXSHAPE_IMP_CALLBACKS(wxPyEllipseShape, wxEllipseShape);
 
  46 class wxPyEllipseShape : public wxPyShape {
 
  48     wxPyEllipseShape(double width = 0.0, double height = 0.0);
 
  50     void _setSelf(PyObject* self, PyObject* _class);
 
  51     %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyEllipseShape)"
 
  53     void base_OnDraw(wxDC& dc);
 
  54     void base_OnDrawContents(wxDC& dc);
 
  55     void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
 
  56     void base_OnMoveLinks(wxDC& dc);
 
  57     void base_OnErase(wxDC& dc);
 
  58     void base_OnEraseContents(wxDC& dc);
 
  59     void base_OnHighlight(wxDC& dc);
 
  60     void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
 
  61     void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
 
  62     void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
 
  63     void base_OnSize(double x, double y);
 
  64     bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
  65     void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
  66     void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
 
  67     void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
 
  68     void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
 
  69     void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
 
  70     void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
 
  71     void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
 
  72     void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
 
  73     void base_OnDrawControlPoints(wxDC& dc);
 
  74     void base_OnEraseControlPoints(wxDC& dc);
 
  75     void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
 
  76     void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
 
  77     void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
  78     void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
  79     void base_OnBeginSize(double w, double h);
 
  80     void base_OnEndSize(double w, double h);
 
  81 //    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
 
  84 //---------------------------------------------------------------------------
 
  86     WXSHAPE_IMP_CALLBACKS(wxPyCircleShape, wxCircleShape);
 
  89 class wxPyCircleShape : public wxPyEllipseShape {
 
  91     wxPyCircleShape(double width = 0.0);
 
  93     void _setSelf(PyObject* self, PyObject* _class);
 
  94     %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyCircleShape)"
 
  96     void base_OnDraw(wxDC& dc);
 
  97     void base_OnDrawContents(wxDC& dc);
 
  98     void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
 
  99     void base_OnMoveLinks(wxDC& dc);
 
 100     void base_OnErase(wxDC& dc);
 
 101     void base_OnEraseContents(wxDC& dc);
 
 102     void base_OnHighlight(wxDC& dc);
 
 103     void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
 
 104     void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
 
 105     void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
 
 106     void base_OnSize(double x, double y);
 
 107     bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 108     void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 109     void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 110     void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 111     void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 112     void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 113     void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
 
 114     void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
 
 115     void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
 
 116     void base_OnDrawControlPoints(wxDC& dc);
 
 117     void base_OnEraseControlPoints(wxDC& dc);
 
 118     void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
 
 119     void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
 
 120     void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 121     void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 122     void base_OnBeginSize(double w, double h);
 
 123     void base_OnEndSize(double w, double h);
 
 124 //    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
 
 126 //---------------------------------------------------------------------------
 
 127 //---------------------------------------------------------------------------
 
 130     wxArrowHead(int type = 0,
 
 134                 const char * name = "",
 
 135                 wxPseudoMetaFile *mf = NULL,
 
 141     void SetPosition(int pos);
 
 147     void SetXOffset(double x);
 
 148     void SetYOffset(double y);
 
 149     wxPseudoMetaFile *GetMetaFile();
 
 152     double GetArrowSize();
 
 153     void SetSize(double size);
 
 154     void SetSpacing(double sp);
 
 156 //---------------------------------------------------------------------------
 
 158     WXSHAPE_IMP_CALLBACKS(wxPyLineShape, wxLineShape);
 
 161 class wxPyLineShape : public wxPyShape {
 
 165     void _setSelf(PyObject* self, PyObject* _class);
 
 166     %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyLineShape)"
 
 168     void AddArrow(int type, int end = ARROW_POSITION_END,
 
 169                   double arrowSize = 10.0, double xOffset = 0.0,
 
 170                   char* name = "", wxPseudoMetaFile *mf = NULL,
 
 173     //void AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int end);
 
 175         void AddArrowOrdered(wxArrowHead *arrow, PyObject* referenceList, int end) {
 
 176             wxList* list = wxPy_wxListHelper(referenceList, "_wxArrowHead_p");
 
 177             self->AddArrowOrdered(arrow, *list, end);
 
 181     bool ClearArrow(const wxString& name);
 
 182     void ClearArrowsAtPosition(int position = -1);
 
 183     void DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool proportionalOffset);
 
 184     %name(DeleteArrowHeadId)bool DeleteArrowHead(long arrowId);
 
 185     bool DeleteArrowHead(int position, const wxString& name);
 
 186     bool DeleteLineControlPoint();
 
 187     void DrawArrows(wxDC& dc);
 
 188     void DrawRegion(wxDC& dc, wxShapeRegion *region, double x, double y);
 
 189     void EraseRegion(wxDC& dc, wxShapeRegion *region, double x, double y);
 
 190     %name(FindArrowHeadId)wxArrowHead * FindArrowHead(long arrowId);
 
 191     wxArrowHead * FindArrowHead(int position, const wxString& name);
 
 192     void FindLineEndPoints(double *OUTPUT, double *OUTPUT,
 
 193                            double *OUTPUT, double *OUTPUT);
 
 194     int FindLinePosition(double x, double y);
 
 195     double FindMinimumWidth();
 
 196     void FindNth(wxPyShape *image, int *OUTPUT, int *OUTPUT, bool incoming);
 
 197     int GetAttachmentFrom();
 
 198     int GetAttachmentTo();
 
 199     void GetEnds(double *OUTPUT, double *OUTPUT, double *OUTPUT, double *OUTPUT);
 
 200     wxPyShape * GetFrom();
 
 201     void GetLabelPosition(int position, double *OUTPUT, double *OUTPUT);
 
 202     wxPoint * GetNextControlPoint(wxPyShape *shape);
 
 205     void InsertLineControlPoint(wxDC* dc);
 
 206     bool IsEnd(wxPyShape *shape);
 
 208     void MakeLineControlPoints(int n);
 
 210     void SetAttachmentFrom(int fromAttach);
 
 211     void SetAttachments(int fromAttach, int toAttach);
 
 212     void SetAttachmentTo(int toAttach);
 
 213     void SetEnds(double x1, double y1, double x2, double y2);
 
 214     void SetFrom(wxPyShape *object);
 
 215     void SetIgnoreOffsets(bool ignore);
 
 216     void SetSpline(bool spline);
 
 217     void SetTo(wxPyShape *object);
 
 218     void Straighten(wxDC* dc = NULL);
 
 222     void base_OnDraw(wxDC& dc);
 
 223     void base_OnDrawContents(wxDC& dc);
 
 224     void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
 
 225     void base_OnMoveLinks(wxDC& dc);
 
 226     void base_OnErase(wxDC& dc);
 
 227     void base_OnEraseContents(wxDC& dc);
 
 228     void base_OnHighlight(wxDC& dc);
 
 229     void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
 
 230     void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
 
 231     void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
 
 232     void base_OnSize(double x, double y);
 
 233     bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 234     void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 235     void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 236     void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 237     void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 238     void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 239     void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
 
 240     void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
 
 241     void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
 
 242     void base_OnDrawControlPoints(wxDC& dc);
 
 243     void base_OnEraseControlPoints(wxDC& dc);
 
 244     void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
 
 245     void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
 
 246     void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 247     void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 248     void base_OnBeginSize(double w, double h);
 
 249     void base_OnEndSize(double w, double h);
 
 250 //    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
 
 253 //---------------------------------------------------------------------------
 
 255     WXSHAPE_IMP_CALLBACKS(wxPyPolygonShape, wxPolygonShape);
 
 258 class wxPyPolygonShape : public wxPyShape {
 
 262     void _setSelf(PyObject* self, PyObject* _class);
 
 263     %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyPolygonShape)"
 
 266     // void Create(wxList* points);
 
 268         PyObject* Create(PyObject* points) {
 
 269             wxList* list = wxPy_wxRealPoint_ListHelper(points);
 
 279     void AddPolygonPoint(int pos = 0);
 
 280     void CalculatePolygonCentre();
 
 281     void DeletePolygonPoint(int pos = 0);
 
 283     // wxList* GetPoints();
 
 285         PyObject* GetPoints() {
 
 286             wxList* list = self->GetPoints();
 
 287             return wxPy_ConvertList(list, "wxRealPoint");
 
 291     void UpdateOriginalPoints();
 
 294     void base_OnDraw(wxDC& dc);
 
 295     void base_OnDrawContents(wxDC& dc);
 
 296     void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
 
 297     void base_OnMoveLinks(wxDC& dc);
 
 298     void base_OnErase(wxDC& dc);
 
 299     void base_OnEraseContents(wxDC& dc);
 
 300     void base_OnHighlight(wxDC& dc);
 
 301     void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
 
 302     void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
 
 303     void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
 
 304     void base_OnSize(double x, double y);
 
 305     bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 306     void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 307     void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 308     void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 309     void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 310     void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 311     void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
 
 312     void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
 
 313     void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
 
 314     void base_OnDrawControlPoints(wxDC& dc);
 
 315     void base_OnEraseControlPoints(wxDC& dc);
 
 316     void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
 
 317     void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
 
 318     void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 319     void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 320     void base_OnBeginSize(double w, double h);
 
 321     void base_OnEndSize(double w, double h);
 
 322 //    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
 
 324 //---------------------------------------------------------------------------
 
 326     WXSHAPE_IMP_CALLBACKS(wxPyTextShape, wxTextShape);
 
 329 class wxPyTextShape : public wxPyRectangleShape {
 
 331     wxPyTextShape(double width = 0.0, double height = 0.0);
 
 333     void _setSelf(PyObject* self, PyObject* _class);
 
 334     %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyTextShape)"
 
 337     void base_OnDelete();
 
 338     void base_OnDraw(wxDC& dc);
 
 339     void base_OnDrawContents(wxDC& dc);
 
 340     void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
 
 341     void base_OnMoveLinks(wxDC& dc);
 
 342     void base_OnErase(wxDC& dc);
 
 343     void base_OnEraseContents(wxDC& dc);
 
 344     void base_OnHighlight(wxDC& dc);
 
 345     void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
 
 346     void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
 
 347     void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
 
 348     void base_OnSize(double x, double y);
 
 349     bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 350     void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
 
 351     void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 352     void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 353     void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
 
 354     void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
 
 355     void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
 
 356     void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
 
 357     void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
 
 358     void base_OnDrawControlPoints(wxDC& dc);
 
 359     void base_OnEraseControlPoints(wxDC& dc);
 
 360     void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
 
 361     void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
 
 362     void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 363     void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
 
 364     void base_OnBeginSize(double w, double h);
 
 365     void base_OnEndSize(double w, double h);
 
 366 //    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
 
 369 //---------------------------------------------------------------------------