.. wxPython Phoenix documentation
This file was generated by Phoenix's sphinx generator and associated
tools, do not edit by hand.
Copyright: (c) 2011-2020 by Total Control Software
License: wxWindows License
.. include:: headings.inc
.. currentmodule:: wx.lib.ogl.lines
.. highlight:: python
.. _wx.lib.ogl.lines.LineShape:
==========================================================================================================================================
|phoenix_title| **wx.lib.ogl.lines.LineShape**
==========================================================================================================================================
The LineShape class may be attached to two nodes, it may be segmented,
in which case a control point is drawn for each joint.
A :class:`LineShape` may have arrows at the beginning, end and centre.
|
|class_hierarchy| Class Hierarchy
=================================
.. raw:: html

Inheritance diagram for class
LineShape:
|
|super_classes| Known Superclasses
==================================
:class:`wx.lib.ogl.basic.Shape`
|
|method_summary| Methods Summary
================================
================================================================================ ================================================================================
:meth:`~wx.lib.ogl.lines.LineShape.__init__` Default class constructor.
:meth:`~wx.lib.ogl.lines.LineShape.AddArrow` Add an arrow (or annotation) to the line.
:meth:`~wx.lib.ogl.lines.LineShape.AddArrowOrdered` Add an arrowhead in the position indicated by the reference list
:meth:`~wx.lib.ogl.lines.LineShape.ClearArrow` Delete the arrow with the given name.
:meth:`~wx.lib.ogl.lines.LineShape.ClearArrowsAtPosition` Delete the arrows at the specified position, or at any position if position is -1.
:meth:`~wx.lib.ogl.lines.LineShape.Delete` Delete the line, unlink it first.
:meth:`~wx.lib.ogl.lines.LineShape.DeleteArrowHead` Delete arrowhead by position and name.
:meth:`~wx.lib.ogl.lines.LineShape.DeleteArrowHeadId` Delete arrowhead by id.
:meth:`~wx.lib.ogl.lines.LineShape.DeleteLineControlPoint` Delete an arbitrary point on the line.
:meth:`~wx.lib.ogl.lines.LineShape.Draggable` Line is not draggable.
:meth:`~wx.lib.ogl.lines.LineShape.DrawArrow` Draw the given arrowhead (or annotation).
:meth:`~wx.lib.ogl.lines.LineShape.DrawArrows` Draw all arrows.
:meth:`~wx.lib.ogl.lines.LineShape.DrawRegion` Format one region at this position.
:meth:`~wx.lib.ogl.lines.LineShape.EraseRegion` Erase one region at this position.
:meth:`~wx.lib.ogl.lines.LineShape.FindArrowHead` Find arrowhead by position and name.
:meth:`~wx.lib.ogl.lines.LineShape.FindArrowHeadId` Find arrowhead by id.
:meth:`~wx.lib.ogl.lines.LineShape.FindLineEndPoints` Finds the x, y points at the two ends of the line.
:meth:`~wx.lib.ogl.lines.LineShape.FindLinePosition` Find which position we're talking about.
:meth:`~wx.lib.ogl.lines.LineShape.FindMinimumWidth` Find the horizontal width for drawing a line with arrows in
:meth:`~wx.lib.ogl.lines.LineShape.FindNth` Find the position of the line on the given object.
:meth:`~wx.lib.ogl.lines.LineShape.FormatText` Format a text string according to the region size, adding
:meth:`~wx.lib.ogl.lines.LineShape.GetAlignmentEnd` Get alignment end.
:meth:`~wx.lib.ogl.lines.LineShape.GetAlignmentOrientation` Get the alignment orientation.
:meth:`~wx.lib.ogl.lines.LineShape.GetAlignmentStart` Get alignment start
:meth:`~wx.lib.ogl.lines.LineShape.GetAlignmentType` Get the alignment type.
:meth:`~wx.lib.ogl.lines.LineShape.GetArrows` Get the defined arrows.
:meth:`~wx.lib.ogl.lines.LineShape.GetAttachmentFrom` Get the attachment point on the 'from' node.
:meth:`~wx.lib.ogl.lines.LineShape.GetAttachmentTo` Get the attachment point on the 'to' node.
:meth:`~wx.lib.ogl.lines.LineShape.GetBoundingBoxMin` Get the minimum bounding box.
:meth:`~wx.lib.ogl.lines.LineShape.GetEnds` Get the visible endpoints of the lines for drawing between two objects.
:meth:`~wx.lib.ogl.lines.LineShape.GetFrom` Get the 'from' object.
:meth:`~wx.lib.ogl.lines.LineShape.GetLabelPosition` Get the reference point for a label.
:meth:`~wx.lib.ogl.lines.LineShape.GetLineControlPoints` Get the line control points.
:meth:`~wx.lib.ogl.lines.LineShape.GetNextControlPoint` Find the next control point in the line after the start / end point,
:meth:`~wx.lib.ogl.lines.LineShape.GetTo` Get the 'to' object.
:meth:`~wx.lib.ogl.lines.LineShape.HitTest` Line hit test.
:meth:`~wx.lib.ogl.lines.LineShape.Initialise` Initialise the line object.
:meth:`~wx.lib.ogl.lines.LineShape.InsertLineControlPoint` Insert a control point at an optional given position.
:meth:`~wx.lib.ogl.lines.LineShape.IsEnd` `True` if shape is at the end of the line.
:meth:`~wx.lib.ogl.lines.LineShape.IsSpline` If `True` a spline is drawn through the control points.
:meth:`~wx.lib.ogl.lines.LineShape.MakeControlPoints` Make handle control points.
:meth:`~wx.lib.ogl.lines.LineShape.MakeLineControlPoints` Make a given number of control points.
:meth:`~wx.lib.ogl.lines.LineShape.OnBeginDragLeft` not implemented???
:meth:`~wx.lib.ogl.lines.LineShape.OnCreateLabelShape` Create label shape handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnDragLeft` not implemented???
:meth:`~wx.lib.ogl.lines.LineShape.OnDraw` The draw handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnDrawContents` The draw contents handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnDrawControlPoints` The draw control points handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnDrawOutline` The draw outline handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnEndDragLeft` not implemented???
:meth:`~wx.lib.ogl.lines.LineShape.OnErase` The erase handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnEraseControlPoints` The erase control points handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnLabelMovePre` Label move 'pre' handler. ???
:meth:`~wx.lib.ogl.lines.LineShape.OnMoveLink` The move link handler, called when a connected object has moved, to move the link to
:meth:`~wx.lib.ogl.lines.LineShape.OnMoveMiddleControlPoint` The move middle control point handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnMovePre` The move 'pre' handler. ???
:meth:`~wx.lib.ogl.lines.LineShape.OnSizingBeginDragLeft` The sizing begin drag left handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnSizingDragLeft` The sizing drag left handler.
:meth:`~wx.lib.ogl.lines.LineShape.OnSizingEndDragLeft` The sizing end drag left handler.
:meth:`~wx.lib.ogl.lines.LineShape.ResetControlPoints` Reset the control points.
:meth:`~wx.lib.ogl.lines.LineShape.Select` Overridden select, to create / delete temporary label-moving objects.
:meth:`~wx.lib.ogl.lines.LineShape.SetAlignmentOrientation` Set the alignment orientation.
:meth:`~wx.lib.ogl.lines.LineShape.SetAlignmentType` Set the alignment type.
:meth:`~wx.lib.ogl.lines.LineShape.SetAttachmentFrom` Set the 'from' shape attachment.
:meth:`~wx.lib.ogl.lines.LineShape.SetAttachments` Specify which object attachment points should be used at each end of the line.
:meth:`~wx.lib.ogl.lines.LineShape.SetAttachmentTo` Set the 'to' shape attachment.
:meth:`~wx.lib.ogl.lines.LineShape.SetEnds` Set the end positions of the line.
:meth:`~wx.lib.ogl.lines.LineShape.SetFrom` Set the 'from' object for the line.
:meth:`~wx.lib.ogl.lines.LineShape.SetIgnoreOffsets` Set whether to ignore offsets from the end of the line when drawing.
:meth:`~wx.lib.ogl.lines.LineShape.SetSpline` Specifies whether a spline is to be drawn through the control points.
:meth:`~wx.lib.ogl.lines.LineShape.SetTo` Set the 'to' object for the line.
:meth:`~wx.lib.ogl.lines.LineShape.Straighten` Straighten verticals and horizontals.
:meth:`~wx.lib.ogl.lines.LineShape.Unlink` Unlink the line from the nodes at either end.
================================================================================ ================================================================================
|
|api| Class API
===============
.. class:: LineShape(Shape)
The LineShape class may be attached to two nodes, it may be segmented,
in which case a control point is drawn for each joint.
A :class:`LineShape` may have arrows at the beginning, end and centre.
.. method:: __init__(self)
Default class constructor.
.. method:: AddArrow(self, type, end = ARROW_POSITION_END, size = 10.0, xOffset = 0.0, name = "", mf = None, arrowId = -1)
Add an arrow (or annotation) to the line.
:param `type`: an arrow head type, one of the following
======================================== ==================================
Arrow head type Description
======================================== ==================================
`ARROW_HOLLOW_CIRCLE` a hollow circle
`ARROW_FILLED_CIRCLE` a filled circle
`ARROW_ARROW` an arrow
`ARROW_SINGLE_OBLIQUE` a single oblique
`ARROW_DOUBLE_OBLIQUE` a double oblique
`ARROW_METAFILE` custom, define in metafile
======================================== ==================================
:param `end`: may be one of the following
======================================== ==================================
Arrow head type Description
======================================== ==================================
`ARROW_POSITION_END` arrow appears at the end
`ARROW_POSITION_START` arrow appears at the start
======================================== ==================================
:param `size`: specifies the length of the arrow
:param `xOffset`: specifies the offset from the end of the line
:param `name`: specifies a name
:param `mf`: mf can be a wxPseduoMetaFile, perhaps loaded from a simple Windows
metafile.
:param `arrowId`: the id for the arrow
.. method:: AddArrowOrdered(self, arrow, referenceList, end)
Add an arrowhead in the position indicated by the reference list
of arrowheads, which contains all legal arrowheads for this line, in
the correct order. E.g.
Reference list: a b c d e
Current line list: a d
Add c, then line list is: a c d.
If no legal arrowhead position, return FALSE. Assume reference list
is for one end only, since it potentially defines the ordering for
any one of the 3 positions. So we don't check the reference list for
arrowhead position.
:param `arrow`: an instance of :class:`ArrowHead`
:param `referenceList`: ???
:param `end`: ???
.. method:: ClearArrow(self, name)
Delete the arrow with the given name.
:param `name`: name of arrow to delete
.. method:: ClearArrowsAtPosition(self, end)
Delete the arrows at the specified position, or at any position if position is -1.
:param `end`: position to clear arrow from
.. method:: Delete(self)
Delete the line, unlink it first.
.. method:: DeleteArrowHead(self, position, name)
Delete arrowhead by position and name.
if position is -1, matches any position.
:param `position`: position of arrow to delete or -1
:param `name`: name of arrow to delete
.. method:: DeleteArrowHeadId(self, arrowId)
Delete arrowhead by id.
:param `arrowId`: id of arrow to delete
.. method:: DeleteLineControlPoint(self)
Delete an arbitrary point on the line.
.. method:: Draggable(self)
Line is not draggable.
.. note:: This is really to distinguish between lines and other images.
For lines we want to pass drag to canvas, since lines tend to prevent
dragging on a canvas (they get in the way.)
.. method:: DrawArrow(self, dc, arrow, XOffset, proportionalOffset)
Draw the given arrowhead (or annotation).
:param `dc`: an instance of :class:`wx.MemoryDC`
:param `arrow`: an instannce of :class:`ArrowHead`
:param `XOffset`: the x offset ???
:param `proportionalOffset`: ???
.. method:: DrawArrows(self, dc)
Draw all arrows.
.. method:: DrawRegion(self, dc, region, x, y)
Format one region at this position.
:param `dc`: an instance of :class:`wx.MemoryDC`
:param `dc`: an instance of :class:`~lib.ogl.ShapeRegion`
:param `x`: the x position
:param `y`: the y position
.. method:: EraseRegion(self, dc, region, x, y)
Erase one region at this position.
:param `dc`: an instance of :class:`wx.MemoryDC`
:param `dc`: an instance of :class:`~lib.ogl.ShapeRegion`
:param `x`: the x position
:param `y`: the y position
.. method:: FindArrowHead(self, position, name)
Find arrowhead by position and name.
if position is -1, matches any position.
:param `position`: position of arrow to find or -1
:param `name`: name of arrow to find
.. method:: FindArrowHeadId(self, arrowId)
Find arrowhead by id.
:param `arrowId`: id of arrow to find
.. method:: FindLineEndPoints(self)
Finds the x, y points at the two ends of the line.
This function can be used by e.g. line-routing routines to
get the actual points on the two node images where the lines will be
drawn to / from.
.. method:: FindLinePosition(self, x, y)
Find which position we're talking about.
:param `x`: x position
:param `y`: y position
:returns: ARROW_POSITION_START or ARROW_POSITION_MIDDLE or ARROW_POSITION_END.
.. method:: FindMinimumWidth(self)
Find the horizontal width for drawing a line with arrows in
minimum space. Assume arrows at end only.
.. method:: FindNth(self, image, incoming)
Find the position of the line on the given object.
Specify whether incoming or outgoing lines are being considered
with incoming.
:param `image`: a node image
:param `incoming`: ``True`` to get incoming lines ???
:returns: nth line, number of lines ???
.. method:: FormatText(self, dc, s, i)
Format a text string according to the region size, adding
strings with positions to region text list.
:param `dc`: an instance of :class:`wx.MemoryDC`
:param str `s`: the text string
:param int `i`: index to the region to be used???
.. method:: GetAlignmentEnd(self)
Get alignment end.
.. method:: GetAlignmentOrientation(self, isEnd)
Get the alignment orientation.
:param `isEnd`: if ``True`` get the type for the begin, else for the end ???
.. method:: GetAlignmentStart(self)
Get alignment start
.. method:: GetAlignmentType(self, isEnd)
Get the alignment type.
:param `isEnd`: if ``True`` get the type for the begin, else for the end ???
.. method:: GetArrows(self)
Get the defined arrows.
.. method:: GetAttachmentFrom(self)
Get the attachment point on the 'from' node.
.. method:: GetAttachmentTo(self)
Get the attachment point on the 'to' node.
.. method:: GetBoundingBoxMin(self)
Get the minimum bounding box.
.. method:: GetEnds(self)
Get the visible endpoints of the lines for drawing between two objects.
.. method:: GetFrom(self)
Get the 'from' object.
.. method:: GetLabelPosition(self, position)
Get the reference point for a label.
:param `position`: 0 = middle, 1 = start, 2 = end, Region x and y are offsets from this.
.. method:: GetLineControlPoints(self)
Get the line control points.
.. method:: GetNextControlPoint(self, shape)
Find the next control point in the line after the start / end point,
depending on whether the shape is at the start or end.
:param `shape`: an instance of :class:`~lib.ogl.Shape` ???
.. method:: GetTo(self)
Get the 'to' object.
.. method:: HitTest(self, x, y)
Line hit test.
:param `x`: x position
:param `y`: y position
.. method:: Initialise(self)
Initialise the line object.
.. method:: InsertLineControlPoint(self, dc = None, point = None)
Insert a control point at an optional given position.
:param `dc`: an instance of :class:`wx.MemoryDC`
:param `point`: an optional point, otherwise will use _lineControlPoints
.. method:: IsEnd(self, nodeObject)
`True` if shape is at the end of the line.
.. method:: IsSpline(self)
If `True` a spline is drawn through the control points.
.. method:: MakeControlPoints(self)
Make handle control points.
.. method:: MakeLineControlPoints(self, n)
Make a given number of control points.
:param int `n`: number of control points, minimum of two
.. method:: OnBeginDragLeft(self, x, y, keys = 0, attachment = 0)
not implemented???
.. method:: OnCreateLabelShape(self, parent, region, w, h)
Create label shape handler.
.. method:: OnDragLeft(self, draw, x, y, keys = 0, attachment = 0)
not implemented???
.. method:: OnDraw(self, dc)
The draw handler.
.. method:: OnDrawContents(self, dc)
The draw contents handler.
.. method:: OnDrawControlPoints(self, dc)
The draw control points handler.
.. method:: OnDrawOutline(self, dc, x, y, w, h)
The draw outline handler.
.. method:: OnEndDragLeft(self, x, y, keys = 0, attachment = 0)
not implemented???
.. method:: OnErase(self, dc)
The erase handler.
.. method:: OnEraseControlPoints(self, dc)
The erase control points handler.
.. method:: OnLabelMovePre(self, dc, labelShape, x, y, old_x, old_y, display)
Label move 'pre' handler. ???
.. method:: OnMoveLink(self, dc, moveControlPoints = True)
The move link handler, called when a connected object has moved, to move the link to
correct position.
.. method:: OnMoveMiddleControlPoint(self, dc, lpt, pt)
The move middle control point handler.
.. method:: OnMovePre(self, dc, x, y, old_x, old_y, display = True)
The move 'pre' handler. ???
.. method:: OnSizingBeginDragLeft(self, pt, x, y, keys = 0, attachment = 0)
The sizing begin drag left handler.
.. method:: OnSizingDragLeft(self, pt, draw, x, y, keys = 0, attachment = 0)
The sizing drag left handler.
.. method:: OnSizingEndDragLeft(self, pt, x, y, keys = 0, attachment = 0)
The sizing end drag left handler.
.. method:: ResetControlPoints(self)
Reset the control points.
.. method:: Select(self, select, dc = None)
Overridden select, to create / delete temporary label-moving objects.
.. method:: SetAlignmentOrientation(self, isEnd, isHoriz)
Set the alignment orientation.
:param `isEnd`: ``True`` or ``False`` ???
:param `isHoriz`: ``True`` of ``False`` ???
.. method:: SetAlignmentType(self, isEnd, alignType)
Set the alignment type.
:param `isEnd`: if ``True`` set the type for the begin, else for the end ???
:param `alignType`: one of the following
======================================== ==================================
Arrow head type Description
======================================== ==================================
`LINE_ALIGNMENT_HORIZ` Align horizontally
`LINE_ALIGNMENT_VERT` Align vertically
`LINE_ALIGNMENT_TO_NEXT_HANDLE` Align to next handle
`LINE_ALIGNMENT_NONE` vertical by default
======================================== ==================================
.. method:: SetAttachmentFrom(self, attach)
Set the 'from' shape attachment.
.. method:: SetAttachments(self, from_attach, to_attach)
Specify which object attachment points should be used at each end of the line.
:param `from_attach`: the from points ???
:param `to_attach`: the to points ???
.. method:: SetAttachmentTo(self, attach)
Set the 'to' shape attachment.
.. method:: SetEnds(self, x1, y1, x2, y2)
Set the end positions of the line.
:param: `x1`: x1 position
:param: `y1`: y1 position
:param: `x2`: x2 position
:param: `y2`: y2 position
.. method:: SetFrom(self, object)
Set the 'from' object for the line.
.. method:: SetIgnoreOffsets(self, ignore)
Set whether to ignore offsets from the end of the line when drawing.
.. method:: SetSpline(self, spline)
Specifies whether a spline is to be drawn through the control points.
:param boolean `spline`: ``True`` draw a spline through control points.
.. method:: SetTo(self, object)
Set the 'to' object for the line.
.. method:: Straighten(self, dc = None)
Straighten verticals and horizontals.
:param `dc`: an instance of :class:`wx.MemoryDC` or None
.. method:: Unlink(self)
Unlink the line from the nodes at either end.