diff --git a/gns3/dialogs/node_info_dialog.py b/gns3/dialogs/node_info_dialog.py
new file mode 100644
index 00000000..c875f9ca
--- /dev/null
+++ b/gns3/dialogs/node_info_dialog.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2018 GNS3 Technologies Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+"""
+Dialog to show node information.
+"""
+
+from ..qt import QtWidgets
+from ..ui.node_info_dialog_ui import Ui_NodeInfoDialog
+
+
+class NodeInfoDialog(QtWidgets.QDialog, Ui_NodeInfoDialog):
+
+ """
+ Node information dialog.
+
+ :param parent: parent widget
+ """
+
+ def __init__(self, node, parent):
+
+ super().__init__(parent)
+ self.setupUi(self)
+ general_info = node.info()
+ usage_info = node.usage()
+ command_line_info = node.commandLine()
+ self.setWindowTitle(node.name())
+
+ # General tab
+ self.uiGeneralTextBrowser.setPlainText(general_info)
+
+ # Usage tab
+ if not usage_info:
+ usage_info = "No usage information has been provided for this node."
+ self.uiUsageTextBrowser.setPlainText(usage_info)
+
+ # Command line tab
+ if command_line_info is None:
+ command_line_info = "Command line information is not supported for this type of node."
+ elif len(command_line_info) == 0:
+ command_line_info = "Please start the node in order to get the command line information."
+ self.uiCommandLineTextBrowser.setPlainText(command_line_info)
diff --git a/gns3/graphics_view.py b/gns3/graphics_view.py
index e8c7ff18..90c69117 100644
--- a/gns3/graphics_view.py
+++ b/gns3/graphics_view.py
@@ -41,6 +41,7 @@ from .dialogs.symbol_selection_dialog import SymbolSelectionDialog
from .dialogs.idlepc_dialog import IdlePCDialog
from .dialogs.console_command_dialog import ConsoleCommandDialog
from .dialogs.file_editor_dialog import FileEditorDialog
+from .dialogs.node_info_dialog import NodeInfoDialog
from .local_config import LocalConfig
from .progress import Progress
from .utils.server_select import server_select
@@ -755,7 +756,15 @@ class GraphicsView(QtWidgets.QGraphicsView):
else:
style_dir = ":/icons/"
+ if True in list(map(lambda item: isinstance(item, NodeItem) and hasattr(item.node(), "info"), items)):
+ # Action: Show node information
+ show_node_info_action = QtWidgets.QAction("Show node information", menu)
+ show_node_info_action.setIcon(self._getIcon(style_dir, "help.svg"))
+ show_node_info_action.triggered.connect(self.showNodeInfoSlot)
+ menu.addAction(show_node_info_action)
+
if True in list(map(lambda item: isinstance(item, NodeItem) and hasattr(item.node(), "configPage"), items)):
+ # Action: Configure node
configure_action = QtWidgets.QAction("Configure", menu)
configure_action.setIcon(self._getIcon(style_dir, "configuration.svg"))
configure_action.triggered.connect(self.configureActionSlot)
@@ -885,13 +894,6 @@ class GraphicsView(QtWidgets.QGraphicsView):
style_action.triggered.connect(self.styleActionSlot)
menu.addAction(style_action)
- if True in list(map(lambda item: isinstance(item, NodeItem) and hasattr(item.node(), "commandLine"), items)):
- # Action: Get command line
- show_in_file_manager_action = QtWidgets.QAction("Command line", menu)
- show_in_file_manager_action.setIcon(self._getIcon(style_dir, "command_line.svg"))
- show_in_file_manager_action.triggered.connect(self.getCommandLineSlot)
- menu.addAction(show_in_file_manager_action)
-
if True in list(map(lambda item: isinstance(item, LabelItem), items)) and False in list(map(lambda item: item.parentItem() is None, items)):
# action only for port labels
reset_label_position_action = QtWidgets.QAction("Reset position", menu)
@@ -1271,30 +1273,21 @@ class GraphicsView(QtWidgets.QGraphicsView):
self._export_config_directory = os.path.dirname(path)
item.node().exportFile(config_file, path)
- def getCommandLineSlot(self):
+ def showNodeInfoSlot(self):
"""
- Slot to receive events from the get command line action in the
+ Slot to receive events from the show node info action in the
contextual menu.
"""
items = self.scene().selectedItems()
if len(items) != 1:
- QtWidgets.QMessageBox.critical(self, "Command line", "Please select only one router")
+ QtWidgets.QMessageBox.critical(self, "Show node information", "Please select only one node")
return
item = items[0]
- if isinstance(item, NodeItem) and hasattr(item.node(), "commandLine"):
- router = item.node()
- if router.commandLine() is None:
- QtWidgets.QMessageBox.warning(self, "Command line", "Get command line is not supported for this type of node.")
- elif router.commandLine() == '':
- QtWidgets.QMessageBox.warning(self, "Command line", "Please start the node in order to get the command line.")
- else:
- dialog = QtWidgets.QInputDialog(self)
- dialog.setOptions(QtWidgets.QInputDialog.NoButtons)
- dialog.setLabelText("Command used to start the VM:")
- dialog.setTextValue(router.commandLine())
- dialog.show()
- dialog.exec_()
+ if isinstance(item, NodeItem):
+ dialog = NodeInfoDialog(item.node(), parent=self)
+ dialog.show()
+ dialog.exec_()
def bringToFrontSlot(self):
"""
diff --git a/gns3/modules/docker/docker_vm.py b/gns3/modules/docker/docker_vm.py
index a0cfe3fd..657045c1 100644
--- a/gns3/modules/docker/docker_vm.py
+++ b/gns3/modules/docker/docker_vm.py
@@ -87,9 +87,6 @@ class DockerVM(Node):
port_name=port.name(),
port_description=port.description())
- if self._settings["usage"]:
- info += " Usage: {}\n".format(self._settings["usage"])
-
return info + port_info
def consoleHttpPath(self):
diff --git a/gns3/modules/docker/pages/docker_vm_configuration_page.py b/gns3/modules/docker/pages/docker_vm_configuration_page.py
index 1370a735..49d9bd09 100644
--- a/gns3/modules/docker/pages/docker_vm_configuration_page.py
+++ b/gns3/modules/docker/pages/docker_vm_configuration_page.py
@@ -149,6 +149,8 @@ class DockerVMConfigurationPage(QtWidgets.QWidget, Ui_dockerVMConfigPageWidget):
self.uiSymbolLineEdit.hide()
self.uiSymbolToolButton.hide()
+ self.uiUsageTextEdit.setPlainText(settings["usage"])
+
def _networkConfigEditSlot(self):
dialog = FileEditorDialog(self._node, self._node.configFiles()[0])
@@ -207,4 +209,6 @@ class DockerVMConfigurationPage(QtWidgets.QWidget, Ui_dockerVMConfigPageWidget):
symbol_path = self.uiSymbolLineEdit.text()
settings["symbol"] = symbol_path
+
+ settings["usage"] = self.uiUsageTextEdit.toPlainText()
return settings
diff --git a/gns3/modules/docker/ui/docker_vm_configuration_page.ui b/gns3/modules/docker/ui/docker_vm_configuration_page.ui
index 1f150003..04c6326a 100644
--- a/gns3/modules/docker/ui/docker_vm_configuration_page.ui
+++ b/gns3/modules/docker/ui/docker_vm_configuration_page.ui
@@ -314,6 +314,16 @@ one per line)
+
+
+ Usage
+
+
+ -
+
+
+
+
diff --git a/gns3/modules/docker/ui/docker_vm_configuration_page_ui.py b/gns3/modules/docker/ui/docker_vm_configuration_page_ui.py
index 6019c0f0..536cb3aa 100644
--- a/gns3/modules/docker/ui/docker_vm_configuration_page_ui.py
+++ b/gns3/modules/docker/ui/docker_vm_configuration_page_ui.py
@@ -149,6 +149,14 @@ class Ui_dockerVMConfigPageWidget(object):
spacerItem = QtWidgets.QSpacerItem(20, 388, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_2.addItem(spacerItem, 1, 1, 1, 1)
self.uiTabWidget.addTab(self.tab_2, "")
+ self.tab_3 = QtWidgets.QWidget()
+ self.tab_3.setObjectName("tab_3")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab_3)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.uiUsageTextEdit = QtWidgets.QPlainTextEdit(self.tab_3)
+ self.uiUsageTextEdit.setObjectName("uiUsageTextEdit")
+ self.verticalLayout_2.addWidget(self.uiUsageTextEdit)
+ self.uiTabWidget.addTab(self.tab_3, "")
self.verticalLayout.addWidget(self.uiTabWidget)
self.retranslateUi(dockerVMConfigPageWidget)
@@ -194,4 +202,5 @@ class Ui_dockerVMConfigPageWidget(object):
"(hostname:IP\n"
"one per line)"))
self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.tab_2), _translate("dockerVMConfigPageWidget", "Advanced"))
+ self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.tab_3), _translate("dockerVMConfigPageWidget", "Usage"))
diff --git a/gns3/modules/dynamips/nodes/router.py b/gns3/modules/dynamips/nodes/router.py
index d975b0b9..7aaf524a 100644
--- a/gns3/modules/dynamips/nodes/router.py
+++ b/gns3/modules/dynamips/nodes/router.py
@@ -268,9 +268,6 @@ class Router(Node):
# gather information about PA, their interfaces and connections
slot_info = self._slot_info()
- if self._settings["usage"]:
- info += " Usage: {}\n".format(self._settings["usage"])
-
return info + slot_info
def configFiles(self):
diff --git a/gns3/modules/dynamips/pages/ios_router_configuration_page.py b/gns3/modules/dynamips/pages/ios_router_configuration_page.py
index 3529afae..d3d25e5f 100644
--- a/gns3/modules/dynamips/pages/ios_router_configuration_page.py
+++ b/gns3/modules/dynamips/pages/ios_router_configuration_page.py
@@ -422,6 +422,8 @@ class IOSRouterConfigurationPage(QtWidgets.QWidget, Ui_iosRouterConfigPageWidget
else:
self.uiSparseMemoryCheckBox.hide()
+ self.uiUsageTextEdit.setPlainText(settings["usage"])
+
def _checkForLinkConnectedToAdapter(self, slot_number, settings, node):
"""
Checks if links are connected to an adapter.
@@ -639,6 +641,8 @@ class IOSRouterConfigurationPage(QtWidgets.QWidget, Ui_iosRouterConfigPageWidget
if node:
self._checkForLinkConnectedToWIC(wic_number, settings, node)
settings["wic" + str(wic_number)] = ""
+
+ settings["usage"] = self.uiUsageTextEdit.toPlainText()
return settings
def _configFileValid(self, path):
diff --git a/gns3/modules/dynamips/ui/ios_router_configuration_page.ui b/gns3/modules/dynamips/ui/ios_router_configuration_page.ui
index 4a1c3aa1..a709a011 100755
--- a/gns3/modules/dynamips/ui/ios_router_configuration_page.ui
+++ b/gns3/modules/dynamips/ui/ios_router_configuration_page.ui
@@ -6,8 +6,8 @@
0
0
- 795
- 727
+ 980
+ 734
@@ -1016,6 +1016,16 @@
+
+
+ Usage
+
+
+ -
+
+
+
+
diff --git a/gns3/modules/dynamips/ui/ios_router_configuration_page_ui.py b/gns3/modules/dynamips/ui/ios_router_configuration_page_ui.py
index f21ea483..54ecaa7f 100644
--- a/gns3/modules/dynamips/ui/ios_router_configuration_page_ui.py
+++ b/gns3/modules/dynamips/ui/ios_router_configuration_page_ui.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file '/home/grossmj/PycharmProjects/gns3-gui/gns3/modules/dynamips/ui/ios_router_configuration_page.ui'
#
-# Created by: PyQt5 UI code generator 5.5.1
+# Created by: PyQt5 UI code generator 5.9
#
# WARNING! All changes made in this file will be lost!
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_iosRouterConfigPageWidget(object):
def setupUi(self, iosRouterConfigPageWidget):
iosRouterConfigPageWidget.setObjectName("iosRouterConfigPageWidget")
- iosRouterConfigPageWidget.resize(795, 727)
+ iosRouterConfigPageWidget.resize(980, 734)
self.vboxlayout = QtWidgets.QVBoxLayout(iosRouterConfigPageWidget)
self.vboxlayout.setObjectName("vboxlayout")
self.uiTabWidget = QtWidgets.QTabWidget(iosRouterConfigPageWidget)
@@ -531,6 +531,14 @@ class Ui_iosRouterConfigPageWidget(object):
spacerItem4 = QtWidgets.QSpacerItem(20, 194, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem4)
self.uiTabWidget.addTab(self.uiEnvironmentPageWidget, "")
+ self.uiUsageTab = QtWidgets.QWidget()
+ self.uiUsageTab.setObjectName("uiUsageTab")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.uiUsageTab)
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ self.uiUsageTextEdit = QtWidgets.QPlainTextEdit(self.uiUsageTab)
+ self.uiUsageTextEdit.setObjectName("uiUsageTextEdit")
+ self.verticalLayout_2.addWidget(self.uiUsageTextEdit)
+ self.uiTabWidget.addTab(self.uiUsageTab, "")
self.vboxlayout.addWidget(self.uiTabWidget)
self.retranslateUi(iosRouterConfigPageWidget)
@@ -630,4 +638,5 @@ class Ui_iosRouterConfigPageWidget(object):
self.uiSensor4Label.setText(_translate("iosRouterConfigPageWidget", "NPE outlet:"))
self.uiSensor4SpinBox.setSuffix(_translate("iosRouterConfigPageWidget", " C"))
self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.uiEnvironmentPageWidget), _translate("iosRouterConfigPageWidget", "Environment"))
+ self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.uiUsageTab), _translate("iosRouterConfigPageWidget", "Usage"))
diff --git a/gns3/modules/iou/iou_device.py b/gns3/modules/iou/iou_device.py
index c5cc561b..00790675 100644
--- a/gns3/modules/iou/iou_device.py
+++ b/gns3/modules/iou/iou_device.py
@@ -99,9 +99,6 @@ class IOUDevice(Node):
port_info += " {port_name} {port_description}\n".format(port_name=port.name(),
port_description=port.description())
- if self._settings["usage"]:
- info += " Usage: {}\n".format(self._settings["usage"])
-
return info + port_info
def configFiles(self):
diff --git a/gns3/modules/iou/pages/iou_device_configuration_page.py b/gns3/modules/iou/pages/iou_device_configuration_page.py
index f915e4b4..e22d0629 100644
--- a/gns3/modules/iou/pages/iou_device_configuration_page.py
+++ b/gns3/modules/iou/pages/iou_device_configuration_page.py
@@ -226,6 +226,7 @@ class iouDeviceConfigurationPage(QtWidgets.QWidget, Ui_iouDeviceConfigPageWidget
# load the number of adapters
self.uiEthernetAdaptersSpinBox.setValue(settings["ethernet_adapters"])
self.uiSerialAdaptersSpinBox.setValue(settings["serial_adapters"])
+ self.uiUsageTextEdit.setPlainText(settings["usage"])
def saveSettings(self, settings, node=None, group=False):
"""
@@ -312,6 +313,7 @@ class iouDeviceConfigurationPage(QtWidgets.QWidget, Ui_iouDeviceConfigPageWidget
# save console type
settings["console_type"] = self.uiConsoleTypeComboBox.currentText().lower()
settings["console_auto_start"] = self.uiConsoleAutoStartCheckBox.isChecked()
+ settings["usage"] = self.uiUsageTextEdit.toPlainText()
return settings
def _configFileValid(self, path):
diff --git a/gns3/modules/iou/ui/iou_device_configuration_page.ui b/gns3/modules/iou/ui/iou_device_configuration_page.ui
index 84357f90..758d58f1 100755
--- a/gns3/modules/iou/ui/iou_device_configuration_page.ui
+++ b/gns3/modules/iou/ui/iou_device_configuration_page.ui
@@ -399,6 +399,16 @@
+
+
+ Usage
+
+
+ -
+
+
+
+
diff --git a/gns3/modules/iou/ui/iou_device_configuration_page_ui.py b/gns3/modules/iou/ui/iou_device_configuration_page_ui.py
index f6702387..ebe0d688 100644
--- a/gns3/modules/iou/ui/iou_device_configuration_page_ui.py
+++ b/gns3/modules/iou/ui/iou_device_configuration_page_ui.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file '/home/grossmj/PycharmProjects/gns3-gui/gns3/modules/iou/ui/iou_device_configuration_page.ui'
#
-# Created by: PyQt5 UI code generator 5.5.1
+# Created by: PyQt5 UI code generator 5.9
#
# WARNING! All changes made in this file will be lost!
@@ -199,6 +199,14 @@ class Ui_iouDeviceConfigPageWidget(object):
spacerItem1 = QtWidgets.QSpacerItem(20, 347, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_5.addItem(spacerItem1, 1, 0, 1, 1)
self.uiTabWidget.addTab(self.tab_2, "")
+ self.tab_3 = QtWidgets.QWidget()
+ self.tab_3.setObjectName("tab_3")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tab_3)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.uiUsageTextEdit = QtWidgets.QPlainTextEdit(self.tab_3)
+ self.uiUsageTextEdit.setObjectName("uiUsageTextEdit")
+ self.verticalLayout_3.addWidget(self.uiUsageTextEdit)
+ self.uiTabWidget.addTab(self.tab_3, "")
self.verticalLayout.addWidget(self.uiTabWidget)
self.retranslateUi(iouDeviceConfigPageWidget)
@@ -238,4 +246,5 @@ class Ui_iouDeviceConfigPageWidget(object):
self.uiSerialAdaptersLabel.setText(_translate("iouDeviceConfigPageWidget", "Serial adapters:"))
self.uiSerialAdaptersSpinBox.setToolTip(_translate("iouDeviceConfigPageWidget", "1 adapter equals 4 serial interfaces"))
self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.tab_2), _translate("iouDeviceConfigPageWidget", "Network"))
+ self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.tab_3), _translate("iouDeviceConfigPageWidget", "Usage"))
diff --git a/gns3/modules/qemu/pages/qemu_vm_configuration_page.py b/gns3/modules/qemu/pages/qemu_vm_configuration_page.py
index ed87d11b..86bc6dc4 100644
--- a/gns3/modules/qemu/pages/qemu_vm_configuration_page.py
+++ b/gns3/modules/qemu/pages/qemu_vm_configuration_page.py
@@ -541,6 +541,7 @@ class QemuVMConfigurationPage(QtWidgets.QWidget, Ui_QemuVMConfigPageWidget):
if index != -1:
self.uiProcessPriorityComboBox.setCurrentIndex(index)
self.uiQemuOptionsLineEdit.setText(settings["options"])
+ self.uiUsageTextEdit.setPlainText(settings["usage"])
def saveSettings(self, settings, node=None, group=False):
"""
@@ -651,4 +652,5 @@ class QemuVMConfigurationPage(QtWidgets.QWidget, Ui_QemuVMConfigPageWidget):
settings["cpu_throttling"] = 0
settings["process_priority"] = self.uiProcessPriorityComboBox.currentText().lower()
settings["options"] = self.uiQemuOptionsLineEdit.text()
+ settings["usage"] = self.uiUsageTextEdit.toPlainText()
return settings
diff --git a/gns3/modules/qemu/qemu_vm.py b/gns3/modules/qemu/qemu_vm.py
index fe0c1960..f48031d9 100644
--- a/gns3/modules/qemu/qemu_vm.py
+++ b/gns3/modules/qemu/qemu_vm.py
@@ -130,9 +130,6 @@ class QemuVM(Node):
if port.macAddress():
port_info += " MAC address is {mac_address}\n".format(mac_address=port.macAddress())
- if self._settings["usage"]:
- info += " Usage: {}\n".format(self._settings["usage"])
-
return info + port_info
def configPage(self):
diff --git a/gns3/modules/qemu/ui/qemu_vm_configuration_page.ui b/gns3/modules/qemu/ui/qemu_vm_configuration_page.ui
index 8f7536d6..207eb035 100755
--- a/gns3/modules/qemu/ui/qemu_vm_configuration_page.ui
+++ b/gns3/modules/qemu/ui/qemu_vm_configuration_page.ui
@@ -6,8 +6,8 @@
0
0
- 888
- 882
+ 941
+ 877
@@ -658,7 +658,7 @@
- Advanced settings
+ Advanced
-
@@ -896,6 +896,16 @@
+
+
+ Usage
+
+
+ -
+
+
+
+
diff --git a/gns3/modules/qemu/ui/qemu_vm_configuration_page_ui.py b/gns3/modules/qemu/ui/qemu_vm_configuration_page_ui.py
index 62717ff0..77e451ab 100644
--- a/gns3/modules/qemu/ui/qemu_vm_configuration_page_ui.py
+++ b/gns3/modules/qemu/ui/qemu_vm_configuration_page_ui.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file '/home/grossmj/PycharmProjects/gns3-gui/gns3/modules/qemu/ui/qemu_vm_configuration_page.ui'
#
-# Created by: PyQt5 UI code generator 5.5.1
+# Created by: PyQt5 UI code generator 5.9
#
# WARNING! All changes made in this file will be lost!
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_QemuVMConfigPageWidget(object):
def setupUi(self, QemuVMConfigPageWidget):
QemuVMConfigPageWidget.setObjectName("QemuVMConfigPageWidget")
- QemuVMConfigPageWidget.resize(888, 882)
+ QemuVMConfigPageWidget.resize(941, 877)
self.verticalLayout = QtWidgets.QVBoxLayout(QemuVMConfigPageWidget)
self.verticalLayout.setObjectName("verticalLayout")
self.uiQemutabWidget = QtWidgets.QTabWidget(QemuVMConfigPageWidget)
@@ -436,6 +436,14 @@ class Ui_QemuVMConfigPageWidget(object):
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem4)
self.uiQemutabWidget.addTab(self.uiAdvancedSettingsTab, "")
+ self.uiUsageTab = QtWidgets.QWidget()
+ self.uiUsageTab.setObjectName("uiUsageTab")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.uiUsageTab)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.uiUsageTextEdit = QtWidgets.QPlainTextEdit(self.uiUsageTab)
+ self.uiUsageTextEdit.setObjectName("uiUsageTextEdit")
+ self.verticalLayout_3.addWidget(self.uiUsageTextEdit)
+ self.uiQemutabWidget.addTab(self.uiUsageTab, "")
self.verticalLayout.addWidget(self.uiQemutabWidget)
self.retranslateUi(QemuVMConfigPageWidget)
@@ -536,5 +544,6 @@ class Ui_QemuVMConfigPageWidget(object):
"\n"
"