pykd/samples/dbg/widget.py
SND\kernelnet_cp 78fbe47e76 [0.1.x] added : simple "simple debugger"
git-svn-id: https://pykd.svn.codeplex.com/svn@75462 9b283d60-5439-405e-af05-b73fd8c4d996
2017-11-08 17:27:51 +04:00

97 lines
2.7 KiB
Python

from PySide.QtCore import *
from PySide.QtGui import *
class BaseWidget( QDockWidget ):
def __init__( self, dbgCore, mainWindow, title = "", visible = False ):
QDockWidget.__init__( self )
self.setWindowTitle( title )
self.setVisible( visible )
mainWindow.addDockWidget( Qt.LeftDockWidgetArea, self )
self.dbgCore=dbgCore
self.mainWnd = mainWindow
dbgCore.targetBreak.connect( self.onDbgBreak )
dbgCore.targetRunning.connect( self.onDbgRun )
dbgCore.targetAttached.connect( self.onDbgAttach )
dbgCore.targetDetached.connect( self.onDbgDetach )
def addMenuTriggerAction( self, actionName ):
self.action = QAction( actionName, self.mainWnd )
self.action.triggered.connect(self.onTriggerAction)
self.action.setDisabled( True )
self.mainWnd.viewMenu.addAction(self.action)
def onDbgBreak(self):
pass
def onDbgRun(self):
pass
def onDbgAttach(self):
pass
def onDbgDetach(self):
pass
def onTriggerAction(self):
self.setVisible( not self.isVisible() )
class DebugWidget( BaseWidget ):
def __init__( self, dbgCore, mainWindow, title = "", visible = False ):
BaseWidget.__init__( self, dbgCore, mainWindow, title, visible )
self.action = None
def onDbgAttach(self):
if self.action != None:
self.action.setDisabled( True )
self.setDisabled( True )
def onDbgDetach(self):
if self.action != None:
self.action.setDisabled( True )
self.setDisabled( True )
def onDbgBreak(self):
if self.action != None:
self.action.setDisabled( False )
self.setDisabled( False )
self.updateView()
def onDbgRun(self):
if self.action != None:
self.action.setDisabled( True )
self.setDisabled( True )
def updateView(self):
pass
class BaseController(QObject):
def __init__(self,dbgCore,mainWindow):
QObject.__init__(self,mainWindow)
self.dbgCore=dbgCore
self.mainWnd = mainWindow
dbgCore.targetBreak.connect( self.onDbgBreak )
dbgCore.targetRunning.connect( self.onDbgRun )
dbgCore.targetAttached.connect( self.onDbgAttach )
dbgCore.targetDetached.connect( self.onDbgDetach )
def onDbgBreak(self):
self.onStateChange()
def onDbgRun(self):
self.onStateChange()
def onDbgAttach(self):
self.onStateChange()
def onDbgDetach(self):
self.onStateChange()
def onStateChange(self):
pass