-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinteractive_dis.py
executable file
·83 lines (60 loc) · 1.67 KB
/
interactive_dis.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/python
################ PM hack #########################
import sys
gui_instance = None
def dbghook(type, value, tb):
import traceback
import pdb
if gui_instance:
gui_instance.except_shutdown()
traceback.print_exception(type, value, tb)
print
pdb.pm()
#sys.excepthook = dbghook
############### END PM HACK ######################
import traceback
import sys
from datastore import DataStore
import applogic.tools
gui_instance = None
# HACK - differentiate gui types
DEFAULT_GUI_NAME = "qt"
def getGuiClass(gui_args):
if gui_args:
try:
gui_name = gui_args[1]
except IndexError:
print "Error: -g flag needs argument, using QT gui"
gui_name = DEFAULT_GUI_NAME
else:
gui_name = DEFAULT_GUI_NAME
guis = {
"qt": ("gui.qtgui", "gui.qtgui.QTGui"),
}
if not gui_name in guis:
print "Invalid gui name %s. Valid names are: %s" % (
gui_name, " ".join(guis.keys()))
return None
import_name, gui_clsname = guis[gui_name]
gui = __import__(import_name)
return eval(gui_clsname)
# Handle args with optionparser
def main(args):
try:
gui_index = args.index("-g")
gui_args = args[gui_index:gui_index + 2]
args = args[:gui_index] + args[gui_index + 2:]
except ValueError:
gui_args = []
gui_class = getGuiClass(gui_args)
if not gui_class:
return
filenames = args
global gui_instance
gui_instance = gui_class()
# Run the gui
gui_instance.startup()
gui_instance.mainloop(filenames)
gui_instance.shutdown()
if __name__ == '__main__':
main(sys.argv[1:])