diff python/apps/diagramitems.py @ 91:7ad4c66dd092

Fixed save function
author windel
date Mon, 10 Dec 2012 18:55:40 +0100
parents 499183b99c71
children 0c4bdbf0aead
line wrap: on
line diff
--- a/python/apps/diagramitems.py	Wed Nov 28 08:41:56 2012 +0100
+++ b/python/apps/diagramitems.py	Mon Dec 10 18:55:40 2012 +0100
@@ -1,6 +1,11 @@
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 
+def uniqify(name, names):
+   newname, i = name, 1
+   while newname in names: newname, i = name + str(i), i + 1
+   return newname
+
 def enum(**enums):
    return type('Enum', (), enums)
 
@@ -130,7 +135,8 @@
       lx = 3 if type(self) is InputPort else -3 - lw
       self.textItem.setPos(lx, -lh / 2)
    name = property(getName, setName)
-   def getDict(self): return {'name': self.name}
+   def getDict(self): 
+      return {'name': self.name}
    Dict = property(getDict)
    def itemChange(self, change, value):
       if change == self.ItemScenePositionHasChanged:
@@ -206,6 +212,7 @@
       # Inputs and outputs of the block:
       self.inputs = []
       self.outputs = []
+      self.changeSize(2,2)
    def editParameters(self):
       pd = ParameterDialog(self, self.window())
       pd.exec_()
@@ -229,10 +236,9 @@
       d = {'x': self.scenePos().x(), 'y': self.scenePos().y()}
       rect = self.rect()
       d.update({'width': rect.width(), 'height': rect.height()})
-      d.update({'name': self.name, 'code': self.code})
+      d['name'] = self.name
       d['inputs'] = [inp.Dict for inp in self.inputs]
       d['outputs'] = [outp.Dict for outp in self.outputs]
-      d['submodel'] = self.subModel.Dict
       return d
    def setDict(self, d):
       self.name = d['name']
@@ -262,6 +268,12 @@
             [h.setVisible(False) for h in self.selectionHandles]
 
       return super(Block, self).itemChange(change, value)
+   def hoverEnterEvent(self, event):
+      self.repositionAndShowHandles()
+      super(Block, self).hoverEnterEvent(event)
+   def hoverLeaveEvent(self, event):
+      [h.setVisible(False) for h in self.selectionHandles]
+      super(Block, self).hoverLeaveEvent(event)
    def myDelete(self):
       for p in self.inputs + self.outputs:
          if p.connection: p.connection.myDelete()
@@ -369,11 +381,9 @@
    def findBlock(self, blockname):
       for block in self.blocks:
          if block.name == blockname: return block
-   def addNewBlock(self, pos, name):
+   def uniqify(self, name):
       blocknames = [item.name for item in self.blocks]
-      b1 = Block(uniqify(name, blocknames))
-      b1.setPos(pos)
-      self.addItem(b1)
+      return uniqify(name, blocknames)
    def mouseMoveEvent(self, event):
       if self.startedConnection:
          pos = event.scenePos()