Skip to content

Commit

Permalink
Merge pull request #3616 from GNS3/2.2
Browse files Browse the repository at this point in the history
Release v2.2.49
  • Loading branch information
grossmj authored Aug 6, 2024
2 parents 38657f4 + b35ce73 commit d0421e8
Show file tree
Hide file tree
Showing 13 changed files with 56 additions and 29 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Change Log

## 2.2.49 06/08/2024

* Upgrade jsonschema and sentry-sdk packages
* Upgrade to PyQt5 v5.15.11
* Add shortcuts info dialog
* Added Key Shortcuts

## 2.2.48.1 12/07/2024

* No changes
Expand Down
5 changes: 2 additions & 3 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
-rrequirements.txt

pytest==7.2.0
flake8==5.0.4
pytest-timeout==2.1.0
pytest==8.3.2
pytest-timeout==2.3.1
2 changes: 1 addition & 1 deletion gns3/crash_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class CrashReport:
Report crash to a third party service
"""

DSN = "https://d8911cca18e158f44bedd216c770a478@o19455.ingest.us.sentry.io/38506"
DSN = "https://4cbe2abf0323ef3136a900d624b12567@o19455.ingest.us.sentry.io/38506"
_instance = None

def __init__(self):
Expand Down
10 changes: 10 additions & 0 deletions gns3/main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ def _connections(self):
self.uiExportDebugInformationAction.triggered.connect(self._exportDebugInformationSlot)
self.uiDoctorAction.triggered.connect(self._doctorSlot)
self.uiAcademyAction.triggered.connect(self._academyActionSlot)
self.uiShortcutsAction.triggered.connect(self._shortcutsActionSlot)

# browsers tool bar connections
self.uiBrowseRoutersAction.triggered.connect(self._browseRoutersActionSlot)
Expand Down Expand Up @@ -979,6 +980,15 @@ def _setupWizardActionSlot(self):
# start and connect to the local server if needed
LocalServer.instance().localServerAutoStartIfRequired()

def _shortcutsActionSlot(self):

shortcuts_text = ""
for action in self.findChildren(QtWidgets.QAction):
shortcut = action.shortcut().toString()
if shortcut:
shortcuts_text += f"{action.toolTip()}: {shortcut}\n"
QtWidgets.QMessageBox.information(self, "Shortcuts", shortcuts_text)

def _aboutQtActionSlot(self):
"""
Slot to display the Qt About dialog.
Expand Down
1 change: 1 addition & 0 deletions gns3/schemas/appliance_v8.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"enum": [
"router",
"multilayer_switch",
"switch",
"firewall",
"guest"
]
Expand Down
24 changes: 15 additions & 9 deletions gns3/ui/main_window.ui
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ background-none;
<addaction name="uiAcademyAction"/>
<addaction name="uiDoctorAction"/>
<addaction name="uiExportDebugInformationAction"/>
<addaction name="uiShortcutsAction"/>
<addaction name="uiAboutQtAction"/>
<addaction name="uiAboutAction"/>
</widget>
Expand Down Expand Up @@ -635,9 +636,6 @@ background-none;
<normaloff>:/icons/start.svg</normaloff>
<activeoff>:/icons/start-hover.svg</activeoff>:/icons/start.svg</iconset>
</property>
<property name="shortcut">
<string>Ctrl+B</string>
</property>
<property name="text">
<string>Start/Resume all nodes</string>
</property>
Expand All @@ -647,6 +645,9 @@ background-none;
<property name="statusTip">
<string>Start/Resume all devices</string>
</property>
<property name="shortcut">
<string>Ctrl+B</string>
</property>
</action>
<action name="uiStopAllAction">
<property name="enabled">
Expand All @@ -657,9 +658,6 @@ background-none;
<normaloff>:/icons/stop.svg</normaloff>
<activeoff>:/icons/stop-hover.svg</activeoff>:/icons/stop.svg</iconset>
</property>
<property name="shortcut">
<string>Ctrl+E</string>
</property>
<property name="text">
<string>Stop all nodes</string>
</property>
Expand All @@ -669,6 +667,9 @@ background-none;
<property name="statusTip">
<string>Stop all devices</string>
</property>
<property name="shortcut">
<string>Ctrl+E</string>
</property>
</action>
<action name="uiConsoleAllAction">
<property name="enabled">
Expand Down Expand Up @@ -794,9 +795,6 @@ background-none;
<normaloff>:/icons/pause.svg</normaloff>
<activeoff>:/icons/pause-hover.svg</activeoff>:/icons/pause.svg</iconset>
</property>
<property name="shortcut">
<string>Ctrl+J</string>
</property>
<property name="text">
<string>Suspend all nodes</string>
</property>
Expand All @@ -806,6 +804,9 @@ background-none;
<property name="statusTip">
<string>Suspend all devices</string>
</property>
<property name="shortcut">
<string>Ctrl+J</string>
</property>
</action>
<action name="uiAddNoteAction">
<property name="checkable">
Expand Down Expand Up @@ -1318,6 +1319,11 @@ background-none;
<string>Reset GUI state</string>
</property>
</action>
<action name="uiShortcutsAction">
<property name="text">
<string>&amp;Shortcuts</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
Expand Down
12 changes: 8 additions & 4 deletions gns3/ui/main_window_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Form implementation generated from reading ui file '/home/grossmj/PycharmProjects/gns3-gui/gns3/ui/main_window.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
Expand Down Expand Up @@ -455,6 +455,8 @@ def setupUi(self, MainWindow):
self.uiResetConsoleAllAction.setObjectName("uiResetConsoleAllAction")
self.uiResetGUIStateAction = QtWidgets.QAction(MainWindow)
self.uiResetGUIStateAction.setObjectName("uiResetGUIStateAction")
self.uiShortcutsAction = QtWidgets.QAction(MainWindow)
self.uiShortcutsAction.setObjectName("uiShortcutsAction")
self.uiEditMenu.addAction(self.uiSelectAllAction)
self.uiEditMenu.addAction(self.uiSelectNoneAction)
self.uiEditMenu.addSeparator()
Expand All @@ -479,6 +481,7 @@ def setupUi(self, MainWindow):
self.uiHelpMenu.addAction(self.uiAcademyAction)
self.uiHelpMenu.addAction(self.uiDoctorAction)
self.uiHelpMenu.addAction(self.uiExportDebugInformationAction)
self.uiHelpMenu.addAction(self.uiShortcutsAction)
self.uiHelpMenu.addAction(self.uiAboutQtAction)
self.uiHelpMenu.addAction(self.uiAboutAction)
self.uiViewMenu.addAction(self.uiActionFullscreen)
Expand Down Expand Up @@ -602,13 +605,13 @@ def retranslateUi(self, MainWindow):
self.uiScreenshotAction.setToolTip(_translate("MainWindow", "Take a screenshot"))
self.uiScreenshotAction.setStatusTip(_translate("MainWindow", "Take a screenshot"))
self.uiStartAllAction.setText(_translate("MainWindow", "Start/Resume all nodes"))
self.uiStartAllAction.setShortcut(_translate("MainWindow", "Ctrl+B"))
self.uiStartAllAction.setToolTip(_translate("MainWindow", "Start/Resume all nodes"))
self.uiStartAllAction.setStatusTip(_translate("MainWindow", "Start/Resume all devices"))
self.uiStartAllAction.setShortcut(_translate("MainWindow", "Ctrl+B"))
self.uiStopAllAction.setText(_translate("MainWindow", "Stop all nodes"))
self.uiStopAllAction.setShortcut(_translate("MainWindow", "Ctrl+E"))
self.uiStopAllAction.setToolTip(_translate("MainWindow", "Stop all nodes"))
self.uiStopAllAction.setStatusTip(_translate("MainWindow", "Stop all devices"))
self.uiStopAllAction.setShortcut(_translate("MainWindow", "Ctrl+E"))
self.uiConsoleAllAction.setText(_translate("MainWindow", "Console connect to all nodes"))
self.uiConsoleAllAction.setToolTip(_translate("MainWindow", "Console connect to all nodes"))
self.uiConsoleAllAction.setStatusTip(_translate("MainWindow", "Console to all devices"))
Expand All @@ -635,9 +638,9 @@ def retranslateUi(self, MainWindow):
self.uiPreferencesAction.setStatusTip(_translate("MainWindow", "Preferences"))
self.uiPreferencesAction.setShortcut(_translate("MainWindow", "Ctrl+Shift+P"))
self.uiSuspendAllAction.setText(_translate("MainWindow", "Suspend all nodes"))
self.uiSuspendAllAction.setShortcut(_translate("MainWindow", "Ctrl+J"))
self.uiSuspendAllAction.setToolTip(_translate("MainWindow", "Suspend all nodes"))
self.uiSuspendAllAction.setStatusTip(_translate("MainWindow", "Suspend all devices"))
self.uiSuspendAllAction.setShortcut(_translate("MainWindow", "Ctrl+J"))
self.uiAddNoteAction.setText(_translate("MainWindow", "Add note"))
self.uiAddNoteAction.setToolTip(_translate("MainWindow", "Add a note"))
self.uiAddNoteAction.setStatusTip(_translate("MainWindow", "Add a note"))
Expand Down Expand Up @@ -728,6 +731,7 @@ def retranslateUi(self, MainWindow):
self.uiResetDocksAction.setText(_translate("MainWindow", "Reset docks"))
self.uiResetConsoleAllAction.setText(_translate("MainWindow", "Reset all console connections"))
self.uiResetGUIStateAction.setText(_translate("MainWindow", "Reset GUI state"))
self.uiShortcutsAction.setText(_translate("MainWindow", "&Shortcuts"))
from ..compute_summary_view import ComputeSummaryView
from ..console_view import ConsoleView
from ..graphics_view import GraphicsView
Expand Down
4 changes: 2 additions & 2 deletions gns3/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)

__version__ = "2.2.48.1"
__version_info__ = (2, 2, 48, -99)
__version__ = "2.2.49"
__version_info__ = (2, 2, 49, 0)

if "dev" in __version__:
try:
Expand Down
2 changes: 1 addition & 1 deletion mac-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
-rrequirements.txt

PyQt5==5.15.10
PyQt5==5.15.11
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
jsonschema>=4.22.0,<4.23
sentry-sdk==2.7.1,<2.8
jsonschema>=4.23,<4.24
sentry-sdk==2.12,<2.13
psutil==6.0.0
distro>=1.9.0
truststore>=0.9.1; python_version >= '3.10'
Expand Down
8 changes: 4 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand

# we only support Python 3 version >= 3.7
if len(sys.argv) >= 2 and sys.argv[1] == "install" and sys.version_info < (3, 7):
raise SystemExit("Python 3.7 or higher is required")
# we only support Python 3 version >= 3.8
if len(sys.argv) >= 2 and sys.argv[1] == "install" and sys.version_info < (3, 8):
raise SystemExit("Python 3.8 or higher is required")


class PyTest(TestCommand):
Expand Down Expand Up @@ -79,7 +79,7 @@ def run_tests(self):
include_package_data=True,
package_data={"gns3": ["configs/*.txt", "schemas/*.json"]},
platforms="any",
python_requires='>=3.7',
python_requires='>=3.8',
setup_requires=["setuptools>=17.1"],
classifiers=[
"Development Status :: 5 - Production/Stable",
Expand Down
4 changes: 2 additions & 2 deletions tests/registry/appliances/empty-vm-v8.gns3a
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
{
"filename": "empty100G.qcow2",
"version": "100G",
"checksum": "d08fdec95fffbda3f04e9a00db49295df73ae4a507396e442ba9e4ad5c14ce5a",
"checksum_type": "sha256",
"checksum": "1e6409a4523ada212dea2ebc50e50a65",
"checksum_type": "md5",
"filesize": 198656,
"download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/",
"direct_download_url": "https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty100G.qcow2/download"
Expand Down
2 changes: 1 addition & 1 deletion win-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
-rrequirements.txt

PyQt5==5.15.10 # pyup: ignore
PyQt5==5.15.11 # pyup: ignore
pywin32==306 # pyup: ignore

0 comments on commit d0421e8

Please sign in to comment.