Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8, 0.8.1, and 0.8.2

taskbarui: introduce minimalist interface to taskbar app

Just shows an event log, need to hook this up to the updater thread and deal with
all the consequences.

Changeset 3ae08b62533f

Parent a7d8c476ee18

by Steve Borho

Changes to one file · Browse files at 3ae08b62533f Showing diff from parent a7d8c476ee18 Diff from another changeset...

Change 1 of 1 Show Entire File hggtk/​taskbarui.py Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
@@ -0,0 +1,78 @@
+# +# taskbarui.py - User interface for the TortoiseHg taskbar app +# +# Copyright (C) 2009 Steve Borho <steve@borho.org> +# + +import os +import gtk +import gobject + +from thgutil.i18n import _ +from hggtk import gtklib + +class TaskBarUI(gtk.Window): + 'User interface for the TortoiseHg taskbar application' + def __init__(self, inputq): + 'Initialize the Dialog' + gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) + gtklib.set_tortoise_icon(self, 'hg.ico') + gtklib.set_tortoise_keys(self) + + self.set_default_size(400, 120) + self.set_title(_('TortoiseHg Taskbar')) + + vbox = gtk.VBox() + self.add(vbox) + + frame = gtk.Frame(_('Event Log')) + frame.set_border_width(2) + vbox.pack_start(frame, True, True, 2) + + scrolledwindow = gtk.ScrolledWindow() + scrolledwindow.set_shadow_type(gtk.SHADOW_ETCHED_IN) + scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + scrolledwindow.set_border_width(2) + textview = gtk.TextView() + textview.set_editable(False) + scrolledwindow.add(textview) + frame.add(scrolledwindow) + gobject.timeout_add(10, self.pollq, inputq, textview) + + hbbox = gtk.HButtonBox() + hbbox.set_layout(gtk.BUTTONBOX_END) + vbox.pack_start(hbbox, False, False, 2) + close = gtk.Button(_('Close')) + close.connect('clicked', lambda x: self.destroy()) + + accelgroup = gtk.AccelGroup() + self.add_accel_group(accelgroup) + key, modifier = gtk.accelerator_parse('Escape') + close.add_accelerator('clicked', accelgroup, key, 0, + gtk.ACCEL_VISIBLE) + hbbox.add(close) + + def pollq(self, queue, textview): + 'Poll the input queue' + buf = textview.get_buffer() + enditer = buf.get_end_iter() + while queue.qsize(): + try: + msg = queue.get(0) + buf.insert(enditer, msg+'\n') + textview.scroll_to_mark(buf.get_insert(), 0) + except Queue.Empty: + pass + +def run(ui, *pats, **opts): + return TaskBarUI(opts['queue']) + +''' +import Queue +q = Queue.Queue() +q.put('Test1') +q.put('Test2') +from mercurial import ui +from hggtk import hgtk +hgtk.gtkrun(run(ui.ui(), queue=q)) +'''