Version: 9.15.0
CItems.py
Go to the documentation of this file.
1 # Copyright (C) 2006-2025 CEA, EDF
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19 
20 import sys,traceback
21 from qt import *
22 from qtcanvas import *
23 import pilot
24 import pypilot
25 from . import Item
26 import math
27 
28 dispatcher=pilot.Dispatcher.getDispatcher()
29 
31  """A text in a composite object"""
32  def __init__(self,obj,canvas):
33  QCanvasText.__init__(self,canvas)
34  self.objobj=obj
35  self.itemitem=None
36  def getObj(self):
37  """The composite object which contains the text"""
38  return self.objobj
39  def moveBy(self,dx,dy):
40  """Request the text move by x,y"""
41  if self.objobj:
42  #the text is a part of a composite object
43  self.objobj.moveBy(dx,dy)
44  else:
45  #the text is independant
46  self.myMovemyMove(dx,dy)
47  def myMove(self,dx,dy):
48  """The real move"""
49  QCanvasText.moveBy(self,dx,dy)
50  def selected(self):
51  """The canvas item has been selected"""
52  if self.objobj:
53  self.objobj.selected()
54 
56  def __init__(self,obj,x,y,canvas):
57  """Create a point contained in a composite line (obj)"""
58  QCanvasEllipse.__init__(self,6,6,canvas)
59  self.objobj=obj
60  self.itemitem=None
61  self.inlineinline=None
62  self.outlineoutline=None
63  self.setPen(QPen(Qt.black))
64  self.setBrush(QBrush(Qt.red))
65  self.setX(x)
66  self.setY(y)
67  self.setVisible(True)
68 
69  def setInline(self,inline):
70  self.inlineinline=inline
71  if inline.z() >= self.z():
72  self.setZ(inline.z()+1)
73  def setOutline(self,outline):
74  self.outlineoutline=outline
75  if outline.z() >= self.z():
76  self.setZ(outline.z()+1)
77 
78  def moveBy(self,dx,dy):
79  """Request the point move by x,y"""
80  self.myMovemyMove(dx,dy)
81 
82  def myMove(self,dx,dy):
83  """The real move"""
84  QCanvasEllipse.moveBy(self,dx,dy)
85  if self.outlineoutline:
86  self.outlineoutline.setFromPoint( int(self.x()), int(self.y()) )
87  if self.inlineinline:
88  self.inlineinline.setToPoint( int(self.x()), int(self.y()) )
89 
90  def getObj(self):
91  """The object which contains the point"""
92  return self.objobj
93 
94  def handleDoubleClick(self,pos):
95  self.objobj.deletePoint(self,pos)
96 
97  #def __del__(self):
98  # print "PointItem.__del__"
99 
100  def clear(self):
101  """To remove from canvas"""
102  self.setCanvas(None)
103  self.objobj=None
104  self.inlineinline=None
105  self.outlineoutline=None
106 
107  def selected(self):
108  """The canvas item has been selected"""
109 
110 class LineItem(QCanvasLine):
111  """A line between 2 points"""
112  def __init__(self,obj,fromPoint, toPoint,canvas):
113  QCanvasLine.__init__(self,canvas)
114  self.objobj=obj
115  self.itemitem=None
116  self.fromPointfromPoint=fromPoint
117  self.toPointtoPoint=toPoint
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))
125  self.setArrowsetArrow()
126  self.arrowarrow.show()
127 
128  def setFromPoint(self,x,y):
129  self.setPoints(x,y,self.endPoint().x(),self.endPoint().y())
130  self.setArrowsetArrow()
131  def setToPoint(self,x,y):
132  self.setPoints(self.startPoint().x(), self.startPoint().y(),x,y)
133  self.setArrowsetArrow()
134  def moveBy(self,dx,dy):
135  """Disable line move"""
136  pass
137 
138  def setArrow(self):
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)
142  sina=(y2-y1)/d
143  cosa=(x2-x1)/d
144  x=(x1+x2)/2.
145  y=(y1+y2)/2.
146  l,e=6,3
147  pa=QPointArray(3)
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)
152 
153  def getObj(self):
154  """The object which contains the line"""
155  return self.objobj
156  def handleDoubleClick(self,pos):
157  #split the line
158  self.objobj.splitline(self,pos)
159 
160  #def __del__(self):
161  # print "LineItem.__del__"
162 
163  def clear(self):
164  """To remove from canvas"""
165  self.setCanvas(None)
166  self.fromPointfromPoint=None
167  self.toPointtoPoint=None
168  self.objobj=None
169  self.arrowarrow.setCanvas(None)
170  self.arrowarrow=None
171 
172  def selected(self):
173  """The canvas item has been selected"""
174 
175 class LinkItem:
176  def __init__(self,fromPort, toPort,canvas):
177  self.fromPortfromPort=fromPort
178  self.toPorttoPort=toPort
179  self.canvascanvas=canvas
180  self.itemitem=None
181  fromPort.addOutLink(self)
182  toPort.addInLink(self)
183  self.lineslines=[]
184  self.pointspoints=[]
185  self.lineslines.append(LineItem(self,fromPort, toPort,canvas))
186 
187  def deletePoint(self,point,pos):
188  """Delete intermediate point"""
189  if point not in self.pointspoints:
190  return
191  self.pointspoints.remove(point)
192  inline=point.inline
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)
199  #remove from canvas
200  point.clear()
201  outline.clear()
202 
203  def clearPoints(self):
204  #make a copy as deletePoint modify self.points
205  for point in self.pointspoints[:]:
206  self.deletePointdeletePoint(point,0)
207 
208  def splitline(self,line,pos):
209  self.splitLinesplitLine(line,pos.x(),pos.y())
210 
211  def splitLine(self,line,x,y):
212  """Split line at position x,y"""
213  #The new point
214  point=PointItem(self,x,y,self.canvascanvas)
215  self.pointspoints.append(point)
216  i=self.lineslines.index(line)
217 
218  newline=LineItem(self,point,line.toPoint,self.canvascanvas)
219  if line.toPoint in self.pointspoints:
220  #line not connected to port : reconnect newline
221  line.toPoint.setInline(newline)
222  self.lineslines.insert(i+1,newline)
223 
224  line.setToPoint(x,y)
225  line.toPoint=point
226  point.setInline(line)
227  point.setOutline(newline)
228 
229  def setFromPoint(self,x,y):
230  first=self.lineslines[0]
231  first.setFromPoint(x,y)
232 
233  def setToPoint(self,x,y):
234  last=self.lineslines[-1]
235  last.setToPoint(x,y)
236 
237  def moveBy(self,dx,dy):
238  pass
239 
240  def popup(self,canvasView):
241  menu=QPopupMenu()
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)
246  return menu
247 
248  def delete(self):
249  print("delete link")
250 
251  def tooltip(self,view,pos):
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() )
254  view.tip( r, s )
255 
256  def selected(self):
257  """The canvas item has been selected"""
258 
259 class ControlLinkItem(LinkItem):
260  def tooltip(self,view,pos):
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())
263  view.tip( r, s )
264  #QToolTip(view).tip( r, s )
265 
267  def __init__(self,node,port,canvas):
268  QCanvasRectangle.__init__(self,canvas)
269  self.setSize(6,6)
270  self.portport=port
271  self.setPen(QPen(Qt.black))
272  self.setBrush(QBrush(Qt.red))
273  self.setZ(node.z()+1)
274  self.nodenode=node
275  self.itemitem=Item.adapt(self.portport)
276 
277  def moveBy(self,dx,dy):
278  self.nodenode.moveBy(dx,dy)
279 
280  def myMove(self,dx,dy):
281  QCanvasRectangle.moveBy(self,dx,dy)
282 
283  def getObj(self):
284  return self
285 
286  def popup(self,canvasView):
287  self.contextcontext=canvasView
288  menu=QPopupMenu()
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)
293  return menu
294 
295  def connect(self):
296  print("ControlItem.connect",self.contextcontext)
297  print(self.portport)
298  item=Item.adapt(self.portport)
299  print(item)
300  item.connect()
301  self.contextcontext.connecting(item)
302  #self.context.connecting(self)
303 
304  def link(self,obj):
305  #Protocol to link 2 objects (ports, at first)
306  #First, notify the canvas View (or any view that can select) we are connecting (see method connect above)
307  #Second (and last) make the link in the link method of object that was declared connecting
308  print("link:",obj)
309 
310  def tooltip(self,view,pos):
311  r = QRect(pos.x(), pos.y(), self.width(), self.height())
312  s = QString( "gate:")
313  view.tip( r, s )
314 
315  def selected(self):
316  """The canvas item has been selected"""
317  #print "control port selected"
318  item=Item.adapt(self.portport)
319  item.selected()
320 
322  def __init__(self,node,port,canvas):
323  ControlItem.__init__(self,node,port,canvas)
324  self.__inList__inList=[]
325 
326  def myMove(self,dx,dy):
327  ControlItem.myMove(self,dx,dy)
328  for link in self.__inList__inList:
329  link.setToPoint( int(self.x()), int(self.y()) )
330 
331  def link(self,obj):
332  #Here we create the link between self and obj.
333  #self has been declared connecting in connect method
334  print("link:",obj)
335  if isinstance(obj,OutControlItem):
336  #Connection possible
337  l=LinkItem(obj,self,self.canvas())
338 
339  def addInLink(self,link):
340  self.__inList__inList.append(link)
341 
342  def tooltip(self,view,pos):
343  r = QRect(pos.x(), pos.y(), self.width(), self.height())
344  s = QString( "ingate:")
345  view.tip( r, s )
346  #QToolTip(view).tip( r, s )
347 
349  def __init__(self,node,port,canvas):
350  ControlItem.__init__(self,node,port,canvas)
351  self.__outList__outList=[]
352 
353  def myMove(self,dx,dy):
354  ControlItem.myMove(self,dx,dy)
355  for link in self.__outList__outList:
356  link.setFromPoint( int(self.x()), int(self.y()) )
357 
358  def link(self,obj):
359  #Here we create the link between self and obj.
360  #self has been declared connecting in connect method
361  print("link:",obj)
362  if isinstance(obj,InControlItem):
363  #Connection possible
364  l=LinkItem(self,obj,self.canvas())
365 
366  def addOutLink(self,link):
367  self.__outList__outList.append(link)
368 
369  def tooltip(self,view,pos):
370  r = QRect(pos.x(), pos.y(), self.width(), self.height())
371  s = QString( "outgate:")
372  view.tip( r, s )
373  #QToolTip(view).tip( r, s )
374 
375  def links(self):
376  return self.__outList__outList
377 
379  def __init__(self,node,port,canvas):
380  QCanvasEllipse.__init__(self,6,6,canvas)
381  self.portport=port
382  self.itemitem=None
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)
387  self.nodenode=node
388 
389  def moveBy(self,dx,dy):
390  self.nodenode.moveBy(dx,dy)
391 
392  def myMove(self,dx,dy):
393  QCanvasEllipse.moveBy(self,dx,dy)
394 
395  def getObj(self):
396  return self
397 
398  def popup(self,canvasView):
399  self.contextcontext=canvasView
400  menu=QPopupMenu()
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)
405  return menu
406 
407  def connect(self):
408  print("PortItem.connect",self.contextcontext)
409  print(self.portport)
410  item=Item.adapt(self.portport)
411  print(item)
412  self.contextcontext.connecting(item)
413  #self.context.connecting(self)
414 
415  def link(self,obj):
416  print("PortItem.link:",obj)
417 
418  def tooltip(self,view,pos):
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())
422  view.tip( r, s )
423 
424  def selected(self):
425  """The canvas item has been selected"""
426  #print "port selected"
427  item=Item.adapt(self.portport)
428  item.selected()
429 
431  def __init__(self,node,port,canvas):
432  PortItem.__init__(self,node,port,canvas)
433  self.__inList__inList=[]
434 
435  def myMove(self,dx,dy):
436  PortItem.myMove(self,dx,dy)
437  for link in self.__inList__inList:
438  link.setToPoint( int(self.x()), int(self.y()) )
439 
440  def link(self,obj):
441  #Here we create the link between self and obj.
442  #self has been declared connecting in connect method
443  print("link:",obj)
444  if isinstance(obj,OutPortItem):
445  #Connection possible
446  l=LinkItem(obj,self,self.canvas())
447 
448  def addInLink(self,link):
449  self.__inList__inList.append(link)
450 
452  def __init__(self,node,port,canvas):
453  PortItem.__init__(self,node,port,canvas)
454  self.__outList__outList=[]
455 
456  def myMove(self,dx,dy):
457  PortItem.myMove(self,dx,dy)
458  for link in self.__outList__outList:
459  link.setFromPoint( int(self.x()), int(self.y()) )
460 
461  def link(self,obj):
462  #Here we create the link between self and obj.
463  #self has been declared connecting in connect method
464  print("link:",obj)
465  if isinstance(obj,InPortItem):
466  #Connection possible
467  l=LinkItem(self,obj,self.canvas())
468 
469  def addOutLink(self,link):
470  self.__outList__outList.append(link)
471 
472  def links(self):
473  return self.__outList__outList
474 
476  def __init__(self,node,port,canvas):
477  InPortItem.__init__(self,node,port,canvas)
478  self.setBrush(QBrush(Qt.green))
479 
481  def __init__(self,node,port,canvas):
482  OutPortItem.__init__(self,node,port,canvas)
483  self.setBrush(QBrush(Qt.green))
484 
485 class Cell(QCanvasRectangle,pypilot.PyObserver):
486  colors={
487  "pink":Qt.cyan,
488  "green":Qt.green,
489  "magenta":Qt.magenta,
490  "purple":Qt.darkMagenta,
491  "blue":Qt.blue,
492  "red":Qt.red,
493  "orange":Qt.yellow,
494  "grey":Qt.gray,
495  "white":Qt.white,
496  }
497 
498  def __init__(self,node,canvas):
499  QCanvasRectangle.__init__(self,canvas)
500  pypilot.PyObserver.__init__(self)
501  self.inportsinports=[]
502  self.outportsoutports=[]
503  self.setSize(50,50)
504  #node is an instance of YACS::ENGINE::Node
505  self.nodenode=node
506  self.itemitem=Item.adapt(self.nodenode)
507  dispatcher.addObserver(self,node,"status")
508  self.labellabel=TextItem(self,canvas)
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))
516 
517  dy=6
518  y=0
519  for inport in self.nodenode.getSetOfInputPort():
520  p=InPortItem(self,inport,canvas)
521  y=y+dy
522  p.myMove(0,y)
523  self.inportsinports.append(p)
524 
525  for instream in self.nodenode.getSetOfInputDataStreamPort():
526  p=InStreamItem(self,instream,canvas)
527  y=y+dy
528  p.myMove(0,y)
529  self.inportsinports.append(p)
530 
531  ymax=y
532 
533  dy=6
534  y=0
535  for outport in self.nodenode.getSetOfOutputPort():
536  p=OutPortItem(self,outport,canvas)
537  y=y+dy
538  p.myMove(50,y)
539  self.outportsoutports.append(p)
540 
541  for outstream in self.nodenode.getSetOfOutputDataStreamPort():
542  p=OutStreamItem(self,outstream,canvas)
543  y=y+dy
544  p.myMove(50,y)
545  self.outportsoutports.append(p)
546 
547  ymax=max(y,ymax)
548 
549  #Control ports
550  y=ymax+dy
551  if y < 44:y=44
552  p=InControlItem(self,self.nodenode.getInGate(),canvas)
553  p.myMove(0,y)
554  self.inportsinports.append(p)
555  self.ingateingate=p
556  p=OutControlItem(self,self.nodenode.getOutGate(),canvas)
557  p.myMove(44,y)
558  self.outportsoutports.append(p)
559  self.outgateoutgate=p
560  y=y+dy
561  self.setSize(50,y)
562 
563 
564  events={
565  "status":QEvent.User+1,
566  }
567 
568  def pynotify(self,object,event):
569  #print "pynotify",event,object
570  try:
571  evType=self.eventsevents[event]
572  ev=QCustomEvent(evType)
573  ev.setData(self)
574  ev.yacsEvent=event
575  QApplication.postEvent(self.canvas(), ev)
576  #request immediate processing (deadlock risk ???)
577  #QApplication.sendPostedEvents(self.canvas(), evType)
578  #print "pynotify end"
579  except:
580  #traceback.print_exc()
581  raise
582 
583  def customEvent(self,event):
584  if event.yacsEvent=="status":
585  object=self.nodenode
586  state=object.getEffectiveState()
587  color=object.getColorState(state)
588  color= self.colorscolors.get(color,Qt.white)
589  self.setBrush(QBrush(color))
590  else:
591  print("Unknown custom event type:", event.type())
592 
593  def moveBy(self,dx,dy):
594  QCanvasRectangle.moveBy(self,dx,dy)
595  self.labellabel.myMove(dx,dy)
596  for p in self.inportsinports:
597  p.myMove(dx,dy)
598  for p in self.outportsoutports:
599  p.myMove(dx,dy)
600 
601  def show(self):
602  QCanvasRectangle.show(self)
603  self.labellabel.show()
604  for p in self.inportsinports:
605  p.show()
606  for p in self.outportsoutports:
607  p.show()
608 
609  def getObj(self):
610  return self
611 
612  def popup(self,canvasView):
613  menu=QPopupMenu()
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)
618  return menu
619 
620  def tooltip(self,view,pos):
621  r = QRect(pos.x(), pos.y(), self.width(), self.height())
622  s = QString( "node: " + self.nodenode.getName())
623  view.tip( r, s )
624  #QToolTip(view).tip( r, s )
625 
626  def browse(self):
627  print("browse")
628 
629  def selected(self):
630  """The canvas item has been selected"""
631  #print "node selected"
632  item=Item.adapt(self.nodenode)
633  item.selected()
def tooltip(self, view, pos)
Definition: CItems.py:620
def getObj(self)
Definition: CItems.py:609
def moveBy(self, dx, dy)
Definition: CItems.py:593
def show(self)
Definition: CItems.py:601
def __init__(self, node, canvas)
Definition: CItems.py:498
def popup(self, canvasView)
Definition: CItems.py:612
dictionary colors
Definition: CItems.py:486
def selected(self)
Definition: CItems.py:629
def browse(self)
Definition: CItems.py:626
def customEvent(self, event)
Definition: CItems.py:583
def pynotify(self, object, event)
Definition: CItems.py:568
def selected(self)
Definition: CItems.py:315
def myMove(self, dx, dy)
Definition: CItems.py:280
def moveBy(self, dx, dy)
Definition: CItems.py:277
def link(self, obj)
Definition: CItems.py:304
def getObj(self)
Definition: CItems.py:283
def __init__(self, node, port, canvas)
Definition: CItems.py:267
def connect(self)
Definition: CItems.py:295
def tooltip(self, view, pos)
Definition: CItems.py:310
def popup(self, canvasView)
Definition: CItems.py:286
def tooltip(self, view, pos)
Definition: CItems.py:260
def addInLink(self, link)
Definition: CItems.py:339
def link(self, obj)
Definition: CItems.py:331
def myMove(self, dx, dy)
Definition: CItems.py:326
def __init__(self, node, port, canvas)
Definition: CItems.py:322
def tooltip(self, view, pos)
Definition: CItems.py:342
def __init__(self, node, port, canvas)
Definition: CItems.py:431
def link(self, obj)
Definition: CItems.py:440
def addInLink(self, link)
Definition: CItems.py:448
def myMove(self, dx, dy)
Definition: CItems.py:435
def __init__(self, node, port, canvas)
Definition: CItems.py:476
def setArrow(self)
Definition: CItems.py:138
def __init__(self, obj, fromPoint, toPoint, canvas)
Definition: CItems.py:112
def clear(self)
Definition: CItems.py:163
def selected(self)
Definition: CItems.py:172
def handleDoubleClick(self, pos)
Definition: CItems.py:156
def moveBy(self, dx, dy)
Definition: CItems.py:134
def setFromPoint(self, x, y)
Definition: CItems.py:128
def setToPoint(self, x, y)
Definition: CItems.py:131
def getObj(self)
Definition: CItems.py:153
def setFromPoint(self, x, y)
Definition: CItems.py:229
def deletePoint(self, point, pos)
Definition: CItems.py:187
def selected(self)
Definition: CItems.py:256
def splitline(self, line, pos)
Definition: CItems.py:208
def setToPoint(self, x, y)
Definition: CItems.py:233
def __init__(self, fromPort, toPort, canvas)
Definition: CItems.py:176
def splitLine(self, line, x, y)
Definition: CItems.py:211
def delete(self)
Definition: CItems.py:248
def moveBy(self, dx, dy)
Definition: CItems.py:237
def tooltip(self, view, pos)
Definition: CItems.py:251
def popup(self, canvasView)
Definition: CItems.py:240
def clearPoints(self)
Definition: CItems.py:203
def __init__(self, node, port, canvas)
Definition: CItems.py:349
def link(self, obj)
Definition: CItems.py:358
def tooltip(self, view, pos)
Definition: CItems.py:369
def myMove(self, dx, dy)
Definition: CItems.py:353
def addOutLink(self, link)
Definition: CItems.py:366
def addOutLink(self, link)
Definition: CItems.py:469
def link(self, obj)
Definition: CItems.py:461
def myMove(self, dx, dy)
Definition: CItems.py:456
def __init__(self, node, port, canvas)
Definition: CItems.py:452
def __init__(self, node, port, canvas)
Definition: CItems.py:481
def __init__(self, obj, x, y, canvas)
Definition: CItems.py:56
def moveBy(self, dx, dy)
Definition: CItems.py:78
def clear(self)
Definition: CItems.py:100
def getObj(self)
Definition: CItems.py:90
def myMove(self, dx, dy)
Definition: CItems.py:82
def setOutline(self, outline)
Definition: CItems.py:73
def handleDoubleClick(self, pos)
Definition: CItems.py:94
def selected(self)
Definition: CItems.py:107
def setInline(self, inline)
Definition: CItems.py:69
def __init__(self, node, port, canvas)
Definition: CItems.py:379
def popup(self, canvasView)
Definition: CItems.py:398
def link(self, obj)
Definition: CItems.py:415
def myMove(self, dx, dy)
Definition: CItems.py:392
def getObj(self)
Definition: CItems.py:395
def selected(self)
Definition: CItems.py:424
def tooltip(self, view, pos)
Definition: CItems.py:418
def connect(self)
Definition: CItems.py:407
def moveBy(self, dx, dy)
Definition: CItems.py:389
def __init__(self, obj, canvas)
Definition: CItems.py:32
def selected(self)
Definition: CItems.py:50
def myMove(self, dx, dy)
Definition: CItems.py:47
def getObj(self)
Definition: CItems.py:36
def moveBy(self, dx, dy)
Definition: CItems.py:39