#
#
#

from PySide.QtCore import *
from PySide.QtGui import *      

import pykd


class DbgThread( QThread ):

    def __init__(self):
        QThread.__init__(self)
    
    def run(self):
        pykd.startProcess( self.processName )
        pykd.go()
        #    pass         
        while True:
            self.sleep(100)


        self.exit()


class MainForm( QMainWindow ):
    
    def __init__( self ):

        QMainWindow.__init__( self, None )            
        self.setWindowTitle("Pykd Debugger Sample")      

        fileMenu = QMenu( "&File" )
        fileMenu.addAction( "Open process...",  self.onOpenProcess )
        fileMenu.addAction( "Exit", self.onExit )

        self.menuBar().addMenu( fileMenu )

        self.resize( 800, 600 )

    
    def __del__( self ):

        if self.debugger.isRunning():
            self.debugger.quit()
            self.debugger.wait(1000)
            self.debugger.terminate()


    def onOpenProcess( self ):
	fileDlg = QFileDialog( self )
        fileDlg.setNameFilter( self.tr("Executable (*.exe)" ) )

        self.debugger = DbgThread()
        self.debugger.processName = fileDlg.getOpenFileName()[0]
        self.debugger.start()


    def onExit( self ):
        self.close()


def main():      

    app = QApplication( [] )
    mainForm = MainForm()
    mainForm.show()
    exitres = app.exec_()

if __name__ == "__main__":
    main()