mirror of
https://github.com/GNS3/gns3-gui.git
synced 2026-05-17 00:46:01 +03:00
Merge pull request #2730 from GNS3/lock-unlock-items
Display available appliances in a hierarchical folder structure. Fixes #2702
This commit is contained in:
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user