Welcome to MSDN Blogs Sign in | Join | Help

OptionsGui.py

1  # OptionsGui.py
2  #  GUI for modifying MDBG options
3  
4  import sys
5  sys.LoadAssemblyByName("System.Windows.Forms")
6  
7  from System import *
8  from System.Windows.Forms import *
9  
10  # display a GUI view of the current MDBG options
11  def OptionsGui():
12      guiWindow = OptionsGuiForm(Shell.Debugger.Options)
13      guiWindow.ShowDialog()
14  
15  
16  class OptionsGuiForm:
17      def __init__(self, options):
18          self.__options = options
19          self.__window = Form(Text = "MDbg Options", AutoSize = True, FormBorderStyle = FormBorderStyle.FixedDialog, MinimizeBox = False, MaximizeBox = False)
20          layout = TableLayoutPanel(ColumnCount = 2, RowCount = 0, AutoSize = True, Dock = DockStyle.Fill)
21      
22          # create a check box for each option
23          self.__controls = dict()
24          self.__controls["CreateProcessWithNewConsole"] = CheckBox(Text = "Create process with new console", Checked = options.CreateProcessWithNewConsole, AutoSize = True)
25          self.__controls["InteropCallStack"] = CheckBox(Text = "Interop call stack", Checked = options.InteropCallStack, AutoSize = True)
26          self.__controls["ShowAddresses"] = CheckBox(Text = "Show addresses", Checked = options.ShowAddresses, AutoSize = True)
27          self.__controls["StopOnAssemblyLoad"] = CheckBox(Text = "Stop on assembly load", Checked = options.StopOnAssemblyLoad, AutoSize = True)
28          self.__controls["StopOnAssemblyUnload"] = CheckBox(Text = "Stop on assembly unload", Checked = options.StopOnAssemblyUnload, AutoSize = True)
29          self.__controls["StopOnClassLoad"] = CheckBox(Text = "Stop on class load", Checked = options.StopOnClassLoad, AutoSize = True)
30          self.__controls["StopOnException"] = CheckBox(Text = "Stop on exception", Checked = options.StopOnException, AutoSize = True)
31          self.__controls["StopOnExceptionEnhanced"] = CheckBox(Text = "Stop on exception enhanced", Checked = options.StopOnExceptionEnhanced, AutoSize = True)
32          self.__controls["StopOnLogMessage"] = CheckBox(Text = "Stop on log message", Checked = options.StopOnLogMessage, AutoSize = True)
33          self.__controls["StopOnModuleLoad"] = CheckBox(Text = "Stop on module load", Checked = options.StopOnModuleLoad, AutoSize = True)
34          self.__controls["StopOnNewThread"] = CheckBox(Text = "Stop on new thread", Checked = options.StopOnNewThread, AutoSize = True)
35          self.__controls["StopOnUnhandledException"] = CheckBox(Text = "Stop on unhandled exception", Checked = options.StopOnUnhandledException, AutoSize = True)
36  
37          # add the checkboxes to the form
38          for controlName in self.__controls:
39              layout.Controls.Add(self.__controls[controlName])
40      
41          # add a text box for the symbol path
42          symbolLabel = Label(Text = "Symbol path", Dock = DockStyle.Fill)
43          layout.Controls.Add(symbolLabel)
44          layout.SetColumnSpan(symbolLabel, 2)
45  
46          self.__controls["SymbolPath"] = TextBox(Text = options.SymbolPath, Dock = DockStyle.Fill)
47          layout.Controls.Add(self.__controls["SymbolPath"])
48          layout.SetColumnSpan(self.__controls["SymbolPath"], 2)
49  
50          # add ok and cancel buttons
51          okButton = Button(Text = "OK")
52          okButton.Click += self.__OnOkButtonClick
53          layout.Controls.Add(okButton)
54          self.__window.AcceptButton = okButton
55  
56          cancelButton = Button(Text = "Cancel")
57          cancelButton.Click += self.__OnCancelButtonClick
58          layout.Controls.Add(cancelButton)
59          self.__window.CancelButton = cancelButton
60      
61          # finish setting up the window
62          self.__window.Controls.Add(layout)
63          layout.PerformLayout()
64  
65      def ShowDialog(self):
66          # if the user presses ok, then update the options structure
67          if self.__DoShowDialog() == DialogResult.OK:
68              self.__options.CreateProcessWithNewConsole = self.__controls["CreateProcessWithNewConsole"].Checked
69              self.__options.InteropCallStack = self.__controls["InteropCallStack"].Checked
70              self.__options.ShowAddresses = self.__controls["ShowAddresses"].Checked
71              self.__options.StopOnAssemblyLoad = self.__controls["StopOnAssemblyLoad"].Checked
72              self.__options.StopOnAssemblyUnload = self.__controls["StopOnAssemblyUnload"].Checked
73              self.__options.StopOnClassLoad = self.__controls["StopOnClassLoad"].Checked
74              self.__options.StopOnException = self.__controls["StopOnException"].Checked
75              self.__options.StopOnExceptionEnhanced = self.__controls["StopOnExceptionEnhanced"].Checked
76              self.__options.StopOnLogMessage = self.__controls["StopOnLogMessage"].Checked
77              self.__options.StopOnModuleLoad = self.__controls["StopOnModuleLoad"].Checked
78              self.__options.StopOnNewThread = self.__controls["StopOnNewThread"].Checked
79              self.__options.StopOnUnhandledException = self.__controls["StopOnUnhandledException"].Checked
80              self.__options.SymbolPath = self.__controls["SymbolPath"].Text
81  
82      def __DoShowDialog(self):
83          return self.__window.ShowDialog()
84  
85      def __OnOkButtonClick(self, sender, e):
86          self.__window.DialogResult = DialogResult.OK
87          self.__window.Close()
88  
89      def __OnCancelButtonClick(self, sender, e):
90          self.__window.DialogResult = DialogResult.Cancel
91          self.__window.Close()
92  
Published Friday, September 02, 2005 4:02 PM by shawnfa

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# IronPython + MDbg = good times

Friday, September 02, 2005 7:07 PM by .Net Security Blog
Mike Stall recently completed a project to embed IronPython into the MDbg debugger as an MDbg extension. ...

# IronPython + MDbg = good times

Friday, September 02, 2005 8:41 PM by .Net Security Blog
Mike Stall recently completed a project to embed IronPython into the MDbg debugger as an MDbg extension. ...

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker