9416aa89ca
text in the demo for more details of what this means, but in a nutshell methods such as wxWindow.GetParent or FindWindowById will now return a shadow object of the proper type if it can. By "proper type" I mean that if the wxWindow pointer returned from FindWindowById really points to a wxButton then the Python object constructed will be of a wxButtonPtr class instead of wxWindowPtr as before. This should reduce or eliminiate the need for wxPyTypeCast. (Woo Hoo!) The objects returned are still not the original Python object, but that is the next step. (Although it will probably only work on Python 2.1 and beyond because it will use weak references.) A few other minor tweaks and fixes and additions for things found while doing the OOR stuff. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
378 lines
17 KiB
OpenEdge ABL
378 lines
17 KiB
OpenEdge ABL
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: oglshapes2.i
|
|
// Purpose: SWIG definitions for the wxWindows Object Graphics Library
|
|
//
|
|
// Author: Robin Dunn
|
|
//
|
|
// Created: 3-Sept-1999
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 1998 by Total Control Software
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
%module oglshapes2
|
|
|
|
%{
|
|
#include "export.h"
|
|
#include "oglhelpers.h"
|
|
%}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
%include typemaps.i
|
|
%include my_typemaps.i
|
|
|
|
%extern wx.i
|
|
%import windows.i
|
|
%extern _defs.i
|
|
%extern misc.i
|
|
%extern gdi.i
|
|
|
|
%include _ogldefs.i
|
|
|
|
%import oglbasic.i
|
|
%import oglshapes.i
|
|
|
|
|
|
%pragma(python) code = "import wx"
|
|
|
|
//---------------------------------------------------------------------------
|
|
//---------------------------------------------------------------------------
|
|
%{
|
|
WXSHAPE_IMP_CALLBACKS(wxPyEllipseShape, wxEllipseShape);
|
|
%}
|
|
|
|
class wxPyEllipseShape : public wxPyShape {
|
|
public:
|
|
wxPyEllipseShape(double width = 0.0, double height = 0.0);
|
|
|
|
void _setSelf(PyObject* self, PyObject* _class);
|
|
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyEllipseShape)"
|
|
|
|
void base_OnDraw(wxDC& dc);
|
|
void base_OnDrawContents(wxDC& dc);
|
|
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
|
|
void base_OnMoveLinks(wxDC& dc);
|
|
void base_OnErase(wxDC& dc);
|
|
void base_OnEraseContents(wxDC& dc);
|
|
void base_OnHighlight(wxDC& dc);
|
|
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnSize(double x, double y);
|
|
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
|
|
void base_OnDrawControlPoints(wxDC& dc);
|
|
void base_OnEraseControlPoints(wxDC& dc);
|
|
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
|
|
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginSize(double w, double h);
|
|
void base_OnEndSize(double w, double h);
|
|
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
%{
|
|
WXSHAPE_IMP_CALLBACKS(wxPyCircleShape, wxCircleShape);
|
|
%}
|
|
|
|
class wxPyCircleShape : public wxPyEllipseShape {
|
|
public:
|
|
wxPyCircleShape(double width = 0.0);
|
|
|
|
void _setSelf(PyObject* self, PyObject* _class);
|
|
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyCircleShape)"
|
|
|
|
void base_OnDraw(wxDC& dc);
|
|
void base_OnDrawContents(wxDC& dc);
|
|
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
|
|
void base_OnMoveLinks(wxDC& dc);
|
|
void base_OnErase(wxDC& dc);
|
|
void base_OnEraseContents(wxDC& dc);
|
|
void base_OnHighlight(wxDC& dc);
|
|
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnSize(double x, double y);
|
|
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
|
|
void base_OnDrawControlPoints(wxDC& dc);
|
|
void base_OnEraseControlPoints(wxDC& dc);
|
|
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
|
|
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginSize(double w, double h);
|
|
void base_OnEndSize(double w, double h);
|
|
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
//---------------------------------------------------------------------------
|
|
class wxArrowHead : public wxObject {
|
|
public:
|
|
wxArrowHead(int type = 0,
|
|
int end = 0,
|
|
double size = 0.0,
|
|
double dist = 0.0,
|
|
const char * name = "",
|
|
wxPseudoMetaFile *mf = NULL,
|
|
long arrowId = -1);
|
|
~wxArrowHead();
|
|
|
|
int _GetType();
|
|
int GetPosition();
|
|
void SetPosition(int pos);
|
|
double GetXOffset();
|
|
double GetYOffset();
|
|
double GetSpacing();
|
|
double GetSize();
|
|
wxString GetName();
|
|
void SetXOffset(double x);
|
|
void SetYOffset(double y);
|
|
wxPseudoMetaFile *GetMetaFile();
|
|
long GetId();
|
|
int GetArrowEnd();
|
|
double GetArrowSize();
|
|
void SetSize(double size);
|
|
void SetSpacing(double sp);
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
%{
|
|
WXSHAPE_IMP_CALLBACKS(wxPyLineShape, wxLineShape);
|
|
%}
|
|
|
|
class wxPyLineShape : public wxPyShape {
|
|
public:
|
|
wxPyLineShape();
|
|
|
|
void _setSelf(PyObject* self, PyObject* _class);
|
|
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyLineShape)"
|
|
|
|
void AddArrow(int type, int end = ARROW_POSITION_END,
|
|
double arrowSize = 10.0, double xOffset = 0.0,
|
|
char* name = "", wxPseudoMetaFile *mf = NULL,
|
|
long arrowId = -1);
|
|
|
|
//void AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int end);
|
|
%addmethods {
|
|
void AddArrowOrdered(wxArrowHead *arrow, PyObject* referenceList, int end) {
|
|
wxList* list = wxPy_wxListHelper(referenceList, "_wxArrowHead_p");
|
|
self->AddArrowOrdered(arrow, *list, end);
|
|
delete list;
|
|
}
|
|
}
|
|
bool ClearArrow(const wxString& name);
|
|
void ClearArrowsAtPosition(int position = -1);
|
|
void DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool proportionalOffset);
|
|
%name(DeleteArrowHeadId)bool DeleteArrowHead(long arrowId);
|
|
bool DeleteArrowHead(int position, const wxString& name);
|
|
bool DeleteLineControlPoint();
|
|
void DrawArrows(wxDC& dc);
|
|
void DrawRegion(wxDC& dc, wxShapeRegion *region, double x, double y);
|
|
void EraseRegion(wxDC& dc, wxShapeRegion *region, double x, double y);
|
|
%name(FindArrowHeadId)wxArrowHead * FindArrowHead(long arrowId);
|
|
wxArrowHead * FindArrowHead(int position, const wxString& name);
|
|
void FindLineEndPoints(double *OUTPUT, double *OUTPUT,
|
|
double *OUTPUT, double *OUTPUT);
|
|
int FindLinePosition(double x, double y);
|
|
double FindMinimumWidth();
|
|
void FindNth(wxPyShape *image, int *OUTPUT, int *OUTPUT, bool incoming);
|
|
int GetAttachmentFrom();
|
|
int GetAttachmentTo();
|
|
void GetEnds(double *OUTPUT, double *OUTPUT, double *OUTPUT, double *OUTPUT);
|
|
wxPyShape * GetFrom();
|
|
void GetLabelPosition(int position, double *OUTPUT, double *OUTPUT);
|
|
wxPoint * GetNextControlPoint(wxPyShape *shape);
|
|
wxPyShape * GetTo();
|
|
void Initialise();
|
|
void InsertLineControlPoint(wxDC* dc);
|
|
bool IsEnd(wxPyShape *shape);
|
|
bool IsSpline();
|
|
void MakeLineControlPoints(int n);
|
|
|
|
// inline wxList *GetLineControlPoints() { return m_lineControlPoints; }
|
|
%addmethods {
|
|
PyObject* GetLineControlPoints() {
|
|
wxList* list = self->GetLineControlPoints();
|
|
return wxPy_ConvertList(list, "wxPyControlPoint");
|
|
}
|
|
}
|
|
|
|
void SetAttachmentFrom(int fromAttach);
|
|
void SetAttachments(int fromAttach, int toAttach);
|
|
void SetAttachmentTo(int toAttach);
|
|
void SetEnds(double x1, double y1, double x2, double y2);
|
|
void SetFrom(wxPyShape *object);
|
|
void SetIgnoreOffsets(bool ignore);
|
|
void SetSpline(bool spline);
|
|
void SetTo(wxPyShape *object);
|
|
void Straighten(wxDC* dc = NULL);
|
|
void Unlink();
|
|
|
|
|
|
void base_OnDraw(wxDC& dc);
|
|
void base_OnDrawContents(wxDC& dc);
|
|
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
|
|
void base_OnMoveLinks(wxDC& dc);
|
|
void base_OnErase(wxDC& dc);
|
|
void base_OnEraseContents(wxDC& dc);
|
|
void base_OnHighlight(wxDC& dc);
|
|
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnSize(double x, double y);
|
|
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
|
|
void base_OnDrawControlPoints(wxDC& dc);
|
|
void base_OnEraseControlPoints(wxDC& dc);
|
|
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
|
|
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginSize(double w, double h);
|
|
void base_OnEndSize(double w, double h);
|
|
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
%{
|
|
WXSHAPE_IMP_CALLBACKS(wxPyPolygonShape, wxPolygonShape);
|
|
%}
|
|
|
|
class wxPyPolygonShape : public wxPyShape {
|
|
public:
|
|
wxPyPolygonShape();
|
|
|
|
void _setSelf(PyObject* self, PyObject* _class);
|
|
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyPolygonShape)"
|
|
|
|
|
|
// void Create(wxList* points);
|
|
%addmethods {
|
|
PyObject* Create(PyObject* points) {
|
|
wxList* list = wxPy_wxRealPoint_ListHelper(points);
|
|
if (list) {
|
|
self->Create(list);
|
|
Py_INCREF(Py_None);
|
|
return Py_None;
|
|
}
|
|
else return NULL;
|
|
}
|
|
}
|
|
|
|
void AddPolygonPoint(int pos = 0);
|
|
void CalculatePolygonCentre();
|
|
void DeletePolygonPoint(int pos = 0);
|
|
|
|
// wxList* GetPoints();
|
|
%addmethods {
|
|
PyObject* GetPoints() {
|
|
wxList* list = self->GetPoints();
|
|
return wxPy_ConvertList(list, "wxRealPoint");
|
|
}
|
|
}
|
|
|
|
void UpdateOriginalPoints();
|
|
|
|
|
|
void base_OnDraw(wxDC& dc);
|
|
void base_OnDrawContents(wxDC& dc);
|
|
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
|
|
void base_OnMoveLinks(wxDC& dc);
|
|
void base_OnErase(wxDC& dc);
|
|
void base_OnEraseContents(wxDC& dc);
|
|
void base_OnHighlight(wxDC& dc);
|
|
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnSize(double x, double y);
|
|
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
|
|
void base_OnDrawControlPoints(wxDC& dc);
|
|
void base_OnEraseControlPoints(wxDC& dc);
|
|
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
|
|
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginSize(double w, double h);
|
|
void base_OnEndSize(double w, double h);
|
|
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
%{
|
|
WXSHAPE_IMP_CALLBACKS(wxPyTextShape, wxTextShape);
|
|
%}
|
|
|
|
class wxPyTextShape : public wxPyRectangleShape {
|
|
public:
|
|
wxPyTextShape(double width = 0.0, double height = 0.0);
|
|
|
|
void _setSelf(PyObject* self, PyObject* _class);
|
|
%pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyTextShape)"
|
|
|
|
|
|
void base_OnDelete();
|
|
void base_OnDraw(wxDC& dc);
|
|
void base_OnDrawContents(wxDC& dc);
|
|
void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
|
|
void base_OnMoveLinks(wxDC& dc);
|
|
void base_OnErase(wxDC& dc);
|
|
void base_OnEraseContents(wxDC& dc);
|
|
void base_OnHighlight(wxDC& dc);
|
|
void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
|
|
void base_OnSize(double x, double y);
|
|
bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
|
|
void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
|
|
void base_OnDrawControlPoints(wxDC& dc);
|
|
void base_OnEraseControlPoints(wxDC& dc);
|
|
void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
|
|
void base_OnSizingDragLeft(wxPyControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingBeginDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnSizingEndDragLeft(wxPyControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
|
|
void base_OnBeginSize(double w, double h);
|
|
void base_OnEndSize(double w, double h);
|
|
// void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
|
|
|
|
};
|
|
//---------------------------------------------------------------------------
|