Skip to content

Commit 72906d2

Browse files
committed
Small bug fixes all over the place for alpha-1.
1 parent 0924046 commit 72906d2

File tree

8 files changed

+36
-26
lines changed

8 files changed

+36
-26
lines changed

gns3/main_window.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ def closeEvent(self, event):
673673
event.accept()
674674

675675
servers = Servers.instance()
676-
servers.stopLocalServer()
676+
servers.stopLocalServer(wait=True)
677677
else:
678678
event.ignore()
679679

@@ -747,9 +747,7 @@ def startupLoading(self):
747747
log.info("no local server is configured")
748748
return
749749

750-
if sys.platform.startswith("win"):
751-
QtGui.QMessageBox.critical(self, "Local server", "Please manually start the server: All programs -> GNS3-ER -> GNS3 Server")
752-
elif servers.startLocalServer(servers.localServerPath(), server.host, server.port):
750+
if servers.startLocalServer(servers.localServerPath(), server.host, server.port):
753751
thread = WaitForConnectionThread(server.host, server.port)
754752
self._progress_dialog = ProgressDialog(thread, "Local server", "Connecting...", "Cancel", busy=True, parent=self)
755753
self._progress_dialog.show()

gns3/modules/dynamips/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ def reset(self):
404404
for server in self._servers:
405405
if server.connected():
406406
server.send_notification("dynamips.reset")
407+
self._servers.clear()
407408

408409
def notification(self, destination, params):
409410
"""

gns3/modules/dynamips/nodes/router.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ def _updateCallback(self, result, error=False):
388388
self.created_signal.emit(self.id())
389389
self._module.addNode(self)
390390
self._inital_settings = None
391-
elif updated:
391+
elif updated or self._loading:
392392
log.info("router {} has been updated".format(self.name()))
393393
self.updated_signal.emit()
394394

gns3/modules/iou/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ def reset(self):
386386
for server in self._servers:
387387
if server.connected():
388388
server.send_notification("iou.reset")
389+
self._servers.clear()
389390

390391
def notification(self, destination, params):
391392
"""

gns3/modules/iou/pages/iou_preferences_page.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def _iourcPathBrowserSlot(self):
6363
QtGui.QMessageBox.critical(self, "IOURC file", "{} cannot be read".format(os.path.basename(path)))
6464
return
6565

66-
self.uiIOURCPathLineEdit.setText(path)
66+
self.uiIOURCPathLineEdit.setText(os.path.normpath(path))
6767

6868
def _iouyapPathBrowserSlot(self):
6969
"""
@@ -78,7 +78,7 @@ def _iouyapPathBrowserSlot(self):
7878
QtGui.QMessageBox.critical(self, "iouyap", "{} is not an executable".format(os.path.basename(path)))
7979
return
8080

81-
self.uiIouyapPathLineEdit.setText(path)
81+
self.uiIouyapPathLineEdit.setText(os.path.normpath(path))
8282

8383
def _testSettingsSlot(self):
8484

gns3/servers.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121

2222
import sys
2323
import os
24+
import shlex
25+
import signal
26+
import subprocess
2427
from .qt import QtCore
2528
from .websocket_client import WebSocketClient
2629

@@ -42,8 +45,7 @@ def __init__(self):
4245
self._local_server = None
4346
self._remote_servers = {}
4447
self._local_server_path = ""
45-
self._local_server_proccess = QtCore.QProcess()
46-
self._local_server_proccess.setWorkingDirectory(os.curdir)
48+
self._local_server_proccess = None
4749
self._loadSettings()
4850
self._remote_server_iter_pos = 0
4951

@@ -129,34 +131,44 @@ def startLocalServer(self, path, host, port):
129131
Starts the local server process.
130132
"""
131133

132-
params = ['--host=' + host, '--port=' + str(port)]
134+
params = ' --host=' + host + ' --port=' + str(port)
133135
# start the server, use Python on all platform but Windows (in release mode)
134136
if sys.platform.startswith('win') and os.path.splitext(path)[1] == '.exe':
135137
executable = '"' + path + '"'
136138
elif hasattr(sys, "frozen"):
137139
executable = "python3"
138-
params = [path] + params
140+
params = path + params
139141
else:
140142
executable = sys.executable
141-
params = [path] + params
143+
params = path + params
142144

143-
log.info("starting local server process {} with {}".format(executable, params))
144-
self._local_server_proccess.start(executable, params)
145+
command = executable + ' ' + params
146+
log.info("starting local server process with {}".format(command))
145147

146-
if self._local_server_proccess.waitForStarted() == False:
148+
try:
149+
if sys.platform.startswith("win"):
150+
# use the string on Windows
151+
self._local_server_proccess = subprocess.Popen(command)
152+
else:
153+
# use arguments on other platforms
154+
args = shlex.split(command)
155+
self._local_server_proccess = subprocess.Popen(args)
156+
except EnvironmentError as e:
157+
log.warning('could not start local server "{}": {}'.format(command, e))
147158
return False
159+
148160
return True
149161

150162
def stopLocalServer(self, wait=False):
151163

152-
if self._local_server and self._local_server.connected():
153-
self._local_server.close_connection()
154-
if self._local_server_proccess.state() == QtCore.QProcess.Running:
155-
log.info("stopping local server process")
156-
self._local_server_proccess.terminate()
157-
if wait:
158-
self._local_server_proccess.waitForFinished()
159-
self._local_server_proccess.close()
164+
if self._local_server_proccess:
165+
if self._local_server and self._local_server.connected():
166+
log.info("sending stop request to the server")
167+
self._local_server.send_notification("builtin.stop")
168+
self._local_server.close_connection()
169+
else:
170+
self._local_server_proccess.send_signal(signal.SIGINT)
171+
self._local_server_proccess.wait()
160172

161173
def setLocalServer(self, path, host, port):
162174
"""

gns3/topology_summary_view.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,6 @@ def _createdNodeSlot(self, node_id):
118118
"""
119119

120120
node = self._topology.getNode(node_id)
121-
# just disconnect because the node cannot be created twice
122-
node.created_signal.disconnect(self._createdNodeSlot)
123121
TopologyNodeItem(self, node)
124122

125123
def mousePressEvent(self, event):

gns3/utils/wait_for_connection_thread.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def run(self):
5353
begin = time.time()
5454

5555
# try to connect for 10 seconds
56-
while(time.time() - begin < 10.0):
56+
while (time.time() - begin < 10.0):
5757
if not self._is_running:
5858
return
5959
time.sleep(0.01)

0 commit comments

Comments
 (0)