X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sface%2Fscreens%2Fmainscreen.py;h=910fd73322a5a443ddbfd668646a5568c9aabb5c;hb=4813cee39486920b72900197aae6b14204892af2;hp=d0ef8c142fb92fa0f1b95ef44060977981744d8f;hpb=6e1a5dd609cac0c82d5ec7a27c658afdd37fab44;p=sface.git diff --git a/sface/screens/mainscreen.py b/sface/screens/mainscreen.py index d0ef8c1..910fd73 100644 --- a/sface/screens/mainscreen.py +++ b/sface/screens/mainscreen.py @@ -176,7 +176,10 @@ class NodeNameDelegate(QStyledItemDelegate): QStyledItemDelegate.__init__(self, parent) def displayText(self, value, locale): - data = str(QStyledItemDelegate.displayText(self, value, locale)) + try: + data = str(QStyledItemDelegate.displayText(self, value, locale)) + except UnicodeEncodeError: + data = "" if (len(data)>NAME_MAX_LEN): data = data[:(NAME_MAX_LEN-3)] + "..." return QString(data) @@ -356,6 +359,7 @@ class SliceWidget(QWidget): bottomlayout.addWidget(renew, 0, Qt.AlignLeft) bottomlayout.addStretch() bottomlayout.addWidget(submit, 0, Qt.AlignRight) + self.bottomlayout = bottomlayout layout = QVBoxLayout() layout.addLayout(toplayout) @@ -685,7 +689,13 @@ class SliceWidget(QWidget): "%s: %s" % (name, value), membership=tag_status['in'], kind="attribute") - + disk_images = node.get("disk_image", []) + for disk_image in disk_images: + name = disk_image.get("name", None) + self.noveView.appendRow(nodeItem, name, + membership=node_status['in'], + kind="attribute") + for node in available_nodes: nodeType = None if ("hardware_types" in node): @@ -726,8 +736,8 @@ class MainScreen(SfaScreen): def __init__(self, parent): SfaScreen.__init__(self, parent) - slice = SliceWidget(self) - self.init(slice, "Nodes", "OneLab SFA crawler") + self.sliceWidget = SliceWidget(self) + self.init(self.sliceWidget, "Nodes", "OneLab SFA crawler") def rspecUpdated(self): self.mainwin.rspecWindow.updateView() @@ -739,3 +749,17 @@ class MainScreen(SfaScreen): def nodeSelectionChanged(self, hostname): self.mainwin.nodeSelectionChanged(hostname) + + def remoteSliceChanged(self): + # we're being notified the slice was changed remotely. Download a new + # rspec. + QTimer.singleShot(2500, self.sliceWidget.refresh) + + def addMainScreenButton(self, caption, action): + # allows another screen to add a button to mainscreen + button = QPushButton(caption, self) + self.sliceWidget.bottomlayout.insertWidget(2, button) + self.sliceWidget.connect(button, SIGNAL('clicked()'), action) + return button + +