Show More
@@ -91,12 +91,12 b' class MainWindow(QtGui.QMainWindow):' | |||||
91 | super(MainWindow, self).__init__() |
|
91 | super(MainWindow, self).__init__() | |
92 | self._app = app |
|
92 | self._app = app | |
93 |
|
93 | |||
94 |
self.tab |
|
94 | self.tab_widget = QtGui.QTabWidget(self) | |
95 |
self.tab |
|
95 | self.tab_widget.setDocumentMode(True) | |
96 |
self.tab |
|
96 | self.tab_widget.setTabsClosable(True) | |
97 |
self.tab |
|
97 | self.tab_widget.tabCloseRequested[int].connect(self.closeTab) | |
98 |
|
98 | |||
99 |
self.setCentralWidget(self.tab |
|
99 | self.setCentralWidget(self.tab_widget) | |
100 | self.updateTabBarVisibility() |
|
100 | self.updateTabBarVisibility() | |
101 |
|
101 | |||
102 | def updateTabBarVisibility(self): |
|
102 | def updateTabBarVisibility(self): | |
@@ -109,16 +109,16 b' class MainWindow(QtGui.QMainWindow):' | |||||
109 |
|
109 | |||
110 | need to be called explicitely, or be connected to tabInserted/tabRemoved |
|
110 | need to be called explicitely, or be connected to tabInserted/tabRemoved | |
111 | """ |
|
111 | """ | |
112 |
if self.tab |
|
112 | if self.tab_widget.count() <= 1: | |
113 |
self.tab |
|
113 | self.tab_widget.tabBar().setVisible(False) | |
114 | else: |
|
114 | else: | |
115 |
self.tab |
|
115 | self.tab_widget.tabBar().setVisible(True) | |
116 |
if self.tab |
|
116 | if self.tab_widget.count()==0 : | |
117 | self.close() |
|
117 | self.close() | |
118 |
|
118 | |||
119 | @property |
|
119 | @property | |
120 | def activeFrontend(self): |
|
120 | def activeFrontend(self): | |
121 |
return self.tab |
|
121 | return self.tab_widget.currentWidget() | |
122 |
|
122 | |||
123 | def closeTab(self,currentTab): |
|
123 | def closeTab(self,currentTab): | |
124 | """ Called when you need to try to close a tab. |
|
124 | """ Called when you need to try to close a tab. | |
@@ -130,8 +130,8 b' class MainWindow(QtGui.QMainWindow):' | |||||
130 | # let's be sure "tab" and "closing widget are respectivey the index of the tab to close |
|
130 | # let's be sure "tab" and "closing widget are respectivey the index of the tab to close | |
131 | # and a reference to the trontend to close |
|
131 | # and a reference to the trontend to close | |
132 | if type(currentTab) is not int : |
|
132 | if type(currentTab) is not int : | |
133 |
currentTab = self.tab |
|
133 | currentTab = self.tab_widget.indexOf(currentTab) | |
134 |
closing_widget=self.tab |
|
134 | closing_widget=self.tab_widget.widget(currentTab) | |
135 |
|
135 | |||
136 |
|
136 | |||
137 | # when trying to be closed, widget might re-send a request to be closed again, but will |
|
137 | # when trying to be closed, widget might re-send a request to be closed again, but will | |
@@ -159,7 +159,7 b' class MainWindow(QtGui.QMainWindow):' | |||||
159 | self.findMasterTab(closing_widget).execute('exit') |
|
159 | self.findMasterTab(closing_widget).execute('exit') | |
160 | except AttributeError: |
|
160 | except AttributeError: | |
161 | self.log.info("Master already closed or not local, closing only current tab") |
|
161 | self.log.info("Master already closed or not local, closing only current tab") | |
162 |
self.tab |
|
162 | self.tab_widget.removeTab(currentTab) | |
163 | return |
|
163 | return | |
164 |
|
164 | |||
165 | kernel_manager = closing_widget.kernel_manager |
|
165 | kernel_manager = closing_widget.kernel_manager | |
@@ -175,7 +175,7 b' class MainWindow(QtGui.QMainWindow):' | |||||
175 | cancel = QtGui.QMessageBox.Cancel |
|
175 | cancel = QtGui.QMessageBox.Cancel | |
176 | okay = QtGui.QMessageBox.Ok |
|
176 | okay = QtGui.QMessageBox.Ok | |
177 | if closing_widget._may_close: |
|
177 | if closing_widget._may_close: | |
178 |
msg = "You are closing the tab : "+'"'+self.tab |
|
178 | msg = "You are closing the tab : "+'"'+self.tab_widget.tabText(currentTab)+'"' | |
179 | info = "Would you like to quit the Kernel and all attached Consoles as well?" |
|
179 | info = "Would you like to quit the Kernel and all attached Consoles as well?" | |
180 | justthis = QtGui.QPushButton("&No, just this Console", self) |
|
180 | justthis = QtGui.QPushButton("&No, just this Console", self) | |
181 | justthis.setShortcut('N') |
|
181 | justthis.setShortcut('N') | |
@@ -195,9 +195,9 b' class MainWindow(QtGui.QMainWindow):' | |||||
195 | reply = box.exec_() |
|
195 | reply = box.exec_() | |
196 | if reply == 1: # close All |
|
196 | if reply == 1: # close All | |
197 | for slave in slaveTabs: |
|
197 | for slave in slaveTabs: | |
198 |
self.tab |
|
198 | self.tab_widget.removeTab(self.tab_widget.indexOf(slave)) | |
199 | closing_widget.execute("exit") |
|
199 | closing_widget.execute("exit") | |
200 |
self.tab |
|
200 | self.tab_widget.removeTab(currentTab) | |
201 | elif reply == 0: # close Console |
|
201 | elif reply == 0: # close Console | |
202 | if not closing_widget._existing: |
|
202 | if not closing_widget._existing: | |
203 | # Have kernel: don't quit, just close the window |
|
203 | # Have kernel: don't quit, just close the window | |
@@ -211,17 +211,17 b' class MainWindow(QtGui.QMainWindow):' | |||||
211 | defaultButton=okay |
|
211 | defaultButton=okay | |
212 | ) |
|
212 | ) | |
213 | if reply == okay: |
|
213 | if reply == okay: | |
214 |
self.tab |
|
214 | self.tab_widget.removeTab(currentTab) | |
215 | elif keepkernel: #close console but leave kernel running (no prompt) |
|
215 | elif keepkernel: #close console but leave kernel running (no prompt) | |
216 | if kernel_manager and kernel_manager.channels_running: |
|
216 | if kernel_manager and kernel_manager.channels_running: | |
217 | if not closing_widget._existing: |
|
217 | if not closing_widget._existing: | |
218 | # I have the kernel: don't quit, just close the window |
|
218 | # I have the kernel: don't quit, just close the window | |
219 |
self.tab |
|
219 | self.tab_widget.removeTab(currentTab) | |
220 | else: #close console and kernel (no prompt) |
|
220 | else: #close console and kernel (no prompt) | |
221 | if kernel_manager and kernel_manager.channels_running: |
|
221 | if kernel_manager and kernel_manager.channels_running: | |
222 | for slave in slaveTabs: |
|
222 | for slave in slaveTabs: | |
223 |
self.tab |
|
223 | self.tab_widget.removeTab(self.tab_widget.indexOf(slave)) | |
224 |
self.tab |
|
224 | self.tab_widget.removeTab(currentTab) | |
225 | kernel_manager.shutdown_kernel() |
|
225 | kernel_manager.shutdown_kernel() | |
226 | self.updateTabBarVisibility() |
|
226 | self.updateTabBarVisibility() | |
227 |
|
227 | |||
@@ -230,22 +230,22 b' class MainWindow(QtGui.QMainWindow):' | |||||
230 |
|
230 | |||
231 | """ |
|
231 | """ | |
232 | if not name: |
|
232 | if not name: | |
233 |
name=str('kernel '+str(self.tab |
|
233 | name=str('kernel '+str(self.tab_widget.count())) | |
234 |
self.tab |
|
234 | self.tab_widget.addTab(frontend,name) | |
235 | self.updateTabBarVisibility() |
|
235 | self.updateTabBarVisibility() | |
236 | self.makeFrontendVisible(frontend) |
|
236 | self.makeFrontendVisible(frontend) | |
237 | frontend.exit_requested.connect(self.closeTab) |
|
237 | frontend.exit_requested.connect(self.closeTab) | |
238 |
|
238 | |||
239 | def nextTab(self): |
|
239 | def nextTab(self): | |
240 |
self.tab |
|
240 | self.tab_widget.setCurrentIndex((self.tab_widget.currentIndex()+1)) | |
241 |
|
241 | |||
242 | def prevTab(self): |
|
242 | def prevTab(self): | |
243 |
self.tab |
|
243 | self.tab_widget.setCurrentIndex((self.tab_widget.currentIndex()-1)) | |
244 |
|
244 | |||
245 | def makeFrontendVisible(self,frontend): |
|
245 | def makeFrontendVisible(self,frontend): | |
246 |
widgetIndex=self.tab |
|
246 | widgetIndex=self.tab_widget.indexOf(frontend) | |
247 | if widgetIndex > 0 : |
|
247 | if widgetIndex > 0 : | |
248 |
self.tab |
|
248 | self.tab_widget.setCurrentIndex(widgetIndex) | |
249 |
|
249 | |||
250 | def findMasterTab(self,tab,asList=False): |
|
250 | def findMasterTab(self,tab,asList=False): | |
251 | """ |
|
251 | """ | |
@@ -265,11 +265,11 b' class MainWindow(QtGui.QMainWindow):' | |||||
265 |
|
265 | |||
266 | #convert from/to int/richIpythonWidget if needed |
|
266 | #convert from/to int/richIpythonWidget if needed | |
267 | if type(tab) == int: |
|
267 | if type(tab) == int: | |
268 |
tab = self.tab |
|
268 | tab = self.tab_widget.widget(tab) | |
269 | km=tab.kernel_manager; |
|
269 | km=tab.kernel_manager; | |
270 |
|
270 | |||
271 | #build list of all widgets |
|
271 | #build list of all widgets | |
272 |
widgetList = [self.tab |
|
272 | widgetList = [self.tab_widget.widget(i) for i in range(self.tab_widget.count())] | |
273 |
|
273 | |||
274 | # widget that are candidate to be the owner of the kernel does have all the same port of the curent widget |
|
274 | # widget that are candidate to be the owner of the kernel does have all the same port of the curent widget | |
275 | # And should have a _may_close attribute |
|
275 | # And should have a _may_close attribute | |
@@ -301,11 +301,11 b' class MainWindow(QtGui.QMainWindow):' | |||||
301 | """ |
|
301 | """ | |
302 | #convert from/to int/richIpythonWidget if needed |
|
302 | #convert from/to int/richIpythonWidget if needed | |
303 | if type(tab) == int: |
|
303 | if type(tab) == int: | |
304 |
tab = self.tab |
|
304 | tab = self.tab_widget.widget(tab) | |
305 | km=tab.kernel_manager; |
|
305 | km=tab.kernel_manager; | |
306 |
|
306 | |||
307 | #build list of all widgets |
|
307 | #build list of all widgets | |
308 |
widgetList = [self.tab |
|
308 | widgetList = [self.tab_widget.widget(i) for i in range(self.tab_widget.count())] | |
309 |
|
309 | |||
310 | # widget that are candidate not to be the owner of the kernel does have all the same port of the curent widget |
|
310 | # widget that are candidate not to be the owner of the kernel does have all the same port of the curent widget | |
311 | filtredWidgetList = ( widget for widget in widgetList if |
|
311 | filtredWidgetList = ( widget for widget in widgetList if | |
@@ -528,7 +528,7 b' class MainWindow(QtGui.QMainWindow):' | |||||
528 | """ Forward the close event to every tabs contained by the windows |
|
528 | """ Forward the close event to every tabs contained by the windows | |
529 | """ |
|
529 | """ | |
530 | # Do Not loop on the widget count as it change while closing |
|
530 | # Do Not loop on the widget count as it change while closing | |
531 |
widgetList=[ self.tab |
|
531 | widgetList=[ self.tab_widget.widget(i) for i in range(self.tab_widget.count())] | |
532 | for widget in widgetList: |
|
532 | for widget in widgetList: | |
533 | self.closeTab(widget) |
|
533 | self.closeTab(widget) | |
534 | event.accept() |
|
534 | event.accept() | |
@@ -858,10 +858,10 b' class IPythonQtConsoleApp(BaseIPythonApplication):' | |||||
858 | self.window.addTabWithFrontend(widget) |
|
858 | self.window.addTabWithFrontend(widget) | |
859 |
|
859 | |||
860 | def createTabAttachedToCurrentTabKernel(self): |
|
860 | def createTabAttachedToCurrentTabKernel(self): | |
861 |
currentWidget = self.window.tab |
|
861 | currentWidget = self.window.tab_widget.currentWidget() | |
862 |
currentWidgetIndex = self.window.tab |
|
862 | currentWidgetIndex = self.window.tab_widget.indexOf(currentWidget) | |
863 | currentWidget.kernel_manager = currentWidget.kernel_manager; |
|
863 | currentWidget.kernel_manager = currentWidget.kernel_manager; | |
864 |
currentWidgetName = self.window.tab |
|
864 | currentWidgetName = self.window.tab_widget.tabText(currentWidgetIndex); | |
865 | kernel_manager = QtKernelManager( |
|
865 | kernel_manager = QtKernelManager( | |
866 | shell_address = currentWidget.kernel_manager.shell_address, |
|
866 | shell_address = currentWidget.kernel_manager.shell_address, | |
867 | sub_address = currentWidget.kernel_manager.sub_address, |
|
867 | sub_address = currentWidget.kernel_manager.sub_address, |
General Comments 0
You need to be logged in to leave comments.
Login now