///////////////////////////////////////////////////////////////////////////// // Name: oglbasic.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 ///////////////////////////////////////////////////////////////////////////// // Not a %module //--------------------------------------------------------------------------- %newgroup; class wxShapeRegion : public wxObject { public: wxShapeRegion(); //~wxShapeRegion(); void SetText(const wxString& s); void SetFont(wxFont *f); void SetMinSize(double w, double h); void SetSize(double w, double h); void SetPosition(double x, double y); void SetProportions(double x, double y); void SetFormatMode(int mode); void SetName(const wxString& s); void SetColour(const wxString& col); wxString GetText(); wxFont *GetFont(); void GetMinSize(double *OUTPUT, double *OUTPUT); void GetProportion(double *OUTPUT, double *OUTPUT); void GetSize(double *OUTPUT, double *OUTPUT); void GetPosition(double *OUTPUT, double *OUTPUT); int GetFormatMode(); wxString GetName(); wxString GetColour(); wxColour GetActualColourObject(); wxList& GetFormattedText(); wxString GetPenColour(); int GetPenStyle(); void SetPenStyle(int style); void SetPenColour(const wxString& col); wxPen *GetActualPen(); double GetWidth(); double GetHeight(); void ClearText(); }; //--------------------------------------------------------------------------- /* * User-defined attachment point */ class wxAttachmentPoint: public wxObject { public: wxAttachmentPoint(int id=0, double x=0.0, double y=0.0); int m_id; // Identifier double m_x; // x offset from centre of object double m_y; // y offset from centre of object }; //--------------------------------------------------------------------------- %{ WXSHAPE_IMP_CALLBACKS(wxPyShapeEvtHandler,wxShapeEvtHandler); %} class wxPyShapeEvtHandler : public wxObject { public: %pythonAppend wxPyShapeEvtHandler "self._setOORandCallbackInfo(PyShapeEvtHandler)" wxPyShapeEvtHandler(wxPyShapeEvtHandler *prev = NULL, wxPyShape *shape = NULL); void _setCallbackInfo(PyObject* self, PyObject* _class); %extend { void _setOORInfo(PyObject* _self) { self->SetClientObject(new wxPyOORClientData(_self)); } } %pythoncode { def _setOORandCallbackInfo(self, _class): self._setOORInfo(self) self._setCallbackInfo(self, _class) } void SetShape(wxPyShape *sh); wxPyShape *GetShape(); void SetPreviousHandler(wxPyShapeEvtHandler* handler); wxPyShapeEvtHandler* GetPreviousHandler(); wxPyShapeEvtHandler* CreateNewCopy(); 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); }; //--------------------------------------------------------------------------- %{ WXSHAPE_IMP_CALLBACKS(wxPyShape, wxShape); %} class wxPyShape : public wxPyShapeEvtHandler { public: %pythonAppend wxPyShape "self._setOORandCallbackInfo(PyShape)" wxPyShape(wxPyShapeCanvas *can = NULL); void _setCallbackInfo(PyObject* self, PyObject* _class); void GetBoundingBoxMax(double *OUTPUT, double *OUTPUT); void GetBoundingBoxMin(double *OUTPUT, double *OUTPUT); bool GetPerimeterPoint(double x1, double y1, double x2, double y2, double *OUTPUT, double *OUTPUT); wxPyShapeCanvas *GetCanvas(); void SetCanvas(wxPyShapeCanvas *the_canvas); void AddToCanvas(wxPyShapeCanvas *the_canvas, wxPyShape *addAfter = NULL); void InsertInCanvas(wxPyShapeCanvas *the_canvas); void RemoveFromCanvas(wxPyShapeCanvas *the_canvas); double GetX(); double GetY(); void SetX(double x); void SetY(double y); wxPyShape *GetParent(); void SetParent(wxPyShape *p); wxPyShape *GetTopAncestor(); // wxList& GetChildren(); %extend { PyObject* GetChildren() { wxList& list = self->GetChildren(); return wxPy_ConvertShapeList(&list); } } void Unlink(); void SetDrawHandles(bool drawH); bool GetDrawHandles(); void MakeControlPoints(); void DeleteControlPoints(wxDC *dc = NULL); void ResetControlPoints(); wxPyShapeEvtHandler *GetEventHandler(); void SetEventHandler(wxPyShapeEvtHandler *handler); void MakeMandatoryControlPoints(); void ResetMandatoryControlPoints(); bool Recompute(); void CalculateSize(); void Select(bool select = True, wxDC* dc = NULL); void SetHighlight(bool hi = True, bool recurse = False); bool IsHighlighted() ; bool Selected(); bool AncestorSelected(); void SetSensitivityFilter(int sens = OP_ALL, bool recursive = False); int GetSensitivityFilter(); void SetDraggable(bool drag, bool recursive = False); void SetFixedSize(bool x, bool y); void GetFixedSize(bool *OUTPUT, bool *OUTPUT) ; bool GetFixedWidth(); bool GetFixedHeight(); void SetSpaceAttachments(bool sp); bool GetSpaceAttachments() ; void SetShadowMode(int mode, bool redraw = False); int GetShadowMode(); bool HitTest(double x, double y, int *OUTPUT, double *OUTPUT); void SetCentreResize(bool cr); bool GetCentreResize(); void SetMaintainAspectRatio(bool ar); bool GetMaintainAspectRatio(); // wxList& GetLines(); %extend { PyObject* GetLines() { wxList& list = self->GetLines(); return wxPy_ConvertShapeList(&list); } } void SetDisableLabel(bool flag); bool GetDisableLabel(); void SetAttachmentMode(int mode); int GetAttachmentMode(); void SetId(long i); long GetId(); void SetPen(wxPen *pen); void SetBrush(wxBrush *brush); // void SetClientData(wxObject *client_data); // wxObject *GetClientData(); // The real client data methods are being used for OOR, so just fake it. %pythoncode { def SetClientData(self, data): self.clientData = data def GetClientData(self): if hasattr(self, 'clientData'): return self.clientData else: return None } void Show(bool show); bool IsShown(); void Move(wxDC& dc, double x1, double y1, bool display = True); void Erase(wxDC& dc); void EraseContents(wxDC& dc); void Draw(wxDC& dc); void Flash(); void MoveLinks(wxDC& dc); void DrawContents(wxDC& dc); void SetSize(double x, double y, bool recursive = True); void SetAttachmentSize(double x, double y); void Attach(wxPyShapeCanvas *can); void Detach(); bool Constrain(); void AddLine(wxPyLineShape *line, wxPyShape *other, int attachFrom = 0, int attachTo = 0, int positionFrom = -1, int positionTo = -1); int GetLinePosition(wxPyLineShape* line); void AddText(const wxString& string); wxPen *GetPen(); wxBrush *GetBrush(); void SetDefaultRegionSize(); void FormatText(wxDC& dc, const wxString& s, int regionId = 0); void SetFormatMode(int mode, int regionId = 0); int GetFormatMode(int regionId = 0); void SetFont(wxFont *font, int regionId = 0); wxFont *GetFont(int regionId = 0); void SetTextColour(const wxString& colour, int regionId = 0); wxString GetTextColour(int regionId = 0); int GetNumberOfTextRegions(); void SetRegionName(const wxString& name, int regionId = 0); wxString GetRegionName(int regionId); int GetRegionId(const wxString& name); void NameRegions(const wxString& parentName = wxPyEmptyString); // wxList& GetRegions(); %extend { PyObject* GetRegions() { wxList& list = self->GetRegions(); return wxPy_ConvertList(&list); } } void AddRegion(wxShapeRegion *region); void ClearRegions(); void AssignNewIds(); wxPyShape *FindRegion(const wxString& regionName, int *OUTPUT); void FindRegionNames(wxStringList& list); void ClearText(int regionId = 0); void RemoveLine(wxPyLineShape *line); #ifdef wxUSE_PROLOGIO void WriteAttributes(wxExpr *clause); void ReadAttributes(wxExpr *clause); void ReadConstraints(wxExpr *clause, wxExprDatabase *database); void WriteRegions(wxExpr *clause); void ReadRegions(wxExpr *clause); #endif bool GetAttachmentPosition(int attachment, double *OUTPUT, double *OUTPUT, int nth = 0, int no_arcs = 1, wxPyLineShape *line = NULL); int GetNumberOfAttachments(); bool AttachmentIsValid(int attachment); %extend { PyObject* GetAttachments() { wxList& list = self->GetAttachments(); return wxPy_ConvertList(&list); } } bool GetAttachmentPositionEdge(int attachment, double *OUTPUT, double *OUTPUT, int nth = 0, int no_arcs = 1, wxPyLineShape *line = NULL); wxRealPoint CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2, int nth, int noArcs, wxPyLineShape* line); bool AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2); void EraseLinks(wxDC& dc, int attachment = -1, bool recurse = False); void DrawLinks(wxDC& dc, int attachment = -1, bool recurse = False); bool MoveLineToNewAttachment(wxDC& dc, wxPyLineShape *to_move, double x, double y); //void ApplyAttachmentOrdering(wxList& linesToSort); %extend { void ApplyAttachmentOrdering(PyObject* linesToSort) { wxList* list = wxPy_wxListHelper(linesToSort, wxT("wxPyLineShape")); self->ApplyAttachmentOrdering(*list); delete list; } } wxRealPoint GetBranchingAttachmentRoot(int attachment); bool GetBranchingAttachmentInfo(int attachment, wxRealPoint& root, wxRealPoint& neck, wxRealPoint& shoulder1, wxRealPoint& shoulder2); bool GetBranchingAttachmentPoint(int attachment, int n, wxRealPoint& attachmentPoint, wxRealPoint& stemPoint); int GetAttachmentLineCount(int attachment); void SetBranchNeckLength(int len); int GetBranchNeckLength(); void SetBranchStemLength(int len); int GetBranchStemLength(); void SetBranchSpacing(int len); int GetBranchSpacing(); void SetBranchStyle(long style); long GetBranchStyle(); int PhysicalToLogicalAttachment(int physicalAttachment); int LogicalToPhysicalAttachment(int logicalAttachment); bool Draggable(); bool HasDescendant(wxPyShape *image); wxPyShape *CreateNewCopy(bool resetMapping = True, bool recompute = True); void Copy(wxPyShape& copy); void CopyWithHandler(wxPyShape& copy); void Rotate(double x, double y, double theta); double GetRotation(); void SetRotation(double rotation); void ClearAttachments(); void Recentre(wxDC& dc); void ClearPointList(wxList& list); wxPen GetBackgroundPen(); wxBrush GetBackgroundBrush(); 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); }; //---------------------------------------------------------------------------