Compare commits

...

13 Commits

Author SHA1 Message Date
grossmj
8579ffa20a Release v2.2.40 2023-06-06 10:23:42 +09:30
grossmj
3206743329 Merge branch 'master' into 2.2 2023-06-06 10:19:45 +09:30
grossmj
29c87b6e96 Change log messages for Websocket errors 2023-06-03 21:05:26 +09:30
grossmj
93b2721d6a Do not proceed if an appliance symbol cannot be downloaded. Ref #3466 2023-05-23 16:31:51 +08:00
grossmj
1ff369683f Revert "Fix open IPv6 address for HTTP consoles. Fixes #3448"
This reverts commit 7c56a2467c.
2023-05-22 19:39:03 +08:00
grossmj
7c56a2467c Fix open IPv6 address for HTTP consoles. Fixes #3448 2023-05-22 16:46:57 +08:00
grossmj
59ef34c17d Delete a node or link from topology summary view using Delete key. Ref #3445 2023-05-14 21:19:19 +08:00
grossmj
d1fae54049 Fix "Start the capture visualization program" checkbox works only one (first) time for a given link. Fixes #3442 2023-05-14 20:38:34 +08:00
grossmj
49bd61f769 Let the selected link style applied when editing a link. Fixes #3460 2023-05-14 15:33:08 +08:00
grossmj
9a4faddd10 Fix hovered color shown in style editing dialog. Fixes #3460 2023-05-14 14:52:27 +08:00
Jeremy Grossmann
7654681a94 Merge pull request #3468 from GNS3/release-v2.2.39
Release v2.2.39
2023-05-08 20:28:43 +08:00
grossmj
9bfecde957 Development on v2.2.40.dev1 2023-05-08 20:26:40 +08:00
Jeremy Grossmann
7418c190a8 Merge pull request #3447 from GNS3/2.2
Release v2.2.38
2023-02-28 14:22:10 +08:00
10 changed files with 52 additions and 13 deletions

View File

@@ -1,5 +1,14 @@
# Change Log
## 2.2.40 06/06/2023
* Change log messages for Websocket errors
* Do not proceed if an appliance symbol cannot be downloaded. Ref #3466
* Delete a node or link from topology summary view using Delete key. Ref #3445
* Fix "Start the capture visualization program" checkbox works only one (first) time for a given link. Fixes #3442
* Let the selected link style applied when editing a link. Fixes #3460
* Fix hovered color shown in style editing dialog. Fixes #3460
## 2.2.39 08/05/2023
* Fix nodes are not snapped to the grid at the moment of creation

View File

@@ -449,7 +449,7 @@ class Controller(QtCore.QObject):
@qslot
def _websocket_error(self, error):
if self._notification_stream:
log.error("Websocket notification stream error: {}".format(self._notification_stream.errorString()))
log.error("Websocket controller notification stream error: {}".format(self._notification_stream.errorString()))
self._notification_stream = None
self._startListenNotifications()

View File

@@ -51,7 +51,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://de4e2c3e542f47149bf89dffb48491ae@o19455.ingest.sentry.io/38506"
DSN = "https://60c5c2bb187449cb8c56478e86a4c516@o19455.ingest.sentry.io/38506"
_instance = None
def __init__(self):

View File

@@ -58,7 +58,9 @@ class StyleEditorDialogLink(QtWidgets.QDialog, Ui_StyleEditorDialog):
self.uiRotationLabel.hide()
self.uiRotationSpinBox.hide()
link.setHovered(False) # make sure we use the right style
pen = link.pen()
link.setHovered(True)
self._border_color = pen.color()
self.uiBorderColorPushButton.setStyleSheet("background-color: rgba({}, {}, {}, {});".format(self._border_color.red(),
@@ -102,6 +104,7 @@ class StyleEditorDialogLink(QtWidgets.QDialog, Ui_StyleEditorDialog):
# Store values
self._link.setLinkStyle(new_link_style)
self._link.setHovered(False) # allow to see the new style
def done(self, result):
"""

View File

@@ -320,13 +320,13 @@ class LinkItem(QtWidgets.QGraphicsPathItem):
if not sip_is_deleted(self):
# create the contextual menu
self.setHovered(True)
self.setAcceptHoverEvents(False)
menu = QtWidgets.QMenu()
self.populateLinkContextualMenu(menu)
menu.exec_(QtGui.QCursor.pos())
self.setAcceptHoverEvents(True)
self._hovered = False
self.adjust()
self.setHovered(False)
def keyPressEvent(self, event):
"""

View File

@@ -112,15 +112,20 @@ class PacketCapture:
"""
Starts the packet capture reader.
"""
self._startPacketCommand(link, self.settings()["packet_capture_reader_command"])
def stopPacketCaptureReader(self, link):
"""
Stop the packet capture reader
"""
if link in self._tail_process and self._tail_process[link].poll() is None:
if link in self._tail_process:
log.debug("Stopping packet capture reader for link {}".format(link.link_id()))
self._tail_process[link].kill()
try:
self._tail_process[link].kill()
except (PermissionError, OSError):
pass
del self._tail_process[link]
def startPacketCaptureAnalyzer(self, link):
@@ -183,14 +188,14 @@ class PacketCapture:
QtWidgets.QMessageBox.critical(self.parent(), "Packet capture", "Can't create packet capture file {}: {}".format(capture_file_path, str(e)))
return
if link in self._tail_process and self._tail_process[link].poll() is None:
if link in self._tail_process:
try:
self._tail_process[link].kill()
except (PermissionError, OSError):
# Sometimes we have condition on windows where the process is in the process to quit
pass
del self._tail_process[link]
if link in self._capture_reader_process and self._capture_reader_process[link].poll() is None:
if link in self._capture_reader_process:
try:
self._capture_reader_process[link].kill()
except (PermissionError, OSError):

View File

@@ -654,7 +654,7 @@ class Project(QtCore.QObject):
@qslot
def _websocket_error(self, error):
if self._notification_stream:
log.error(self._notification_stream.errorString())
log.error("Websocket project notification stream error: {}".format(self._notification_stream.errorString()))
self._notification_stream = None
self._startListenNotifications()

View File

@@ -197,7 +197,8 @@ class ApplianceToTemplate:
url = "https://raw.githubusercontent.com/GNS3/gns3-registry/master/symbols/{}".format(symbol_id)
try:
self._downloadApplianceSymbol(url, path)
if not self._downloadApplianceSymbol(url, path):
return None
controller.clearStaticCache()
if controller.isRemote():
controller.uploadSymbol(symbol_id, path)
@@ -230,5 +231,7 @@ class ApplianceToTemplate:
log.debug("Error while saving appliance symbol to '{}': {}".format(path, e))
raise
log.debug("Appliance symbol downloaded and saved to '{}'".format(path))
return True
else:
log.warning("Error when downloading appliance symbol from '{}': {}".format(url, reply.errorString()))
log.error("Error when downloading appliance symbol from '{}': {}".format(url, reply.errorString()))
return False

View File

@@ -415,3 +415,22 @@ class TopologySummaryView(QtWidgets.QTreeWidget):
for link in self._topology.links():
if link.suspended():
link.toggleSuspend()
def keyPressEvent(self, event):
"""
Handles key press events
"""
from .main_window import MainWindow
view = MainWindow.instance().uiGraphicsView
# only deleting a link or node is supported for now
if event.key() == QtCore.Qt.Key_Delete:
current_item = self.currentItem()
if isinstance(current_item, TopologyNodeItem):
current_item.node().delete()
else:
link = current_item.data(0, QtCore.Qt.UserRole)
for item in view.scene().items():
if isinstance(item, LinkItem) and item.link() == link:
item.delete()
super().keyPressEvent(event)

View File

@@ -23,8 +23,8 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "2.2.39"
__version_info__ = (2, 2, 39, 0)
__version__ = "2.2.40"
__version_info__ = (2, 2, 40, 0)
if "dev" in __version__:
try: