22 from qtcanvas
import *
28 dispatcher=pilot.Dispatcher.getDispatcher()
31 """A text in a composite object"""
33 QCanvasText.__init__(self,canvas)
37 """The composite object which contains the text"""
40 """Request the text move by x,y"""
49 QCanvasText.moveBy(self,dx,dy)
51 """The canvas item has been selected"""
57 """Create a point contained in a composite line (obj)"""
58 QCanvasEllipse.__init__(self,6,6,canvas)
63 self.setPen(QPen(Qt.black))
64 self.setBrush(QBrush(Qt.red))
71 if inline.z() >= self.z():
72 self.setZ(inline.z()+1)
75 if outline.z() >= self.z():
76 self.setZ(outline.z()+1)
79 """Request the point move by x,y"""
84 QCanvasEllipse.moveBy(self,dx,dy)
86 self.
outlineoutline.setFromPoint( int(self.x()), int(self.y()) )
88 self.
inlineinline.setToPoint( int(self.x()), int(self.y()) )
91 """The object which contains the point"""
95 self.
objobj.deletePoint(self,pos)
101 """To remove from canvas"""
108 """The canvas item has been selected"""
111 """A line between 2 points"""
113 QCanvasLine.__init__(self,canvas)
118 self.setPen(QPen(Qt.black))
119 self.setBrush(QBrush(Qt.red))
120 self.setPoints(int(fromPoint.x()),int(fromPoint.y()), int(toPoint.x()), int(toPoint.y()))
121 self.setZ(min(fromPoint.z(),toPoint.z())-1)
122 self.setVisible(
True)
123 self.
arrowarrow = QCanvasPolygon(self.canvas())
124 self.
arrowarrow.setBrush(QBrush(Qt.black))
126 self.
arrowarrow.show()
129 self.setPoints(x,y,self.endPoint().x(),self.endPoint().y())
132 self.setPoints(self.startPoint().x(), self.startPoint().y(),x,y)
135 """Disable line move"""
139 x1,y1=self.startPoint().x(),self.startPoint().y()
140 x2,y2=self.endPoint().x(),self.endPoint().y()
141 d=math.hypot(x2-x1,y2-y1)
148 pa.setPoint(0, QPoint(x+l*cosa,y+l*sina))
149 pa.setPoint(1, QPoint(x-e*sina,y+e*cosa))
150 pa.setPoint(2, QPoint(x+e*sina,y-e*cosa))
151 self.arrow.setPoints(pa)
154 """The object which contains the line"""
158 self.
objobj.splitline(self,pos)
164 """To remove from canvas"""
169 self.
arrowarrow.setCanvas(
None)
173 """The canvas item has been selected"""
181 fromPort.addOutLink(self)
182 toPort.addInLink(self)
185 self.
lineslines.append(
LineItem(self,fromPort, toPort,canvas))
188 """Delete intermediate point"""
189 if point
not in self.
pointspoints:
191 self.
pointspoints.remove(point)
193 outline=point.outline
194 inline.toPoint=outline.toPoint
195 inline.setToPoint(outline.toPoint.x(),outline.toPoint.y())
196 self.
lineslines.remove(outline)
197 if inline.toPoint
in self.
pointspoints:
198 inline.toPoint.setInline(inline)
205 for point
in self.
pointspoints[:]:
209 self.
splitLinesplitLine(line,pos.x(),pos.y())
212 """Split line at position x,y"""
215 self.
pointspoints.append(point)
216 i=self.
lineslines.index(line)
219 if line.toPoint
in self.
pointspoints:
221 line.toPoint.setInline(newline)
222 self.
lineslines.insert(i+1,newline)
226 point.setInline(line)
227 point.setOutline(newline)
230 first=self.
lineslines[0]
231 first.setFromPoint(x,y)
234 last=self.
lineslines[-1]
242 caption = QLabel(
"<font color=darkblue><u><b>Link Menu</b></u></font>",menu )
243 caption.setAlignment( Qt.AlignCenter )
244 menu.insertItem( caption )
245 menu.insertItem(
"Delete", self.delete)
252 r = QRect(pos.x(), pos.y(), pos.x()+10, pos.y()+10)
253 s = QString(
"link: "+self.
fromPortfromPort.port.getNode().getName() +
":"+self.
fromPortfromPort.port.getName()+
"->"+self.
toPorttoPort.port.getNode().getName()+
":"+self.
toPorttoPort.port.getName() )
257 """The canvas item has been selected"""
259 class ControlLinkItem(LinkItem):
261 r = QRect(pos.x(), pos.y(), pos.x()+10, pos.y()+10)
262 s = QString(
"link: "+self.
fromPortfromPort.port.getNode().getName()+
"->"+self.
toPorttoPort.port.getNode().getName())
268 QCanvasRectangle.__init__(self,canvas)
271 self.setPen(QPen(Qt.black))
272 self.setBrush(QBrush(Qt.red))
273 self.setZ(node.z()+1)
281 QCanvasRectangle.moveBy(self,dx,dy)
289 caption = QLabel(
"<font color=darkblue><u><b>Port Menu</b></u></font>",menu )
290 caption.setAlignment( Qt.AlignCenter )
291 menu.insertItem( caption )
292 menu.insertItem(
"Connect", self.
connectconnect)
296 print(
"ControlItem.connect",self.
contextcontext)
298 item=Item.adapt(self.
portport)
301 self.
contextcontext.connecting(item)
311 r = QRect(pos.x(), pos.y(), self.width(), self.height())
312 s = QString(
"gate:")
316 """The canvas item has been selected"""
318 item=Item.adapt(self.
portport)
323 ControlItem.__init__(self,node,port,canvas)
327 ControlItem.myMove(self,dx,dy)
329 link.setToPoint( int(self.x()), int(self.y()) )
335 if isinstance(obj,OutControlItem):
343 r = QRect(pos.x(), pos.y(), self.width(), self.height())
344 s = QString(
"ingate:")
350 ControlItem.__init__(self,node,port,canvas)
354 ControlItem.myMove(self,dx,dy)
356 link.setFromPoint( int(self.x()), int(self.y()) )
362 if isinstance(obj,InControlItem):
370 r = QRect(pos.x(), pos.y(), self.width(), self.height())
371 s = QString(
"outgate:")
380 QCanvasEllipse.__init__(self,6,6,canvas)
383 self.
itemitem=Item.adapt(self.
portport)
384 self.setPen(QPen(Qt.black))
385 self.setBrush(QBrush(Qt.red))
386 self.setZ(node.z()+1)
393 QCanvasEllipse.moveBy(self,dx,dy)
401 caption = QLabel(
"<font color=darkblue><u><b>Port Menu</b></u></font>",menu )
402 caption.setAlignment( Qt.AlignCenter )
403 menu.insertItem( caption )
404 menu.insertItem(
"Connect", self.
connectconnect)
408 print(
"PortItem.connect",self.
contextcontext)
410 item=Item.adapt(self.
portport)
412 self.
contextcontext.connecting(item)
416 print(
"PortItem.link:",obj)
419 r = QRect(pos.x(),pos.y(),self.width(), self.height())
420 t=self.
portport.edGetType()
421 s = QString(
"port: " + self.
portport.getName() +
":" + t.name())
425 """The canvas item has been selected"""
427 item=Item.adapt(self.
portport)
432 PortItem.__init__(self,node,port,canvas)
436 PortItem.myMove(self,dx,dy)
438 link.setToPoint( int(self.x()), int(self.y()) )
444 if isinstance(obj,OutPortItem):
453 PortItem.__init__(self,node,port,canvas)
457 PortItem.myMove(self,dx,dy)
459 link.setFromPoint( int(self.x()), int(self.y()) )
465 if isinstance(obj,InPortItem):
477 InPortItem.__init__(self,node,port,canvas)
478 self.setBrush(QBrush(Qt.green))
482 OutPortItem.__init__(self,node,port,canvas)
483 self.setBrush(QBrush(Qt.green))
489 "magenta":Qt.magenta,
490 "purple":Qt.darkMagenta,
499 QCanvasRectangle.__init__(self,canvas)
500 pypilot.PyObserver.__init__(self)
507 dispatcher.addObserver(self,node,
"status")
509 self.
labellabel.setText(self.
nodenode.getName())
510 self.
labellabel.setFont(QFont(
"Helvetica",8))
511 rect=self.
labellabel.boundingRect()
512 self.
labellabel.setZ(self.z()+1)
513 self.
labellabel.myMove(self.x()+self.width()/2-rect.width()/2,self.y()+self.height()/2-rect.height()/2)
514 color= self.
colorscolors.get(node.getColorState(node.getEffectiveState()),Qt.white)
515 self.setBrush(QBrush(color))
519 for inport
in self.
nodenode.getSetOfInputPort():
525 for instream
in self.
nodenode.getSetOfInputDataStreamPort():
535 for outport
in self.
nodenode.getSetOfOutputPort():
541 for outstream
in self.
nodenode.getSetOfOutputDataStreamPort():
565 "status":QEvent.User+1,
571 evType=self.
eventsevents[event]
575 QApplication.postEvent(self.canvas(), ev)
584 if event.yacsEvent==
"status":
586 state=object.getEffectiveState()
587 color=object.getColorState(state)
588 color= self.
colorscolors.get(color,Qt.white)
589 self.setBrush(QBrush(color))
591 print(
"Unknown custom event type:", event.type())
594 QCanvasRectangle.moveBy(self,dx,dy)
595 self.
labellabel.myMove(dx,dy)
602 QCanvasRectangle.show(self)
614 caption = QLabel(
"<font color=darkblue><u><b>Node Menu</b></u></font>",menu )
615 caption.setAlignment( Qt.AlignCenter )
616 menu.insertItem( caption )
617 menu.insertItem(
"Browse", self.
browsebrowse)
621 r = QRect(pos.x(), pos.y(), self.width(), self.height())
622 s = QString(
"node: " + self.
nodenode.getName())
630 """The canvas item has been selected"""
632 item=Item.adapt(self.
nodenode)
def tooltip(self, view, pos)
def __init__(self, node, canvas)
def popup(self, canvasView)
def customEvent(self, event)
def pynotify(self, object, event)
def __init__(self, node, port, canvas)
def tooltip(self, view, pos)
def popup(self, canvasView)
def tooltip(self, view, pos)
def addInLink(self, link)
def __init__(self, node, port, canvas)
def tooltip(self, view, pos)
def __init__(self, node, port, canvas)
def addInLink(self, link)
def __init__(self, node, port, canvas)
def __init__(self, obj, fromPoint, toPoint, canvas)
def handleDoubleClick(self, pos)
def setFromPoint(self, x, y)
def setToPoint(self, x, y)
def setFromPoint(self, x, y)
def deletePoint(self, point, pos)
def splitline(self, line, pos)
def setToPoint(self, x, y)
def __init__(self, fromPort, toPort, canvas)
def splitLine(self, line, x, y)
def tooltip(self, view, pos)
def popup(self, canvasView)
def __init__(self, node, port, canvas)
def tooltip(self, view, pos)
def addOutLink(self, link)
def addOutLink(self, link)
def __init__(self, node, port, canvas)
def __init__(self, node, port, canvas)
def __init__(self, obj, x, y, canvas)
def setOutline(self, outline)
def handleDoubleClick(self, pos)
def setInline(self, inline)
def __init__(self, node, port, canvas)
def popup(self, canvasView)
def tooltip(self, view, pos)
def __init__(self, obj, canvas)