Changeset b179a5cc1e71…
Parent 9c45f864ab67…
by
Changes to 2 files · Browse files at b179a5cc1e71 Showing diff from parent 9c45f864ab67 Diff from another changeset...
@@ -39,6 +39,7 @@ 0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, \
0, 0, hinst, None)
UpdateWindow(self.hwnd)
+ self.guithread = None
self._DoCreateIcons()
def _DoCreateIcons(self):
@@ -91,9 +92,11 @@ def OnCommand(self, hwnd, msg, wparam, lparam):
id = LOWORD(wparam)
if id == 1023:
- # place holder for options dialog
- msg = "TortoiseHG options dialog in construction"
- win32ui.MessageBox(msg, 'TortoiseHG options...', win32con.MB_OK)
+ if not self.guithread or not self.guithread.isAlive():
+ self.launchgui()
+ else:
+ msg = "TortoiseHG options dialog already running"
+ win32ui.MessageBox(msg, 'TortoiseHG options...', win32con.MB_OK)
elif id == 1025:
self.exit_application()
else:
@@ -102,7 +105,10 @@ def exit_application(self):
if self.stop_pipe_server():
DestroyWindow(self.hwnd)
- print "Goodbye"
+ if self.guithread and self.guithread.isAlive():
+ import gobject
+ gobject.idle_add(self.dialog.destroy)
+ print "Goodbye"
def stop_pipe_server(self):
print "Stopping pipe server..."
@@ -130,6 +136,21 @@ else:
return True
+ def launchgui(self):
+ def launch():
+ import gtk
+ from hggtk import taskbarui, hgtk
+ dlg = taskbarui.TaskBarUI(rpcserver.logq)
+ dlg.show_all()
+ dlg.connect('destroy', gtk.main_quit)
+ self.dialog = dlg
+ gtk.gdk.threads_init()
+ gtk.gdk.threads_enter()
+ gtk.main()
+ gtk.gdk.threads_leave()
+
+ self.guithread = thread2.Thread(target=launch)
+ self.guithread.start()
def start_pipe_server(self):
def servepipe():
|
@@ -26,6 +26,11 @@
PIPEBUFSIZE = 4096
+logq = Queue.Queue(0)
+def logmsg(msg):
+ if logq.qsize() < 100:
+ ts = '[%s] ' % time.strftime('%c')
+ logq.put(ts + msg)
def update_batch(batch):
'''updates thgstatus for all paths in batch'''
@@ -45,12 +50,12 @@ if roots:
_ui = ui.ui();
for r in sorted(roots):
+ logmsg('Updating ' + r)
shlib.update_thgstatus(_ui, r, wait=False)
- print "updated repo %s" % r
if notifypaths:
time.sleep(2)
shlib.shell_notify(list(notifypaths))
- print "shell notified"
+ logmsg('Shell notified')
requests = Queue.Queue(0)
_abort_request = r';:;:; Quit ;:;:;' # any invalid path would do
@@ -62,7 +67,7 @@ batch = []
r = requests.get()
if r == _abort_request:
- print 'Updater thread quiting'
+ logmsg('Updater thread quiting')
return
print "got request %s (first in batch)" % r
batch.append(r)
|
Loading...