Debugger/DebugViewer.py

changeset 6416
a915f8dd1ca6
parent 6048
82ad8ec9548c
child 6431
1842436770c4
equal deleted inserted replaced
6415:6268db2f966d 6416:a915f8dd1ca6
46 46
47 @signal sourceFile(string, int) emitted to open a source file at a line 47 @signal sourceFile(string, int) emitted to open a source file at a line
48 """ 48 """
49 sourceFile = pyqtSignal(str, int) 49 sourceFile = pyqtSignal(str, int)
50 50
51 def __init__(self, debugServer, docked, vm, parent=None, 51 def __init__(self, debugServer, docked, vm, parent=None):
52 embeddedShell=True, embeddedBrowser=True):
53 """ 52 """
54 Constructor 53 Constructor
55 54
56 @param debugServer reference to the debug server object (DebugServer) 55 @param debugServer reference to the debug server object (DebugServer)
57 @param docked flag indicating a dock window 56 @param docked flag indicating a dock window
58 @param vm reference to the viewmanager object 57 @param vm reference to the viewmanager object
59 @param parent parent widget (QWidget) 58 @param parent parent widget (QWidget)
60 @param embeddedShell flag indicating whether the shell should be
61 included. This flag is set to False by those layouts, that have
62 the interpreter shell in a separate window.
63 @param embeddedBrowser flag indicating whether the file browser should
64 be included. This flag is set to False by those layouts, that
65 have the file browser in a separate window or embedded
66 in the project browser instead.
67 """ 59 """
68 super(DebugViewer, self).__init__(parent) 60 super(DebugViewer, self).__init__(parent)
69 61
70 self.debugServer = debugServer 62 self.debugServer = debugServer
71 self.debugUI = None 63 self.debugUI = None
76 self.__mainLayout.setContentsMargins(0, 0, 0, 0) 68 self.__mainLayout.setContentsMargins(0, 0, 0, 0)
77 self.setLayout(self.__mainLayout) 69 self.setLayout(self.__mainLayout)
78 70
79 self.__tabWidget = E5TabWidget() 71 self.__tabWidget = E5TabWidget()
80 self.__mainLayout.addWidget(self.__tabWidget) 72 self.__mainLayout.addWidget(self.__tabWidget)
81
82 self.embeddedShell = embeddedShell
83 if embeddedShell:
84 from QScintilla.Shell import ShellAssembly
85 # add the interpreter shell
86 self.shellAssembly = ShellAssembly(debugServer, vm, False)
87 self.shell = self.shellAssembly.shell()
88 index = self.__tabWidget.addTab(
89 self.shellAssembly,
90 UI.PixmapCache.getIcon("shell.png"), '')
91 self.__tabWidget.setTabToolTip(index, self.shell.windowTitle())
92
93 self.embeddedBrowser = embeddedBrowser
94 if embeddedBrowser:
95 from UI.Browser import Browser
96 # add the browser
97 self.browser = Browser()
98 index = self.__tabWidget.addTab(
99 self.browser,
100 UI.PixmapCache.getIcon("browser.png"), '')
101 self.__tabWidget.setTabToolTip(index, self.browser.windowTitle())
102 73
103 from .VariablesViewer import VariablesViewer 74 from .VariablesViewer import VariablesViewer
104 # add the global variables viewer 75 # add the global variables viewer
105 self.glvWidget = QWidget() 76 self.glvWidget = QWidget()
106 self.glvWidgetVLayout = QVBoxLayout(self.glvWidget) 77 self.glvWidgetVLayout = QVBoxLayout(self.glvWidget)
247 self.exceptionLogger, 218 self.exceptionLogger,
248 UI.PixmapCache.getIcon("exceptions.png"), '') 219 UI.PixmapCache.getIcon("exceptions.png"), '')
249 self.__tabWidget.setTabToolTip( 220 self.__tabWidget.setTabToolTip(
250 index, self.exceptionLogger.windowTitle()) 221 index, self.exceptionLogger.windowTitle())
251 222
252 if self.embeddedShell: 223 self.__tabWidget.setCurrentWidget(self.glvWidget)
253 self.__tabWidget.setCurrentWidget(self.shellAssembly)
254 else:
255 if self.embeddedBrowser:
256 self.__tabWidget.setCurrentWidget(self.browser)
257 else:
258 self.__tabWidget.setCurrentWidget(self.glvWidget)
259 224
260 # add the threads viewer 225 # add the threads viewer
261 self.__mainLayout.addWidget(QLabel(self.tr("Threads:"))) 226 self.__mainLayout.addWidget(QLabel(self.tr("Threads:")))
262 self.__threadList = QTreeWidget() 227 self.__threadList = QTreeWidget()
263 self.__threadList.setHeaderLabels( 228 self.__threadList.setHeaderLabels(
271 self.__threadList.currentItemChanged.connect(self.__threadSelected) 236 self.__threadList.currentItemChanged.connect(self.__threadSelected)
272 237
273 self.__mainLayout.setStretchFactor(self.__tabWidget, 5) 238 self.__mainLayout.setStretchFactor(self.__tabWidget, 5)
274 self.__mainLayout.setStretchFactor(self.__threadList, 1) 239 self.__mainLayout.setStretchFactor(self.__threadList, 1)
275 240
276 self.currPage = None
277 self.currentStack = None 241 self.currentStack = None
278 self.framenr = 0 242 self.framenr = 0
279 243
280 self.debugServer.clientStack.connect(self.handleClientStack) 244 self.debugServer.clientStack.connect(self.handleClientStack)
281 245
309 self.setLocalsFilter() 273 self.setLocalsFilter()
310 self.sourceButton.setEnabled(False) 274 self.sourceButton.setEnabled(False)
311 self.currentStack = None 275 self.currentStack = None
312 self.stackComboBox.clear() 276 self.stackComboBox.clear()
313 self.__threadList.clear() 277 self.__threadList.clear()
314 if self.embeddedShell: 278 self.__tabWidget.setCurrentWidget(self.glvWidget)
315 self.__tabWidget.setCurrentWidget(self.shellAssembly)
316 else:
317 if self.embeddedBrowser:
318 self.__tabWidget.setCurrentWidget(self.browser)
319 else:
320 self.__tabWidget.setCurrentWidget(self.glvWidget)
321 self.breakpointViewer.handleResetUI() 279 self.breakpointViewer.handleResetUI()
322
323 def handleRawInput(self):
324 """
325 Public slot to handle the switch to the shell in raw input mode.
326 """
327 if self.embeddedShell:
328 self.saveCurrentPage()
329 self.__tabWidget.setCurrentWidget(self.shellAssembly)
330 280
331 def initCallStackViewer(self, projectMode): 281 def initCallStackViewer(self, projectMode):
332 """ 282 """
333 Public method to initialize the call stack viewer. 283 Public method to initialize the call stack viewer.
334 284
395 if showGlobals: 345 if showGlobals:
396 self.__tabWidget.setCurrentWidget(self.glvWidget) 346 self.__tabWidget.setCurrentWidget(self.glvWidget)
397 else: 347 else:
398 self.__tabWidget.setCurrentWidget(self.lvWidget) 348 self.__tabWidget.setCurrentWidget(self.lvWidget)
399 349
400 def saveCurrentPage(self):
401 """
402 Public slot to save the current page.
403 """
404 self.currPage = self.__tabWidget.currentWidget()
405
406 def restoreCurrentPage(self):
407 """
408 Public slot to restore the previously saved page.
409 """
410 if self.currPage is not None:
411 self.__tabWidget.setCurrentWidget(self.currPage)
412
413 def handleClientStack(self, stack): 350 def handleClientStack(self, stack):
414 """ 351 """
415 Public slot to show the call stack of the program being debugged. 352 Public slot to show the call stack of the program being debugged.
416 353
417 @param stack list of tuples with call stack data (file name, 354 @param stack list of tuples with call stack data (file name,

eric ide

mercurial