446 self.debugViewer.handleDebuggingStarted) |
446 self.debugViewer.handleDebuggingStarted) |
447 debugServer.clientException.connect( |
447 debugServer.clientException.connect( |
448 self.debugViewer.exceptionLogger.addException) |
448 self.debugViewer.exceptionLogger.addException) |
449 debugServer.clientLine.connect( |
449 debugServer.clientLine.connect( |
450 self.debugViewer.breakpointViewer.highlightBreakpoint) |
450 self.debugViewer.breakpointViewer.highlightBreakpoint) |
|
451 debugServer.clientDisassembly.connect( |
|
452 self.debugViewer.disassemblyViewer.showDisassembly) |
451 debugServer.clientProcessStdout.connect(self.appendToStdout) |
453 debugServer.clientProcessStdout.connect(self.appendToStdout) |
452 debugServer.clientProcessStderr.connect(self.appendToStderr) |
454 debugServer.clientProcessStderr.connect(self.appendToStderr) |
453 debugServer.appendStdout.connect(self.appendToStdout) |
455 debugServer.appendStdout.connect(self.appendToStdout) |
454 |
456 |
455 self.stdout.appendStdout.connect(self.appendToStdout) |
457 self.stdout.appendStdout.connect(self.appendToStdout) |
484 self.preferencesChanged.connect(debugServer.preferencesChanged) |
486 self.preferencesChanged.connect(debugServer.preferencesChanged) |
485 self.preferencesChanged.connect(self.debugViewer.preferencesChanged) |
487 self.preferencesChanged.connect(self.debugViewer.preferencesChanged) |
486 self.preferencesChanged.connect( |
488 self.preferencesChanged.connect( |
487 self.backgroundService.preferencesOrProjectChanged) |
489 self.backgroundService.preferencesOrProjectChanged) |
488 self.preferencesChanged.connect(self.__previewer.preferencesChanged) |
490 self.preferencesChanged.connect(self.__previewer.preferencesChanged) |
|
491 self.preferencesChanged.connect(self.__astViewer.preferencesChanged) |
|
492 self.preferencesChanged.connect(self.__disViewer.preferencesChanged) |
489 |
493 |
490 if self.browser is not None: |
494 if self.browser is not None: |
491 self.browser.sourceFile[str].connect( |
495 self.browser.sourceFile[str].connect( |
492 self.viewmanager.openSourceFile) |
496 self.viewmanager.openSourceFile) |
493 self.browser.sourceFile[str, int].connect( |
497 self.browser.sourceFile[str, int].connect( |
786 # Create AST viewer |
790 # Create AST viewer |
787 logging.debug("Creating Python AST Viewer") |
791 logging.debug("Creating Python AST Viewer") |
788 from .PythonAstViewer import PythonAstViewer |
792 from .PythonAstViewer import PythonAstViewer |
789 self.__astViewer = PythonAstViewer(self.viewmanager, splitter) |
793 self.__astViewer = PythonAstViewer(self.viewmanager, splitter) |
790 splitter.addWidget(self.__astViewer) |
794 splitter.addWidget(self.__astViewer) |
|
795 |
|
796 # Create DIS viewer |
|
797 logging.debug("Creating Python Disassembly Viewer") |
|
798 from .PythonDisViewer import PythonDisViewer |
|
799 self.__disViewer = PythonDisViewer(self.viewmanager, parent=splitter) |
|
800 splitter.addWidget(self.__disViewer) |
791 |
801 |
792 # Create layout with toolbox windows embedded in dock windows |
802 # Create layout with toolbox windows embedded in dock windows |
793 if self.__layoutType == "Toolboxes": |
803 if self.__layoutType == "Toolboxes": |
794 logging.debug("Creating toolboxes...") |
804 logging.debug("Creating toolboxes...") |
795 self.__createToolboxesLayout(debugServer) |
805 self.__createToolboxesLayout(debugServer) |
3686 body = f.read() |
3696 body = f.read() |
3687 f.close() |
3697 f.close() |
3688 if deleteAttachFile: |
3698 if deleteAttachFile: |
3689 os.remove(attachFile) |
3699 os.remove(attachFile) |
3690 else: |
3700 else: |
3691 body = "\r\n----\r\n{0}----\r\n{1}----\r\n{2}".format( |
3701 body = "\r\n----\r\n{0}\r\n----\r\n{1}\r\n----\r\n{2}".format( |
3692 Utilities.generateVersionInfo("\r\n"), |
3702 Utilities.generateVersionInfo("\r\n"), |
3693 Utilities.generatePluginsVersionInfo("\r\n"), |
3703 Utilities.generatePluginsVersionInfo("\r\n"), |
3694 Utilities.generateDistroInfo("\r\n")) |
3704 Utilities.generateDistroInfo("\r\n")) |
3695 |
3705 |
3696 url = QUrl("mailto:{0}".format(address)) |
3706 url = QUrl("mailto:{0}".format(address)) |
4152 |
4162 |
4153 @param menu reference to the menu to be populated (QMenu) |
4163 @param menu reference to the menu to be populated (QMenu) |
4154 """ |
4164 """ |
4155 menu.clear() |
4165 menu.clear() |
4156 |
4166 |
4157 for name, (text, tb, category) in sorted( |
4167 for name, (text, tb, _category) in sorted( |
4158 self.__toolbars.items(), key=lambda t: t[1][0] |
4168 self.__toolbars.items(), key=lambda t: t[1][0] |
4159 ): |
4169 ): |
4160 act = menu.addAction(text) |
4170 act = menu.addAction(text) |
4161 act.setCheckable(True) |
4171 act.setCheckable(True) |
4162 act.setChecked(not tb.isHidden()) |
4172 act.setChecked(not tb.isHidden()) |
4194 @param act reference to the action that was triggered (QAction) |
4204 @param act reference to the action that was triggered (QAction) |
4195 """ |
4205 """ |
4196 name = act.data() |
4206 name = act.data() |
4197 if name: |
4207 if name: |
4198 if name == "__SHOW__": |
4208 if name == "__SHOW__": |
4199 for _text, tb, category in self.__toolbars.values(): |
4209 for _text, tb, _category in self.__toolbars.values(): |
4200 tb.show() |
4210 tb.show() |
4201 if self.__menus["toolbars"].isTearOffMenuVisible(): |
4211 if self.__menus["toolbars"].isTearOffMenuVisible(): |
4202 self.__menus["toolbars"].hideTearOffMenu() |
4212 self.__menus["toolbars"].hideTearOffMenu() |
4203 elif name == "__HIDE__": |
4213 elif name == "__HIDE__": |
4204 for _text, tb, category in self.__toolbars.values(): |
4214 for _text, tb, _category in self.__toolbars.values(): |
4205 tb.hide() |
4215 tb.hide() |
4206 if self.__menus["toolbars"].isTearOffMenuVisible(): |
4216 if self.__menus["toolbars"].isTearOffMenuVisible(): |
4207 self.__menus["toolbars"].hideTearOffMenu() |
4217 self.__menus["toolbars"].hideTearOffMenu() |
4208 else: |
4218 else: |
4209 tb = self.__toolbars[name][1] |
4219 tb = self.__toolbars[name][1] |
4221 @param act reference to the action that was triggered (QAction) |
4231 @param act reference to the action that was triggered (QAction) |
4222 """ |
4232 """ |
4223 name = act.data() |
4233 name = act.data() |
4224 if name: |
4234 if name: |
4225 if name == "__SHOW__": |
4235 if name == "__SHOW__": |
4226 for _text, tb, category in self.__toolbars.values(): |
4236 for _text, tb, _category in self.__toolbars.values(): |
4227 tb.show() |
4237 tb.show() |
4228 elif name == "__HIDE__": |
4238 elif name == "__HIDE__": |
4229 for _text, tb, category in self.__toolbars.values(): |
4239 for _text, tb, _category in self.__toolbars.values(): |
4230 tb.hide() |
4240 tb.hide() |
4231 else: |
4241 else: |
4232 tb = self.__toolbars[name][1] |
4242 tb = self.__toolbars[name][1] |
4233 if act.isChecked(): |
4243 if act.isChecked(): |
4234 tb.show() |
4244 tb.show() |