mirror of
https://github.com/GNS3/gns3-gui.git
synced 2026-05-17 00:46:01 +03:00
Completes PyQt5 support with backward PyQt4 compatibility.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
#
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
52
gns3/qt.py
52
gns3/qt.py
@@ -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:
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/"))
|
||||
|
||||
Reference in New Issue
Block a user