Mercurial > lcfOS
diff python/apps/diagrameditor.py @ 75:ba11d99b1d4a
Added qformlayout..
author | windel |
---|---|
date | Sun, 11 Nov 2012 11:28:28 +0100 |
parents | f506f6b74697 |
children | 1084b433c278 |
line wrap: on
line diff
--- a/python/apps/diagrameditor.py Sun Nov 11 10:49:46 2012 +0100 +++ b/python/apps/diagrameditor.py Sun Nov 11 11:28:28 2012 +0100 @@ -27,6 +27,14 @@ return [offset + (l - offset*2)/(n - 1)*i for i in range(n)] return [] +def uniqify(name, names): + newname = name + i = 1 + while newname in names: + newname = name + str(i) + i += 1 + return newname + class Connection(QGraphicsPathItem): """ Implementation of a connection between blocks """ def __init__(self, fromPort, toPort): @@ -136,18 +144,16 @@ super(ParameterDialog, self).__init__(parent) self.block = block self.button = QPushButton('Ok', self) - l = QGridLayout(self) - l.addWidget(QLabel('Name:', self), 0, 0) self.nameEdit = QLineEdit(self.block.name) - l.addWidget(self.nameEdit, 0, 1) - l.addWidget(QLabel('Code:', self), 1, 0) self.codeEdit = QTextEdit(self) self.codeEdit.setPlainText(self.block.code) - l.addWidget(self.codeEdit, 1, 1) - l.addWidget(self.button, 2, 0, 1, 2) + l = QFormLayout(self) + l.addRow('Name:', self.nameEdit) + l.addRow('Code:', self.codeEdit) + l.addWidget(self.button) self.button.clicked.connect(self.OK) def OK(self): - self.block.setName(self.nameEdit.text()) + self.block.name = self.nameEdit.text() self.block.code = self.codeEdit.toPlainText() self.close() @@ -156,16 +162,11 @@ def __init__(self, name, block, direction): super(PortItem, self).__init__(block) self.connection = None - path = QPainterPath() d = 10.0 if direction == 'input': - path.moveTo(-d, -d) - path.lineTo(0.0, 0.0) - path.lineTo(-d, d) + path = buildPath([QPointF(-d, -d), QPointF(0, 0), QPointF(-d, d)]) else: - path.moveTo(0.0, -d) - path.lineTo(d, 0.0) - path.lineTo(0.0, d) + path = buildPath([QPointF(0.0, -d), QPointF(d, 0), QPointF(0.0, d)]) self.setPath(path) self.direction = direction self.block = block @@ -173,12 +174,12 @@ pen = QPen(Qt.blue, 2) pen.setCapStyle(Qt.RoundCap) self.setPen(pen) - self.textItem = QGraphicsTextItem(name, self) - self.setName(name) + self.textItem = QGraphicsTextItem(self) + self.name = name self.posCallbacks = [] self.setFlag(self.ItemSendsScenePositionChanges, True) + def getName(self): return self.textItem.toPlainText() def setName(self, name): - self.name = name self.textItem.setPlainText(name) rect = self.textItem.boundingRect() lw, lh = rect.width(), rect.height() @@ -187,6 +188,7 @@ else: lx = -3 - lw self.textItem.setPos(lx, -lh / 2) + name = property(getName, setName) def itemChange(self, change, value): if change == self.ItemScenePositionHasChanged: for cb in self.posCallbacks: @@ -227,14 +229,6 @@ # Call superclass method: return super(HandleItem, self).itemChange(change, value) -def uniqify(name, names): - newname = name - i = 1 - while newname in names: - newname = name + str(i) - i += 1 - return newname - class BlockItem(QGraphicsRectItem): """ Represents a block in the diagram @@ -250,8 +244,7 @@ # Properties of the rectangle: self.setPen(QPen(Qt.blue, 2)) self.setBrush(QBrush(Qt.lightGray)) - self.setFlags(self.ItemIsSelectable | self.ItemIsMovable) - self.setFlag(self.ItemSendsScenePositionChanges, True) + self.setFlags(self.ItemIsSelectable | self.ItemIsMovable | self.ItemSendsScenePositionChanges) self.setCursor(QCursor(Qt.PointingHandCursor)) self.label = QGraphicsTextItem(name, self) self.name = name @@ -285,9 +278,9 @@ def newOutputPort(self): names = [i.name for i in self.inputs + self.outputs] self.addOutput(PortItem(uniqify('out', names), self, 'output')) - def setName(self, name): - self.name = name - self.label.setPlainText(name) + def setName(self, name): self.label.setPlainText(name) + def getName(self): return self.label.toPlainText() + name = property(getName, setName) def addInput(self, i): self.inputs.append(i) self.updateSize()