Mercurial > lcfOS
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()