X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fscreens%2Fmainscreen.py;h=32d984901fccb4c4b05ad227426d0e5ea13d1c5e;hp=96ec7eda567c58d81d089761bf39febdf31279a0;hb=a8f5d8a8a1fc3baf55c85d8af3243944a2dca26c;hpb=8cfbfbd5c19fcab179e037efacd608e3b4c64b6e diff --git a/sface/screens/mainscreen.py b/sface/screens/mainscreen.py index 96ec7ed..32d9849 100644 --- a/sface/screens/mainscreen.py +++ b/sface/screens/mainscreen.py @@ -19,6 +19,29 @@ class NodeView(QTreeView): self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.setAttribute(Qt.WA_MacShowFocusRect, 0) +class ItemDelegate(QStyledItemDelegate): + def __init__(self, parent): + QStyledItemDelegate.__init__(self) + + def paint(self, painter, option, index): + data = "%s" % index.data().toString() + + if data.startswith("*"): # already in the sliver + data = " %s " % data[1:] + + rect = option.rect + fm = QFontMetrics(option.font) + w = fm.width(QString(data)) + rect.setWidth(w) + + painter.save() + painter.fillRect(rect, QColor.fromRgb(0, 250, 0)) + painter.setPen(QColor.fromRgb(0, 0, 0)) + painter.drawText(option.rect, 0, QString(data)) + painter.restore() + else: # others, fall back to default view + QStyledItemDelegate.paint(self, painter, option, index) + class TreeItem: def __init__(self, data, parent=None): self.parentItem = parent @@ -70,7 +93,7 @@ class NodeModel(QAbstractItemModel): self.__initRoot() def __initRoot(self): - self.rootItem = TreeItem([QString("Testbed"), QString("Hostname")]) + self.rootItem = TreeItem([QString("Testbed"), QString("Hostname"), QString("Selected")]) def columnCount(self, parent): if parent.isValid(): @@ -96,7 +119,7 @@ class NodeModel(QAbstractItemModel): def flags(self, index): if not index.isValid(): return 0 - return Qt.ItemIsEnabled | Qt.ItemIsSelectable + return Qt.ItemIsEnabled | Qt.ItemIsSelectable # | Qt.ItemIsEditable def index(self, row, column, parent): if not self.hasIndex(row, column, parent): @@ -146,7 +169,7 @@ class SliceWidget(QWidget): def __init__(self, parent): QWidget.__init__(self, parent) - refresh = QLabel("Refresh", self) + refresh = QLabel("Update Slice Data", self) refresh.setScaledContents(False) slicename = QLabel ("Slice : %s"%(config.getSlice() or "None"),self) slicename.setScaledContents(False) @@ -207,23 +230,27 @@ class SliceWidget(QWidget): networks = rspec_get_networks(rspec_string) for network in networks: - networkItem = TreeItem([QString(network), QString("")], self.nodeModel.rootItem) + networkItem = TreeItem([QString(network), QString(""), QString("")], self.nodeModel.rootItem) all_nodes = rspec_get_nodes_from_network(rspec_string, network) sliver_nodes = rspec_get_sliver_nodes_from_network(rspec_string, network) available_nodes = filter(lambda x:x not in sliver_nodes, all_nodes) for node in sliver_nodes: - nodeItem = TreeItem([QString(""), QString("%s (selected)" % node)], networkItem) + nodeItem = TreeItem([QString(""), QString("*%s" % node), QString("Implement Checkbox")], networkItem) networkItem.appendChild(nodeItem) for node in available_nodes: - nodeItem = TreeItem([QString(""), QString(node)], networkItem) + nodeItem = TreeItem([QString(""), QString(node), QString("Implement Checkbox")], networkItem) networkItem.appendChild(nodeItem) self.nodeModel.rootItem.appendChild(networkItem) self.nodeView.expandAll() + self.nodeView.resizeColumnToContents(1) + + self.delegate = ItemDelegate(self) + self.nodeView.setItemDelegateForColumn(1, self.delegate) class MainScreen(SfaScreen): @@ -231,4 +258,4 @@ class MainScreen(SfaScreen): SfaScreen.__init__(self, parent) slice = SliceWidget(self) - self.init(slice, "Main Window", "PlanetLab Federation GUI") + self.init(slice, "Main Window", "OneLab Federation GUI")