##// END OF EJS Templates
tweaked close dialog and added prompts to prevent silent remote close
MinRK -
Show More
@@ -101,6 +101,7 b' class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin):'
101 _CompletionRequest = namedtuple('_CompletionRequest', ['id', 'pos'])
101 _CompletionRequest = namedtuple('_CompletionRequest', ['id', 'pos'])
102 _ExecutionRequest = namedtuple('_ExecutionRequest', ['id', 'kind'])
102 _ExecutionRequest = namedtuple('_ExecutionRequest', ['id', 'kind'])
103 _input_splitter_class = InputSplitter
103 _input_splitter_class = InputSplitter
104 _local_kernel = False
104
105
105 #---------------------------------------------------------------------------
106 #---------------------------------------------------------------------------
106 # 'object' interface
107 # 'object' interface
@@ -141,6 +142,9 b' class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin):'
141 # Connect signal handlers.
142 # Connect signal handlers.
142 document = self._control.document()
143 document = self._control.document()
143 document.contentsChange.connect(self._document_contents_change)
144 document.contentsChange.connect(self._document_contents_change)
145
146 # set flag for whether we are connected via localhost
147 self._local_kernel = kw.get('local_kernel', False)
144
148
145 #---------------------------------------------------------------------------
149 #---------------------------------------------------------------------------
146 # 'ConsoleWidget' public interface
150 # 'ConsoleWidget' public interface
@@ -366,14 +370,32 b' class FrontendWidget(HistoryConsoleWidget, BaseFrontendMixin):'
366 """ Handle shutdown signal, only if from other console.
370 """ Handle shutdown signal, only if from other console.
367 """
371 """
368 if not self._hidden and not self._is_from_this_session(msg):
372 if not self._hidden and not self._is_from_this_session(msg):
369 if not msg['content']['restart']:
373 if self._local_kernel:
370 sys.exit(0)
374 if not msg['content']['restart']:
371 else:
375 sys.exit(0)
372 # we just got notified of a restart!
376 else:
373 time.sleep(0.25) # wait 1/4 sec to reset
377 # we just got notified of a restart!
374 # lest the request for a new prompt
378 time.sleep(0.25) # wait 1/4 sec to reset
375 # goes to the old kernel
379 # lest the request for a new prompt
376 self.reset()
380 # goes to the old kernel
381 self.reset()
382 else: # remote kernel, prompt on Kernel shutdown/reset
383 title = self.window().windowTitle()
384 if not msg['content']['restart']:
385 reply = QtGui.QMessageBox.question(self, title,
386 "Kernel has been shutdown permanently. Close the Console?",
387 QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)
388 if reply == QtGui.QMessageBox.Yes:
389 sys.exit(0)
390 else:
391 reply = QtGui.QMessageBox.question(self, title,
392 "Kernel has been reset. Clear the Console?",
393 QtGui.QMessageBox.Yes,QtGui.QMessageBox.No)
394 if reply == QtGui.QMessageBox.Yes:
395 time.sleep(0.25) # wait 1/4 sec to reset
396 # lest the request for a new prompt
397 # goes to the old kernel
398 self.reset()
377
399
378 def _started_channels(self):
400 def _started_channels(self):
379 """ Called when the KernelManager channels have started listening or
401 """ Called when the KernelManager channels have started listening or
@@ -57,9 +57,9 b' class MainWindow(QtGui.QMainWindow):'
57 if kernel_manager and kernel_manager.channels_running:
57 if kernel_manager and kernel_manager.channels_running:
58 title = self.window().windowTitle()
58 title = self.window().windowTitle()
59 reply = QtGui.QMessageBox.question(self, title,
59 reply = QtGui.QMessageBox.question(self, title,
60 "Close just this console, or shutdown the kernel and close "+
60 "You are closing this Console window."+
61 "all windows attached to it?",
61 "\nWould you like to quit the Kernel and all attached Consoles as well?",
62 'Cancel', 'Close Console', 'Close All')
62 'Cancel', 'No, just this Console', 'Yes, quit everything')
63 if reply == 2: # close All
63 if reply == 2: # close All
64 kernel_manager.shutdown_kernel()
64 kernel_manager.shutdown_kernel()
65 #kernel_manager.stop_channels()
65 #kernel_manager.stop_channels()
@@ -68,6 +68,7 b' class MainWindow(QtGui.QMainWindow):'
68 if not self._existing:
68 if not self._existing:
69 # I have the kernel: don't quit, just close the window
69 # I have the kernel: don't quit, just close the window
70 self._app.setQuitOnLastWindowClosed(False)
70 self._app.setQuitOnLastWindowClosed(False)
71 self.deleteLater()
71 event.accept()
72 event.accept()
72 else:
73 else:
73 event.ignore()
74 event.ignore()
@@ -133,15 +134,16 b' def main():'
133 kernel_manager.start_kernel()
134 kernel_manager.start_kernel()
134 kernel_manager.start_channels()
135 kernel_manager.start_channels()
135
136
137 local_kernel = (args.ip == LOCALHOST)
136 # Create the widget.
138 # Create the widget.
137 app = QtGui.QApplication([])
139 app = QtGui.QApplication([])
138 if args.pure:
140 if args.pure:
139 kind = 'rich' if args.rich else 'plain'
141 kind = 'rich' if args.rich else 'plain'
140 widget = FrontendWidget(kind=kind, paging=args.paging)
142 widget = FrontendWidget(kind=kind, paging=args.paging, local_kernel=local_kernel)
141 elif args.rich or args.pylab:
143 elif args.rich or args.pylab:
142 widget = RichIPythonWidget(paging=args.paging)
144 widget = RichIPythonWidget(paging=args.paging, local_kernel=local_kernel)
143 else:
145 else:
144 widget = IPythonWidget(paging=args.paging)
146 widget = IPythonWidget(paging=args.paging, local_kernel=local_kernel)
145 widget.gui_completion = args.gui_completion
147 widget.gui_completion = args.gui_completion
146 widget.kernel_manager = kernel_manager
148 widget.kernel_manager = kernel_manager
147
149
General Comments 0
You need to be logged in to leave comments. Login now