Completes PyQt5 support with backward PyQt4 compatibility.

This commit is contained in:
Jeremy
2015-04-23 16:10:22 -06:00
parent 6ab00e46b2
commit 4dc3647370
23 changed files with 143 additions and 108 deletions

View File

@@ -31,6 +31,8 @@ The following commands will install some of these dependencies:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pyqt5
sudo apt-get install python3-pyqt5.qtsvg
sudo apt-get install python3-pyqt5.qtwebkit
If you want to test using Qt4

View File

@@ -18,7 +18,7 @@
import os
import sys
from ..qt import QtCore, QtGui, QtWebKit, QtWidgets
from ..qt import QtCore, QtGui, QtWebKitWidgets, QtWidgets
from ..ui.getting_started_dialog_ui import Ui_GettingStartedDialog
from ..utils.get_resource import get_resource
from ..local_config import LocalConfig
@@ -38,7 +38,7 @@ class GettingStartedDialog(QtWidgets.QDialog, Ui_GettingStartedDialog):
self.uiWebView.page().mainFrame().setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff)
self.uiWebView.page().mainFrame().setScrollBarPolicy(QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff)
self.adjustSize()
self.uiWebView.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
self.uiWebView.page().setLinkDelegationPolicy(QtWebKitWidgets.QWebPage.DelegateAllLinks)
self.uiWebView.linkClicked.connect(self._urlClickedSlot)
self._local_config = LocalConfig.instance()
gui_settings = self._local_config.loadSectionSettings("GUI", {"hide_getting_started_dialog": False})

View File

@@ -72,8 +72,9 @@ class NewProjectDialog(QtWidgets.QDialog, Ui_NewProjectDialog):
Slot to select the a new project location.
"""
path = QtWidgets.QFileDialog.getSaveFileName(self, "Project location", os.path.join(self._main_window.projectsDirPath(),
self.uiNameLineEdit.text()))
path, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Project location", os.path.join(self._main_window.projectsDirPath(),
self.uiNameLineEdit.text()))
if path:
self.uiLocationLineEdit.setText(path)

View File

@@ -1044,19 +1044,20 @@ class GraphicsView(QtWidgets.QGraphicsView):
item.node().importConfigFromDirectory(path)
else:
item = items[0]
path, _ = QtWidgets.QFileDialog.getOpenFileNameAndFilter(self,
"Import config",
".",
"All files (*.*);;Config files (*.cfg)",
"Config files (*.cfg)")
path, _ = QtWidgets.QFileDialog.getOpenFileName(self,
"Import config",
".",
"All files (*.*);;Config files (*.cfg)",
"Config files (*.cfg)")
if path:
item.node().importConfig(path)
if hasattr(item.node(), "importPrivateConfig"):
path, _ = QtWidgets.QFileDialog.getOpenFileNameAndFilter(self,
"Import private-config",
".",
"All files (*.*);;Config files (*.cfg)",
"Config files (*.cfg)")
path, _ = QtWidgets.QFileDialog.getOpenFileName(self,
"Import private-config",
".",
"All files (*.*);;Config files (*.cfg)",
"Config files (*.cfg)")
if path:
item.node().importPrivateConfig(path)
@@ -1081,9 +1082,9 @@ class GraphicsView(QtWidgets.QGraphicsView):
item.node().exportConfigToDirectory(path)
else:
item = items[0]
config_path = QtWidgets.QFileDialog.getSaveFileName(self, "Export config")
config_path, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Export config")
if hasattr(item.node(), "importPrivateConfig"):
private_config_path = QtWidgets.QFileDialog.getSaveFileName(self, "Export private-config")
private_config_path, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Export private-config")
item.node().exportConfig(config_path, private_config_path)
else:
item.node().exportConfig(config_path)

View File

@@ -417,11 +417,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
Slot called to open a project.
"""
path, _ = QtWidgets.QFileDialog.getOpenFileNameAndFilter(self,
"Open project",
self.projectsDirPath(),
"All files (*.*);;GNS3 project files (*.gns3);;NET files (*.net)",
"GNS3 project files (*.gns3)")
path, _ = QtWidgets.QFileDialog.getOpenFileName(self,
"Open project",
self.projectsDirPath(),
"All files (*.*);;GNS3 project files (*.gns3);;NET files (*.net)",
"GNS3 project files (*.gns3)")
self._loadPath(path)
def openRecentFileSlot(self):
@@ -551,7 +551,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
screenshot_dir = project_dir
screenshot_path = os.path.join(screenshot_dir, "screenshot")
path, selected_filter = QtWidgets.QFileDialog.getSaveFileNameAndFilter(self, "Screenshot", screenshot_path, file_formats)
path, selected_filter = QtWidgets.QFileDialog.getSaveFileName(self, "Screenshot", screenshot_path, file_formats)
if not path:
return

View File

@@ -53,7 +53,7 @@ class DynamipsPreferencesPage(QtWidgets.QWidget, Ui_DynamipsPreferencesPageWidge
file_filter = ""
if sys.platform.startswith("win"):
file_filter = "Executable (*.exe);;All files (*.*)"
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select Dynamips", ".", file_filter)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select Dynamips", ".", file_filter)
if not path:
return

View File

@@ -123,7 +123,7 @@ class IOSRouterConfigurationPage(QtWidgets.QWidget, Ui_iosRouterConfigPageWidget
"""
config_dir = os.path.join(os.path.dirname(QtCore.QSettings().fileName()), "base_configs")
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select a startup configuration", config_dir)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select a startup configuration", config_dir)
if not path:
return
@@ -140,7 +140,7 @@ class IOSRouterConfigurationPage(QtWidgets.QWidget, Ui_iosRouterConfigPageWidget
"""
config_dir = os.path.join(os.path.dirname(QtCore.QSettings().fileName()), "base_configs")
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select a private configuration", config_dir)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select a private configuration", config_dir)
if not path:
return

View File

@@ -213,11 +213,12 @@ class IOSRouterPreferencesPage(QtWidgets.QWidget, Ui_IOSRouterPreferencesPageWid
"""
destination_directory = os.path.join(MainWindow.instance().imagesDirPath(), "IOS")
path, _ = QtWidgets.QFileDialog.getOpenFileNameAndFilter(parent,
"Select an IOS image",
destination_directory,
"All files (*.*);;IOS image (*.bin *.image)",
"IOS image (*.bin *.image)")
path, _ = QtWidgets.QFileDialog.getOpenFileName(parent,
"Select an IOS image",
destination_directory,
"All files (*.*);;IOS image (*.bin *.image)",
"IOS image (*.bin *.image)")
if not path:
return

View File

@@ -88,7 +88,7 @@ class iouDeviceConfigurationPage(QtWidgets.QWidget, Ui_iouDeviceConfigPageWidget
"""
config_dir = os.path.join(os.path.dirname(QtCore.QSettings().fileName()), "base_configs")
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select an initial configuration", config_dir)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select an initial configuration", config_dir)
if not path:
return

View File

@@ -209,11 +209,11 @@ class IOUDevicePreferencesPage(QtWidgets.QWidget, Ui_IOUDevicePreferencesPageWid
"""
destination_directory = os.path.join(MainWindow.instance().imagesDirPath(), "IOU")
path, _ = QtWidgets.QFileDialog.getOpenFileNameAndFilter(parent,
"Select an IOU image",
destination_directory,
"All files (*)",
"IOU image (*.bin *.image)")
path, _ = QtWidgets.QFileDialog.getOpenFileName(parent,
"Select an IOU image",
destination_directory,
"All files (*)",
"IOU image (*.bin *.image)")
if not path:
return

View File

@@ -22,7 +22,7 @@ Configuration page for IOU preferences.
import os
import sys
from gns3.qt import QtGui, QtWidgets
from gns3.qt import QtWidgets
from .. import IOU
from ..ui.iou_preferences_page_ui import Ui_IOUPreferencesPageWidget
@@ -55,7 +55,7 @@ class IOUPreferencesPage(QtWidgets.QWidget, Ui_IOUPreferencesPageWidget):
Slot to open a file browser and select an iourc file
"""
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select the IOURC file", ".")
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select the IOURC file", ".")
if not path:
return
@@ -73,7 +73,7 @@ class IOUPreferencesPage(QtWidgets.QWidget, Ui_IOUPreferencesPageWidget):
filter = ""
if sys.platform.startswith("win"):
filter = "Executable (*.exe);;All files (*.*)"
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select iouyap", ".", filter)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select iouyap", ".", filter)
if not path:
return

View File

@@ -23,7 +23,7 @@ import os
from functools import partial
from collections import OrderedDict
from gns3.qt import QtCore, QtGui, QtWidgets
from gns3.qt import QtCore, QtWidgets
from gns3.servers import Servers
from gns3.modules.module_error import ModuleError
from gns3.main_window import MainWindow
@@ -97,9 +97,7 @@ class QemuVMConfigurationPage(QtWidgets.QWidget, Ui_QemuVMConfigPageWidget):
def getDiskImage(parent):
destination_directory = os.path.join(MainWindow.instance().imagesDirPath(), "QEMU")
path, _ = QtWidgets.QFileDialog.getOpenFileNameAndFilter(parent,
"Select a QEMU disk image",
destination_directory)
path, _ = QtWidgets.QFileDialog.getOpenFileName(parent, "Select a QEMU disk image", destination_directory)
if not path:
return

View File

@@ -66,7 +66,7 @@ class VirtualBoxVMWizard(QtWidgets.QWizard, Ui_VirtualBoxVMWizard):
if self.page(page_id) == self.uiVirtualBoxWizardPage:
self._server.get("/virtualbox/vms", self._getVirtualBoxVMsFromServerCallback)
def _getVirtualBoxVMsFromServerCallback(self, result, error=False, **kwargs):
def _getVirtualBoxVMsFromServerCallback(self, result, error=False, **kwargs):
"""
Callback for getVirtualBoxVMsFromServer.

View File

@@ -20,7 +20,7 @@ Configuration page for VirtualBox preferences.
"""
import os
from gns3.qt import QtGui, QtWidgets
from gns3.qt import QtWidgets
from .. import VirtualBox
from ..ui.virtualbox_preferences_page_ui import Ui_VirtualBoxPreferencesPageWidget
@@ -48,7 +48,7 @@ class VirtualBoxPreferencesPage(QtWidgets.QWidget, Ui_VirtualBoxPreferencesPageW
Slot to open a file browser and select VBoxManage.
"""
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select VBoxManage", ".")
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select VBoxManage", ".")
if not path:
return

View File

@@ -21,7 +21,7 @@ Configuration page for VPCS devices.
import os
from gns3.qt import QtGui, QtWidgets
from gns3.qt import QtWidgets
from gns3.utils.get_resource import get_resource
from ..ui.vpcs_device_configuration_page_ui import Ui_VPCSDeviceConfigPageWidget
@@ -44,7 +44,7 @@ class VPCSDeviceConfigurationPage(QtWidgets.QWidget, Ui_VPCSDeviceConfigPageWidg
# """
#
# config_dir = get_resource("configs")
# path = QtWidgets.QFileDialog.getOpenFileName(self, "Select a startup configuration", config_dir)
# path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select a startup configuration", config_dir)
# if not path:
# return
#

View File

@@ -22,7 +22,7 @@ Configuration page for VPCS preferences.
import os
import sys
from gns3.qt import QtCore, QtGui, QtWidgets
from gns3.qt import QtCore, QtWidgets
from .. import VPCS
from ..ui.vpcs_preferences_page_ui import Ui_VPCSPreferencesPageWidget
@@ -54,7 +54,7 @@ class VPCSPreferencesPage(QtWidgets.QWidget, Ui_VPCSPreferencesPageWidget):
filter = ""
if sys.platform.startswith("win"):
filter = "Executable (*.exe);;All files (*.*)"
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select VPCS", ".", filter)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select VPCS", ".", filter)
if not path:
return
@@ -70,7 +70,7 @@ class VPCSPreferencesPage(QtWidgets.QWidget, Ui_VPCSPreferencesPageWidget):
"""
config_dir = os.path.join(os.path.dirname(QtCore.QSettings().fileName()), "base_configs")
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select a script file", config_dir)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select a script file", config_dir)
if not path:
return

View File

@@ -18,7 +18,7 @@
import os
import sys
from .qt import QtGui, QtCore, QtWebKit, QtWidgets
from .qt import QtGui, QtCore, QtWebKitWidgets, QtWidgets
from .ui.news_dock_widget_ui import Ui_NewsDockWidget
from .utils.get_resource import get_resource
@@ -39,7 +39,7 @@ class NewsDockWidget(QtWidgets.QDockWidget, Ui_NewsDockWidget):
self._visible = True
self.visibilityChanged.connect(self._visibilityChangedSlot)
self.uiWebView.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
self.uiWebView.page().setLinkDelegationPolicy(QtWebKitWidgets.QWebPage.DelegateAllLinks)
self.uiWebView.page().mainFrame().setScrollBarPolicy(QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff)
self.uiWebView.linkClicked.connect(self._urlClickedSlot)
self.uiWebView.loadFinished.connect(self._loadFinishedSlot)

View File

@@ -127,7 +127,7 @@ class GeneralPreferencesPage(QtWidgets.QWidget, Ui_GeneralPreferencesPageWidget)
configuration_file_path = LocalConfig.instance().configFilePath()
directory = os.path.dirname(configuration_file_path)
path = QtWidgets.QFileDialog.getOpenFileName(self, "Import configuration file", directory, "Configuration file (*.ini *.conf);;All files (*.*)")
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Import configuration file", directory, "Configuration file (*.ini *.conf);;All files (*.*)")
if not path:
return
@@ -166,7 +166,7 @@ class GeneralPreferencesPage(QtWidgets.QWidget, Ui_GeneralPreferencesPageWidget)
configuration_file_path = LocalConfig.instance().configFilePath()
directory = os.path.dirname(configuration_file_path)
path = QtWidgets.QFileDialog.getSaveFileName(self, "Export configuration file", directory, "Configuration file (*.ini *.conf);;All files (*.*)")
path, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Export configuration file", directory, "Configuration file (*.ini *.conf);;All files (*.*)")
if not path:
return

View File

@@ -21,7 +21,7 @@ Configuration page for server preferences.
import os
import sys
from gns3.qt import QtNetwork, QtGui, QtWidgets
from gns3.qt import QtNetwork, QtWidgets
from ..ui.server_preferences_page_ui import Ui_ServerPreferencesPageWidget
from ..servers import Servers
from ..topology import Topology
@@ -95,7 +95,7 @@ class ServerPreferencesPage(QtWidgets.QWidget, Ui_ServerPreferencesPageWidget):
filter = ""
if sys.platform.startswith("win"):
filter = "Executable (*.exe);;All files (*.*)"
path = QtWidgets.QFileDialog.getOpenFileName(self, "Select the local server", ".", filter)
path, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Select the local server", ".", filter)
if not path:
return

View File

@@ -17,10 +17,14 @@
"""
Compatibility layer for Qt bindings, so it is easier to switch from PyQt4 to PyQt5 and
vice-versa. If you need you can add PySide
vice-versa. It is possible to add PySide if needed.
For PyQt4 and PyQt5 differences please see http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html
"""
# based on https://gist.github.com/remram44/5985681
# based on https://gist.github.com/remram44/5985681 and
# https://github.com/pyQode/pyqode.qt/blob/master/pyqode/qt/QtWidgets.py (MIT license)
import sys
import sip
@@ -38,23 +42,37 @@ else:
DEFAULT_BINDING = 'PyQt5'
except ImportError:
DEFAULT_BINDING = 'PyQt4'
print("WARNING: PyQT4 is no longer supported please upgrade to PyQT5")
print("WARNING: PyQt4 is no longer supported, please upgrade to PyQt5")
if DEFAULT_BINDING == 'PyQt5':
from PyQt5 import QtCore, QtGui, QtNetwork, QtSvg, QtWebKit, QtWidgets
from PyQt5 import QtCore, QtGui, QtNetwork, QtWidgets
sys.modules[__name__ + '.QtCore'] = QtCore
sys.modules[__name__ + '.QtGui'] = QtGui
sys.modules[__name__ + '.QtNetwork'] = QtNetwork
sys.modules[__name__ + '.QtSvg'] = QtSvg
sys.modules[__name__ + '.QtWebKit'] = QtWebKit
sys.modules[__name__ + '.QtWidgets'] = QtWidgets
try:
from PyQt5 import QtSvg
sys.modules[__name__ + '.QtSvg'] = QtSvg
except ImportError:
raise RuntimeError("Please install the PyQt5.QtSvg module")
try:
from PyQt5 import QtWebKit
from PyQt5 import QtWebKitWidgets
sys.modules[__name__ + '.QtWebKit'] = QtWebKit
sys.modules[__name__ + '.QtWebKitWidgets'] = QtWebKitWidgets
except ImportError:
pass
QtCore.Signal = QtCore.pyqtSignal
QtCore.Slot = QtCore.pyqtSlot
QtCore.Property = QtCore.pyqtProperty
QtCore.BINDING_VERSION_STR = QtCore.PYQT_VERSION_STR
elif DEFAULT_BINDING == 'PyQt4':
sip.setapi('QDate', 2)
sip.setapi('QDateTime', 2)
sip.setapi('QString', 2)
@@ -72,6 +90,8 @@ elif DEFAULT_BINDING == 'PyQt4':
try:
from PyQt4 import QtWebKit
sys.modules[__name__ + '.QtWebKit'] = QtWebKit
# Qt5 name compatibility
QtWebKitWidgets = QtWebKit
except ImportError:
pass
@@ -80,9 +100,27 @@ elif DEFAULT_BINDING == 'PyQt4':
QtCore.Property = QtCore.pyqtProperty
QtCore.BINDING_VERSION_STR = QtCore.PYQT_VERSION_STR
# Qt 5 compatibilty previously it was QtGui sub modules
# Qt5 name compatibility
QtWidgets = QtGui
from PyQt4.QtGui import QFileDialog as OldFileDialog
class QFileDialog(OldFileDialog):
@staticmethod
def getOpenFileName(parent=None, caption='', directory='', filter='', selectedFilter='', options=OldFileDialog.Options()):
return OldFileDialog.getOpenFileNameAndFilter(parent, caption, directory, filter, selectedFilter,options)
@staticmethod
def getOpenFileNames(parent=None, caption='', directory='', filter='', selectedFilter='', options=OldFileDialog.Options()):
return OldFileDialog.getOpenFileNamesAndFilter(parent, caption, directory, filter, selectedFilter, options)
@staticmethod
def getSaveFileName(parent=None, caption='', directory='', filter='', selectedFilter='', options=OldFileDialog.Options()):
return OldFileDialog.getSaveFileNameAndFilter(parent, caption, directory, filter, selectedFilter, options)
QtGui.QFileDialog = QFileDialog
# If we run from a test we replace the signal by a synchronous version
if hasattr(sys, '_called_from_test'):
class FakeQtSignal:

View File

@@ -36,9 +36,6 @@ background-none;
<property name="dockOptions">
<set>QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks</set>
</property>
<property name="unifiedTitleAndToolBarOnMac">
<bool>false</bool>
</property>
<widget class="QWidget" name="uiCentralWidget">
<layout class="QGridLayout">
<property name="margin">

View File

@@ -1,39 +1,36 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '/Users/noplay/code/gns3/gns3-gui/gns3/ui/main_window.ui'
# Form implementation generated from reading ui file '/home/grossmj/PycharmProjects/gns3-gui/gns3/ui/main_window.ui'
#
# Created: Fri Apr 17 10:44:31 2015
# by: PyQt5 UI code generator 5.4
# Created: Thu Apr 23 14:43:31 2015
# by: PyQt5 UI code generator 5.2.1
#
# WARNING! All changes made in this file will be lost!
from gns3.qt import QtCore, QtGui, QtWidgets
class Ui_MainWindow:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowModality(QtCore.Qt.NonModal)
MainWindow.resize(984, 715)
MainWindow.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)
MainWindow.setStyleSheet("#toolBar_Devices QToolButton {\n"
"width: 50px;\n"
"height: 55px;\n"
"border:solid 1px black opacity 0.4;\n"
"background-none;\n"
"}\n"
"\n"
"#toolBar_General QToolButton {\n"
"width: 36px;\n"
"height: 36px;\n"
"border:solid 1px black opacity 0.4;\n"
"background-none;\n"
"}\n"
"\n"
"")
MainWindow.setDockOptions(QtWidgets.QMainWindow.AllowTabbedDocks | QtWidgets.QMainWindow.AnimatedDocks)
MainWindow.setUnifiedTitleAndToolBarOnMac(False)
"width: 50px;\n"
"height: 55px;\n"
"border:solid 1px black opacity 0.4;\n"
"background-none;\n"
"}\n"
"\n"
"#toolBar_General QToolButton {\n"
"width: 36px;\n"
"height: 36px;\n"
"border:solid 1px black opacity 0.4;\n"
"background-none;\n"
"}\n"
"\n"
"")
MainWindow.setDockOptions(QtWidgets.QMainWindow.AllowTabbedDocks|QtWidgets.QMainWindow.AnimatedDocks)
self.uiCentralWidget = QtWidgets.QWidget(MainWindow)
self.uiCentralWidget.setObjectName("uiCentralWidget")
self.gridlayout = QtWidgets.QGridLayout(self.uiCentralWidget)
@@ -85,7 +82,7 @@ class Ui_MainWindow:
self.uiNodesDockWidget.setEnabled(True)
self.uiNodesDockWidget.setVisible(True)
self.uiNodesDockWidget.setFloating(False)
self.uiNodesDockWidget.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea)
self.uiNodesDockWidget.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea)
self.uiNodesDockWidget.setObjectName("uiNodesDockWidget")
self.uiNodesDockWidgetContents = QtWidgets.QWidget()
self.uiNodesDockWidgetContents.setObjectName("uiNodesDockWidgetContents")
@@ -147,7 +144,7 @@ class Ui_MainWindow:
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.uiTopologySummaryDockWidget.sizePolicy().hasHeightForWidth())
self.uiTopologySummaryDockWidget.setSizePolicy(sizePolicy)
self.uiTopologySummaryDockWidget.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea)
self.uiTopologySummaryDockWidget.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea)
self.uiTopologySummaryDockWidget.setObjectName("uiTopologySummaryDockWidget")
self.uiTopologySummaryDockWidgetContents = QtWidgets.QWidget()
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
@@ -196,22 +193,22 @@ class Ui_MainWindow:
self.uiOnlineHelpAction.setObjectName("uiOnlineHelpAction")
self.uiScreenshotAction = QtWidgets.QAction(MainWindow)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/icons/camera-photo.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon4.addPixmap(QtGui.QPixmap(":/icons/camera-photo-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon4.addPixmap(QtGui.QPixmap(":/icons/camera-photo.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiScreenshotAction.setIcon(icon4)
self.uiScreenshotAction.setObjectName("uiScreenshotAction")
self.uiStartAllAction = QtWidgets.QAction(MainWindow)
self.uiStartAllAction.setEnabled(True)
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/icons/start.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon5.addPixmap(QtGui.QPixmap(":/icons/start-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon5.addPixmap(QtGui.QPixmap(":/icons/start.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiStartAllAction.setIcon(icon5)
self.uiStartAllAction.setObjectName("uiStartAllAction")
self.uiStopAllAction = QtWidgets.QAction(MainWindow)
self.uiStopAllAction.setEnabled(True)
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap(":/icons/stop.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon6.addPixmap(QtGui.QPixmap(":/icons/stop-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon6.addPixmap(QtGui.QPixmap(":/icons/stop.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiStopAllAction.setIcon(icon6)
self.uiStopAllAction.setObjectName("uiStopAllAction")
self.uiShowNamesAction = QtWidgets.QAction(MainWindow)
@@ -231,14 +228,14 @@ class Ui_MainWindow:
self.uiAboutQtAction.setObjectName("uiAboutQtAction")
self.uiZoomInAction = QtWidgets.QAction(MainWindow)
icon9 = QtGui.QIcon()
icon9.addPixmap(QtGui.QPixmap(":/icons/zoom-in.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon9.addPixmap(QtGui.QPixmap(":/icons/zoom-in-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon9.addPixmap(QtGui.QPixmap(":/icons/zoom-in.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiZoomInAction.setIcon(icon9)
self.uiZoomInAction.setObjectName("uiZoomInAction")
self.uiZoomOutAction = QtWidgets.QAction(MainWindow)
icon10 = QtGui.QIcon()
icon10.addPixmap(QtGui.QPixmap(":/icons/zoom-out.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon10.addPixmap(QtGui.QPixmap(":/icons/zoom-out-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon10.addPixmap(QtGui.QPixmap(":/icons/zoom-out.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiZoomOutAction.setIcon(icon10)
self.uiZoomOutAction.setObjectName("uiZoomOutAction")
self.uiZoomResetAction = QtWidgets.QAction(MainWindow)
@@ -254,8 +251,8 @@ class Ui_MainWindow:
self.uiPreferencesAction.setObjectName("uiPreferencesAction")
self.uiSuspendAllAction = QtWidgets.QAction(MainWindow)
icon12 = QtGui.QIcon()
icon12.addPixmap(QtGui.QPixmap(":/icons/pause.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon12.addPixmap(QtGui.QPixmap(":/icons/pause-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon12.addPixmap(QtGui.QPixmap(":/icons/pause.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiSuspendAllAction.setIcon(icon12)
self.uiSuspendAllAction.setObjectName("uiSuspendAllAction")
self.uiAddNoteAction = QtWidgets.QAction(MainWindow)
@@ -283,15 +280,15 @@ class Ui_MainWindow:
self.uiDrawRectangleAction = QtWidgets.QAction(MainWindow)
self.uiDrawRectangleAction.setCheckable(True)
icon17 = QtGui.QIcon()
icon17.addPixmap(QtGui.QPixmap(":/icons/rectangle.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon17.addPixmap(QtGui.QPixmap(":/icons/rectangle-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon17.addPixmap(QtGui.QPixmap(":/icons/rectangle.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiDrawRectangleAction.setIcon(icon17)
self.uiDrawRectangleAction.setObjectName("uiDrawRectangleAction")
self.uiDrawEllipseAction = QtWidgets.QAction(MainWindow)
self.uiDrawEllipseAction.setCheckable(True)
icon18 = QtGui.QIcon()
icon18.addPixmap(QtGui.QPixmap(":/icons/ellipse.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon18.addPixmap(QtGui.QPixmap(":/icons/ellipse-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon18.addPixmap(QtGui.QPixmap(":/icons/ellipse.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiDrawEllipseAction.setIcon(icon18)
self.uiDrawEllipseAction.setObjectName("uiDrawEllipseAction")
self.uiShowPortNamesAction = QtWidgets.QAction(MainWindow)
@@ -337,32 +334,32 @@ class Ui_MainWindow:
self.uiDefaultStyleAction.setObjectName("uiDefaultStyleAction")
self.uiBrowseRoutersAction = QtWidgets.QAction(MainWindow)
icon24 = QtGui.QIcon()
icon24.addPixmap(QtGui.QPixmap(":/icons/router.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon24.addPixmap(QtGui.QPixmap(":/icons/router-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon24.addPixmap(QtGui.QPixmap(":/icons/router.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiBrowseRoutersAction.setIcon(icon24)
self.uiBrowseRoutersAction.setObjectName("uiBrowseRoutersAction")
self.uiBrowseSwitchesAction = QtWidgets.QAction(MainWindow)
icon25 = QtGui.QIcon()
icon25.addPixmap(QtGui.QPixmap(":/icons/switch.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon25.addPixmap(QtGui.QPixmap(":/icons/switch-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon25.addPixmap(QtGui.QPixmap(":/icons/switch.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiBrowseSwitchesAction.setIcon(icon25)
self.uiBrowseSwitchesAction.setObjectName("uiBrowseSwitchesAction")
self.uiBrowseEndDevicesAction = QtWidgets.QAction(MainWindow)
icon26 = QtGui.QIcon()
icon26.addPixmap(QtGui.QPixmap(":/icons/PC.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon26.addPixmap(QtGui.QPixmap(":/icons/PC-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon26.addPixmap(QtGui.QPixmap(":/icons/PC.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiBrowseEndDevicesAction.setIcon(icon26)
self.uiBrowseEndDevicesAction.setObjectName("uiBrowseEndDevicesAction")
self.uiBrowseSecurityDevicesAction = QtWidgets.QAction(MainWindow)
icon27 = QtGui.QIcon()
icon27.addPixmap(QtGui.QPixmap(":/icons/firewall.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon27.addPixmap(QtGui.QPixmap(":/icons/firewall-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon27.addPixmap(QtGui.QPixmap(":/icons/firewall.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiBrowseSecurityDevicesAction.setIcon(icon27)
self.uiBrowseSecurityDevicesAction.setObjectName("uiBrowseSecurityDevicesAction")
self.uiBrowseAllDevicesAction = QtWidgets.QAction(MainWindow)
icon28 = QtGui.QIcon()
icon28.addPixmap(QtGui.QPixmap(":/icons/browse-all-icons.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon28.addPixmap(QtGui.QPixmap(":/icons/browse-all-icons-hover.png"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon28.addPixmap(QtGui.QPixmap(":/icons/browse-all-icons.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiBrowseAllDevicesAction.setIcon(icon28)
self.uiBrowseAllDevicesAction.setObjectName("uiBrowseAllDevicesAction")
self.uiAddLinkAction = QtWidgets.QAction(MainWindow)
@@ -370,8 +367,8 @@ class Ui_MainWindow:
icon29 = QtGui.QIcon()
icon29.addPixmap(QtGui.QPixmap(":/icons/cancel-connection.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
icon29.addPixmap(QtGui.QPixmap(":/icons/cancel-connection.svg"), QtGui.QIcon.Active, QtGui.QIcon.On)
icon29.addPixmap(QtGui.QPixmap(":/icons/connection-new.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon29.addPixmap(QtGui.QPixmap(":/icons/connection-new-hover.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
icon29.addPixmap(QtGui.QPixmap(":/icons/connection-new.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.uiAddLinkAction.setIcon(icon29)
self.uiAddLinkAction.setObjectName("uiAddLinkAction")
self.uiGettingStartedAction = QtWidgets.QAction(MainWindow)
@@ -650,7 +647,7 @@ class Ui_MainWindow:
self.uiVPCSAction.setText(_translate("MainWindow", "&VPCS multi-host"))
from ..nodes_view import NodesView
from ..console_view import ConsoleView
from ..topology_summary_view import TopologySummaryView
from ..graphics_view import GraphicsView
from ..topology_summary_view import TopologySummaryView
from ..console_view import ConsoleView
from . import resources_rc

View File

@@ -95,7 +95,7 @@ def recursive(function, path):
if __name__ == '__main__':
if not PYUIC or not PYRCC:
raise RuntimeError("pyuic5 or pyrcc5 could't be found, please install PyQt5 development tools")
raise RuntimeError("pyuic5 or pyrcc5 could't be found, please install PyQt5 development tools (e.g. pyqt5-dev-tools)")
cwd = os.path.dirname(os.path.abspath(__file__))
gns3_path = os.path.abspath(os.path.join(cwd, "../gns3/"))