Merge pull request #2730 from GNS3/lock-unlock-items

Display available appliances in a hierarchical folder structure. Fixes #2702
This commit is contained in:
Jeremy Grossmann
2019-03-08 18:03:59 +07:00
committed by GitHub
3 changed files with 33 additions and 20 deletions

View File

@@ -150,33 +150,54 @@ class NewTemplateWizard(QtWidgets.QWizard, Ui_NewTemplateWizard):
"""
self.uiAppliancesTreeWidget.clear()
parent_guests = QtWidgets.QTreeWidgetItem(self.uiAppliancesTreeWidget)
parent_guests.setText(0, "Guests")
parent_guests.setFlags(parent_guests.flags() & ~QtCore.Qt.ItemIsSelectable)
parent_firewalls = QtWidgets.QTreeWidgetItem(self.uiAppliancesTreeWidget)
parent_firewalls.setText(0, "Firewalls")
parent_firewalls.setFlags(parent_guests.flags() & ~QtCore.Qt.ItemIsSelectable)
parent_switches = QtWidgets.QTreeWidgetItem(self.uiAppliancesTreeWidget)
parent_switches.setText(0, "Switches")
parent_switches.setFlags(parent_guests.flags() & ~QtCore.Qt.ItemIsSelectable)
parent_routers = QtWidgets.QTreeWidgetItem(self.uiAppliancesTreeWidget)
parent_routers.setText(0, "Routers")
parent_routers.setFlags(parent_guests.flags() & ~QtCore.Qt.ItemIsSelectable)
self.uiAppliancesTreeWidget.expandAll()
for appliance in ApplianceManager.instance().appliances():
if appliance_filter is None:
appliance_filter = self.uiFilterLineEdit.text().strip()
if appliance_filter and appliance_filter.lower() not in appliance["name"].lower():
continue
item = QtWidgets.QTreeWidgetItem(self.uiAppliancesTreeWidget)
if appliance["category"] == "router":
item = QtWidgets.QTreeWidgetItem(parent_routers)
elif appliance["category"].endswith("switch"):
item = QtWidgets.QTreeWidgetItem(parent_switches)
elif appliance["category"] == "firewall":
item = QtWidgets.QTreeWidgetItem(parent_firewalls)
elif appliance["category"] == "guest":
item = QtWidgets.QTreeWidgetItem(parent_guests)
if appliance["builtin"]:
appliance_name = appliance["name"]
else:
appliance_name = "{} (custom)".format(appliance["name"])
item.setText(0, appliance_name)
item.setText(1, appliance["category"].capitalize().replace("_", " "))
#item.setText(1, appliance["category"].capitalize().replace("_", " "))
if "qemu" in appliance:
item.setText(2, "Qemu")
item.setText(1, "Qemu")
elif "iou" in appliance:
item.setText(2, "IOU")
item.setText(1, "IOU")
elif "dynamips" in appliance:
item.setText(2, "Dynamips")
item.setText(1, "Dynamips")
elif "docker" in appliance:
item.setText(2, "Docker")
item.setText(1, "Docker")
else:
item.setText(2, "N/A")
item.setText(1, "N/A")
item.setText(3, appliance["vendor_name"])
item.setText(2, appliance["vendor_name"])
item.setData(0, QtCore.Qt.UserRole, appliance)
#item.setSizeHint(0, QtCore.QSize(32, 32))
@@ -186,6 +207,8 @@ class NewTemplateWizard(QtWidgets.QWizard, Ui_NewTemplateWizard):
self.uiAppliancesTreeWidget.sortByColumn(0, QtCore.Qt.AscendingOrder)
self.uiAppliancesTreeWidget.resizeColumnToContents(0)
if not appliance_filter:
self.uiAppliancesTreeWidget.collapseAll()
def initializePage(self, page_id):
"""

View File

@@ -70,9 +70,6 @@
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
@@ -84,11 +81,6 @@
<string>Appliance name</string>
</property>
</column>
<column>
<property name="text">
<string>Type</string>
</property>
</column>
<column>
<property name="text">
<string>Emulator</string>

View File

@@ -37,7 +37,6 @@ class Ui_NewTemplateWizard(object):
self.verticalLayout_2.addWidget(self.uiFilterLineEdit)
self.uiAppliancesTreeWidget = QtWidgets.QTreeWidget(self.uiApplianceFromServerWizardPage)
self.uiAppliancesTreeWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self.uiAppliancesTreeWidget.setRootIsDecorated(False)
self.uiAppliancesTreeWidget.setObjectName("uiAppliancesTreeWidget")
self.uiAppliancesTreeWidget.header().setSortIndicatorShown(True)
self.verticalLayout_2.addWidget(self.uiAppliancesTreeWidget)
@@ -59,7 +58,6 @@ class Ui_NewTemplateWizard(object):
self.uiFilterLineEdit.setPlaceholderText(_translate("NewTemplateWizard", "Filter"))
self.uiAppliancesTreeWidget.setSortingEnabled(True)
self.uiAppliancesTreeWidget.headerItem().setText(0, _translate("NewTemplateWizard", "Appliance name"))
self.uiAppliancesTreeWidget.headerItem().setText(1, _translate("NewTemplateWizard", "Type"))
self.uiAppliancesTreeWidget.headerItem().setText(2, _translate("NewTemplateWizard", "Emulator"))
self.uiAppliancesTreeWidget.headerItem().setText(3, _translate("NewTemplateWizard", "Vendor"))
self.uiAppliancesTreeWidget.headerItem().setText(1, _translate("NewTemplateWizard", "Emulator"))
self.uiAppliancesTreeWidget.headerItem().setText(2, _translate("NewTemplateWizard", "Vendor"))