merge
authorTK Soh <teekaysoh@yahoo.com>
Wed, 07 May 2008 12:14:49 +0100
changeset 1162 32d5795057b1
parent 1154 4d6880646a66 (current diff)
parent 1161 fa4bb5ff5dee (diff)
child 1163 8d798c2c60b3
merge
hggtk/tracelog.py
--- a/hggtk/__init__.py	Sun May 04 23:20:27 2008 -0500
+++ b/hggtk/__init__.py	Wed May 07 12:14:49 2008 +0100
@@ -4,4 +4,6 @@
 
 # Default icon for apps which do not set one
 from shlib import get_tortoise_icon
-gtk.window_set_default_icon_from_file(get_tortoise_icon("hg.ico"))
+icon = get_tortoise_icon("hg.ico")
+if icon:
+    gtk.window_set_default_icon_from_file(icon)
--- a/hggtk/gdialog.py	Sun May 04 23:20:27 2008 -0500
+++ b/hggtk/gdialog.py	Wed May 07 12:14:49 2008 +0100
@@ -30,6 +30,7 @@
 from shlib import shell_notify, set_tortoise_icon, Settings
 from thgconfig import ConfigDialog
 from gtklib import MessageDialog
+from hglib import toutf
 
 
 class SimpleMessage(MessageDialog):
@@ -43,8 +44,8 @@
     def __init__(self, title, message, parent):
         SimpleMessage.__init__(self, parent, gtk.DIALOG_MODAL,
                 gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE)
-        self.set_title(title)
-        self.set_markup('<b>' + message + '</b>')
+        self.set_title(toutf(title))
+        self.set_markup('<b>' + toutf(message) + '</b>')
 
 class Confirm(SimpleMessage):
     """Dialog returns gtk.RESPONSE_YES or gtk.RESPONSE_NO 
@@ -52,18 +53,18 @@
     def __init__(self, title, files, parent, primary=None):
         SimpleMessage.__init__(self, parent, gtk.DIALOG_MODAL,
                 gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO)
-        self.set_title('Confirm ' + title)
+        self.set_title(toutf('Confirm ' + title))
         if primary is None:
             primary = title + ' file' + ((len(files) > 1 and 's') or '') + '?'
         primary = '<b>' + primary + '</b>'
-        self.set_markup(primary)
+        self.set_markup(toutf(primary))
         message = ''
         for i, file in enumerate(files):
             message += '   ' + file + '\n'
             if i == 9: 
                 message += '   ...\n'
                 break
-        self.format_secondary_text(message)
+        self.format_secondary_text(toutf(message))
 
 
 class GDialog(gtk.Window):
--- a/hggtk/hgcmd.py	Sun May 04 23:20:27 2008 -0500
+++ b/hggtk/hgcmd.py	Wed May 07 12:14:49 2008 +0100
@@ -50,7 +50,7 @@
             hbox = gtk.HBox()
             
             self.status_text = gtk.Label()
-            self.status_text.set_text(" ".join(cmdline).replace("\n", " "))
+            self.status_text.set_text(toutf(" ".join(cmdline).replace("\n", " ")))
             self.status_text.set_alignment(0, 0.5)
             self.status_text.set_ellipsize(pango.ELLIPSIZE_END)
             hbox.pack_start(self.status_text, True, True, 3)
--- a/hggtk/history.py	Sun May 04 23:20:27 2008 -0500
+++ b/hggtk/history.py	Wed May 07 12:14:49 2008 +0100
@@ -281,8 +281,11 @@
             self.opts['no_merges'] = True
             self.graphview.refresh(False, [], self.opts)
         elif self._filter == "tagged":
-            tagged = [hex(r) for t, r in self.repo.tagslist()]
-            tagged.reverse()
+            tagged = []
+            for t, r in self.repo.tagslist():
+                hr = hex(r)
+                if hr not in tagged:
+                    tagged.insert(0, hr)
             self.opts['revs'] = tagged
             self.graphview.refresh(False, [], self.opts)
         elif self._filter == "parents":
--- a/hggtk/tracelog.py	Sun May 04 23:20:27 2008 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-#
-# A PyGtk-based Python Trace Collector window
-#
-# Copyright (C) 2007 TK Soh <teekaysoh@gmail.com>
-#
-
-import pygtk
-pygtk.require("2.0")
-import gtk
-import gobject
-import pango
-import threading
-import Queue
-import win32trace
-
-from hglib import toutf
-
-class TraceLog():
-    def __init__(self):
-        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
-        self.window.set_title("Python Trace Collector")
-        
-        # construct window
-        self.window.set_default_size(700, 400)
-        self.main_area = gtk.VBox()
-        self.window.add(self.main_area)
-        
-        # mimic standard dialog widgets
-        self.action_area = gtk.HBox()
-        self.main_area.pack_end(self.action_area, False, False, 5)
-        sep = gtk.HSeparator()
-        self.main_area.pack_end(sep, False, False, 0)
-        self.vbox = gtk.VBox()
-        self.main_area.pack_end(self.vbox)        
-        
-        # add python trace ouput window
-        scrolledwindow = gtk.ScrolledWindow()
-        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        self.textview = gtk.TextView(buffer=None)
-        self.textview.set_editable(False)
-        self.textview.modify_font(pango.FontDescription("Monospace"))
-        scrolledwindow.add(self.textview)
-        self.textview.set_editable(False)
-        self.textbuffer = self.textview.get_buffer()
-        self.vbox.pack_start(scrolledwindow, True, True)
-        self.vbox.show_all()
-
-        # add buttons
-        self._button_quit = gtk.Button("Quit")
-        self._button_quit.connect('clicked', self._on_ok_clicked)
-        self.action_area.pack_end(self._button_quit, False, False, 5)        
-
-        self._button_clear = gtk.Button("Clear")
-        self._button_clear.connect('clicked', self._on_clear_clicked)
-        self.action_area.pack_end(self._button_clear, False, False, 5)
-
-        # add assorted window event handlers
-        self.window.connect('map_event', self._on_window_map_event)
-        self.window.connect('delete_event', self._on_window_close_clicked)
-
-    def _on_ok_clicked(self, button):
-        self._stop_read_thread()
-        gtk.main_quit()
-        
-    def _on_clear_clicked(self, button):
-        self.write("", False)
-        
-    def _on_window_close_clicked(self, event, param):
-        self._stop_read_thread()
-        gtk.main_quit()
-        
-    def _on_window_map_event(self, event, param):
-        self._begin_trace()
-    
-    def _begin_trace(self):
-        self.queue = Queue.Queue()
-        win32trace.InitRead()
-        self.write("Collecting Python Trace Output...\n")
-        gobject.timeout_add(10, self._process_queue)
-        self._start_read_thread()
-        
-    def _start_read_thread(self):
-        self._read_trace = True
-        self.thread1 = threading.Thread(target=self._do_read_trace)
-        self.thread1.start()
-
-    def _stop_read_thread(self):
-        self._read_trace = False
-
-        # wait for worker thread to to fix Unhandled exception in thread
-        self.thread1.join() 
-        
-    def _process_queue(self):
-        """
-        Handle all the messages currently in the queue (if any).
-        """
-        while self.queue.qsize():
-            try:
-                msg = self.queue.get(0)
-                self.write(msg)
-            except Queue.Empty:
-                pass
-                
-        return True
-        
-    def _do_read_trace(self):
-        """
-        print buffer collected in win32trace
-        """
-        while self._read_trace:
-            msg = win32trace.read()
-            if msg:
-                self.queue.put(msg)
-        
-    def write(self, msg, append=True):
-        msg = toutf(msg)
-        if append:
-            enditer = self.textbuffer.get_end_iter()
-            self.textbuffer.insert(enditer, msg)
-        else:
-            self.textbuffer.set_text(msg)
-
-    def main(self):
-        self.window.show_all()
-        gtk.main()
-        
-def run():
-    dlg = TraceLog()
-    dlg.main()
-    
-if __name__ == "__main__":
-    run()
-
--- a/setup.py	Sun May 04 23:20:27 2008 -0500
+++ b/setup.py	Wed May 07 12:14:49 2008 +0100
@@ -49,7 +49,7 @@
     extra['windows'] = [
             {"script":"hgproc.py",
                         "icon_resources": [(1, "icons/tortoise/hg.ico")]},
-            {"script":"hggtk/tracelog.py",
+            {"script":"tracelog.py",
                         "icon_resources": [(1, "icons/tortoise/python.ico")]}
             ]
     extra['com_server'] = ["tortoisehg"]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tracelog.py	Wed May 07 12:14:49 2008 +0100
@@ -0,0 +1,139 @@
+#
+# A PyGtk-based Python Trace Collector window
+#
+# Copyright (C) 2007 TK Soh <teekaysoh@gmail.com>
+#
+
+import pygtk
+pygtk.require("2.0")
+import gtk
+import gobject
+import pango
+import threading
+import Queue
+import win32trace
+
+try:
+    from hggtk.hglib import toutf
+except ImportError:
+    import locale
+    _encoding = locale.getpreferredencoding()
+    def toutf(s):
+        return s.decode(_encoding, 'replace').encode('utf-8')
+
+class TraceLog():
+    def __init__(self):
+        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        self.window.set_title("Python Trace Collector")
+        
+        # construct window
+        self.window.set_default_size(700, 400)
+        self.main_area = gtk.VBox()
+        self.window.add(self.main_area)
+        
+        # mimic standard dialog widgets
+        self.action_area = gtk.HBox()
+        self.main_area.pack_end(self.action_area, False, False, 5)
+        sep = gtk.HSeparator()
+        self.main_area.pack_end(sep, False, False, 0)
+        self.vbox = gtk.VBox()
+        self.main_area.pack_end(self.vbox)        
+        
+        # add python trace ouput window
+        scrolledwindow = gtk.ScrolledWindow()
+        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        self.textview = gtk.TextView(buffer=None)
+        self.textview.set_editable(False)
+        self.textview.modify_font(pango.FontDescription("Monospace"))
+        scrolledwindow.add(self.textview)
+        self.textview.set_editable(False)
+        self.textbuffer = self.textview.get_buffer()
+        self.vbox.pack_start(scrolledwindow, True, True)
+        self.vbox.show_all()
+
+        # add buttons
+        self._button_quit = gtk.Button("Quit")
+        self._button_quit.connect('clicked', self._on_ok_clicked)
+        self.action_area.pack_end(self._button_quit, False, False, 5)        
+
+        self._button_clear = gtk.Button("Clear")
+        self._button_clear.connect('clicked', self._on_clear_clicked)
+        self.action_area.pack_end(self._button_clear, False, False, 5)
+
+        # add assorted window event handlers
+        self.window.connect('map_event', self._on_window_map_event)
+        self.window.connect('delete_event', self._on_window_close_clicked)
+
+    def _on_ok_clicked(self, button):
+        self._stop_read_thread()
+        gtk.main_quit()
+        
+    def _on_clear_clicked(self, button):
+        self.write("", False)
+        
+    def _on_window_close_clicked(self, event, param):
+        self._stop_read_thread()
+        gtk.main_quit()
+        
+    def _on_window_map_event(self, event, param):
+        self._begin_trace()
+    
+    def _begin_trace(self):
+        self.queue = Queue.Queue()
+        win32trace.InitRead()
+        self.write("Collecting Python Trace Output...\n")
+        gobject.timeout_add(10, self._process_queue)
+        self._start_read_thread()
+        
+    def _start_read_thread(self):
+        self._read_trace = True
+        self.thread1 = threading.Thread(target=self._do_read_trace)
+        self.thread1.start()
+
+    def _stop_read_thread(self):
+        self._read_trace = False
+
+        # wait for worker thread to to fix Unhandled exception in thread
+        self.thread1.join() 
+        
+    def _process_queue(self):
+        """
+        Handle all the messages currently in the queue (if any).
+        """
+        while self.queue.qsize():
+            try:
+                msg = self.queue.get(0)
+                self.write(msg)
+            except Queue.Empty:
+                pass
+                
+        return True
+        
+    def _do_read_trace(self):
+        """
+        print buffer collected in win32trace
+        """
+        while self._read_trace:
+            msg = win32trace.read()
+            if msg:
+                self.queue.put(msg)
+        
+    def write(self, msg, append=True):
+        msg = toutf(msg)
+        if append:
+            enditer = self.textbuffer.get_end_iter()
+            self.textbuffer.insert(enditer, msg)
+        else:
+            self.textbuffer.set_text(msg)
+
+    def main(self):
+        self.window.show_all()
+        gtk.main()
+        
+def run():
+    dlg = TraceLog()
+    dlg.main()
+    
+if __name__ == "__main__":
+    run()
+