author | TK Soh <teekaysoh@yahoo.com> |
Sun, 20 Jul 2008 05:54:01 +0100 | |
changeset 1178 | 1625a49de779 |
parent 1161 | fa4bb5ff5dee |
permissions | -rw-r--r-- |
1159
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
1 |
# |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
2 |
# A PyGtk-based Python Trace Collector window |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
3 |
# |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
4 |
# Copyright (C) 2007 TK Soh <teekaysoh@gmail.com> |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
5 |
# |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
6 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
7 |
import pygtk |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
8 |
pygtk.require("2.0") |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
9 |
import gtk |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
10 |
import gobject |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
11 |
import pango |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
12 |
import threading |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
13 |
import Queue |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
14 |
import win32trace |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
15 |
|
1160
9557254e63ce
tracelog: fix hglib import issue
TK Soh <teekaysoh@yahoo.com>
parents:
1159
diff
changeset
|
16 |
try: |
9557254e63ce
tracelog: fix hglib import issue
TK Soh <teekaysoh@yahoo.com>
parents:
1159
diff
changeset
|
17 |
from hggtk.hglib import toutf |
9557254e63ce
tracelog: fix hglib import issue
TK Soh <teekaysoh@yahoo.com>
parents:
1159
diff
changeset
|
18 |
except ImportError: |
1161
fa4bb5ff5dee
tracelog: fallback to system encoding if hglib not available
TK Soh <teekaysoh@yahoo.com>
parents:
1160
diff
changeset
|
19 |
import locale |
fa4bb5ff5dee
tracelog: fallback to system encoding if hglib not available
TK Soh <teekaysoh@yahoo.com>
parents:
1160
diff
changeset
|
20 |
_encoding = locale.getpreferredencoding() |
1160
9557254e63ce
tracelog: fix hglib import issue
TK Soh <teekaysoh@yahoo.com>
parents:
1159
diff
changeset
|
21 |
def toutf(s): |
1161
fa4bb5ff5dee
tracelog: fallback to system encoding if hglib not available
TK Soh <teekaysoh@yahoo.com>
parents:
1160
diff
changeset
|
22 |
return s.decode(_encoding, 'replace').encode('utf-8') |
1159
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
23 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
24 |
class TraceLog(): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
25 |
def __init__(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
26 |
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
27 |
self.window.set_title("Python Trace Collector") |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
28 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
29 |
# construct window |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
30 |
self.window.set_default_size(700, 400) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
31 |
self.main_area = gtk.VBox() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
32 |
self.window.add(self.main_area) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
33 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
34 |
# mimic standard dialog widgets |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
35 |
self.action_area = gtk.HBox() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
36 |
self.main_area.pack_end(self.action_area, False, False, 5) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
37 |
sep = gtk.HSeparator() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
38 |
self.main_area.pack_end(sep, False, False, 0) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
39 |
self.vbox = gtk.VBox() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
40 |
self.main_area.pack_end(self.vbox) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
41 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
42 |
# add python trace ouput window |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
43 |
scrolledwindow = gtk.ScrolledWindow() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
44 |
scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
45 |
self.textview = gtk.TextView(buffer=None) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
46 |
self.textview.set_editable(False) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
47 |
self.textview.modify_font(pango.FontDescription("Monospace")) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
48 |
scrolledwindow.add(self.textview) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
49 |
self.textview.set_editable(False) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
50 |
self.textbuffer = self.textview.get_buffer() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
51 |
self.vbox.pack_start(scrolledwindow, True, True) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
52 |
self.vbox.show_all() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
53 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
54 |
# add buttons |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
55 |
self._button_quit = gtk.Button("Quit") |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
56 |
self._button_quit.connect('clicked', self._on_ok_clicked) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
57 |
self.action_area.pack_end(self._button_quit, False, False, 5) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
58 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
59 |
self._button_clear = gtk.Button("Clear") |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
60 |
self._button_clear.connect('clicked', self._on_clear_clicked) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
61 |
self.action_area.pack_end(self._button_clear, False, False, 5) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
62 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
63 |
# add assorted window event handlers |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
64 |
self.window.connect('map_event', self._on_window_map_event) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
65 |
self.window.connect('delete_event', self._on_window_close_clicked) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
66 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
67 |
def _on_ok_clicked(self, button): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
68 |
self._stop_read_thread() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
69 |
gtk.main_quit() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
70 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
71 |
def _on_clear_clicked(self, button): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
72 |
self.write("", False) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
73 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
74 |
def _on_window_close_clicked(self, event, param): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
75 |
self._stop_read_thread() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
76 |
gtk.main_quit() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
77 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
78 |
def _on_window_map_event(self, event, param): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
79 |
self._begin_trace() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
80 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
81 |
def _begin_trace(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
82 |
self.queue = Queue.Queue() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
83 |
win32trace.InitRead() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
84 |
self.write("Collecting Python Trace Output...\n") |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
85 |
gobject.timeout_add(10, self._process_queue) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
86 |
self._start_read_thread() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
87 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
88 |
def _start_read_thread(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
89 |
self._read_trace = True |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
90 |
self.thread1 = threading.Thread(target=self._do_read_trace) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
91 |
self.thread1.start() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
92 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
93 |
def _stop_read_thread(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
94 |
self._read_trace = False |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
95 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
96 |
# wait for worker thread to to fix Unhandled exception in thread |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
97 |
self.thread1.join() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
98 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
99 |
def _process_queue(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
100 |
""" |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
101 |
Handle all the messages currently in the queue (if any). |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
102 |
""" |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
103 |
while self.queue.qsize(): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
104 |
try: |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
105 |
msg = self.queue.get(0) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
106 |
self.write(msg) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
107 |
except Queue.Empty: |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
108 |
pass |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
109 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
110 |
return True |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
111 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
112 |
def _do_read_trace(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
113 |
""" |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
114 |
print buffer collected in win32trace |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
115 |
""" |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
116 |
while self._read_trace: |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
117 |
msg = win32trace.read() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
118 |
if msg: |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
119 |
self.queue.put(msg) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
120 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
121 |
def write(self, msg, append=True): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
122 |
msg = toutf(msg) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
123 |
if append: |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
124 |
enditer = self.textbuffer.get_end_iter() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
125 |
self.textbuffer.insert(enditer, msg) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
126 |
else: |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
127 |
self.textbuffer.set_text(msg) |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
128 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
129 |
def main(self): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
130 |
self.window.show_all() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
131 |
gtk.main() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
132 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
133 |
def run(): |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
134 |
dlg = TraceLog() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
135 |
dlg.main() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
136 |
|
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
137 |
if __name__ == "__main__": |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
138 |
run() |
d3567aa402ad
hggtk: move tracelog to top directory
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
139 |