Changeset 81ade04935a6…
Parent 27dfffc12c15…
by
Changes to 8 files · Browse files at 81ade04935a6 Showing diff from parent 27dfffc12c15 Diff from another changeset...
@@ -457,7 +457,7 @@ try:
hglib.hgcmd_toq(q, *args)
except (util.Abort, error.LookupError), e:
- self.stbar.set_status_text(_('Abort: %s') % str(e))
+ self.stbar.set_text(_('Abort: %s') % str(e))
thread = thread2.Thread(target=threadfunc, args=args)
thread.start()
@@ -516,7 +516,7 @@ iter = model.get_iter(path)
self.currev = model[iter][GCOL_REVID]
self.curpath = hglib.fromutf(model[iter][GCOL_PATH])
- self.stbar.set_status_text(hglib.toutf(model[iter][GCOL_DESC]))
+ self.stbar.set_text(model[iter][GCOL_DESC])
def close_current_page(self):
num = self.notebook.get_current_page()
@@ -759,7 +759,7 @@ try:
hglib.hgcmd_toq(q, *args)
except (util.Abort, error.LookupError), e:
- self.stbar.set_status_text(_('Abort: %s') % str(e))
+ self.stbar.set_text(_('Abort: %s') % str(e))
(frame, treeview, origpath, graphview) = objs
q = Queue.Queue()
@@ -839,7 +839,7 @@ anniter = model.get_iter(path)
self.currev = model[anniter][ACOL_REVID]
self.path = model.path
- self.stbar.set_status_text(model[anniter][ACOL_DESC])
+ self.stbar.set_text(model[anniter][ACOL_DESC])
def ann_button_release(self, widget, event, objs):
if event.button == 3 and not (event.state & (gtk.gdk.SHIFT_MASK |
|
@@ -271,7 +271,7 @@ thread = thread2.Thread(target=self.search_thread, args=(q, tgts))
thread.start()
self.stbar.begin()
- self.stbar.set_status_text(_('finding source of ') + ', '.join(tgts))
+ self.stbar.set_text(_('finding source of ') + ', '.join(tgts))
gobject.timeout_add(50, self.search_wait, thread, q)
def search_thread(self, q, tgts):
|
@@ -1086,7 +1086,7 @@ else:
filtertext = '%s: %s' % (filterprefix, nomergestext)
- self.stbar.set_right2_text(filtertext)
+ self.stbar.set_text(filtertext, name='filter')
# refresh MQ widget if exists
if hasattr(self, 'mqwidget'):
@@ -1102,7 +1102,7 @@ if ncount > 0:
idle_text = _("Patch '%s' applied") % \
self.mqwidget.get_qtip_patchname()
- self.stbar.set_right3_text(status_text)
+ self.stbar.set_text(status_text, name='mq')
self.stbar.set_idle_text(idle_text)
# Remember options to next time reload_log is called
@@ -1289,8 +1289,13 @@ def get_body(self):
self.connect('delete-event', self.delete)
self.gorev_dialog = None
+ self.limit = self.get_graphlimit(None)
+
+ # prepare statusbar
self.stbar = statusbar.StatusBar()
- self.limit = self.get_graphlimit(None)
+ self.stbar.append_field('mq')
+ self.stbar.append_field('filter')
+ self.stbar.append_field('rev')
# Allocate TreeView instance to use internally
limit = self.limit
|
@@ -269,7 +269,7 @@ revision_text = _('%(count)d of %(total)d Revisions') % {
'count': len(self.model),
'total': len(self.repo) }
- self.pbar.set_right1_text(revision_text)
+ self.pbar.set_text(revision_text, name='rev')
return False
def do_get_property(self, property):
@@ -379,7 +379,7 @@ gobject.idle_add(self.populate, self.currevid)
else:
self.treeview.set_model(None)
- self.pbar.set_status_text(_('Repository is empty'))
+ self.pbar.set_text(_('Repository is empty'))
def construct_treeview(self):
self.treeview = gtk.TreeView()
|
@@ -176,7 +176,7 @@ self.hgthread = hgthread.HgThread(cmdline, postfunc)
self.hgthread.start()
self.stbar.begin()
- self.stbar.set_status_text('hg ' + ' '.join(cmdline))
+ self.stbar.set_text('hg ' + ' '.join(cmdline))
def _cmd_running(self):
if self.hgthread and self.hgthread.isAlive():
|
@@ -781,7 +781,7 @@ self.ready = True
self.update_check_count()
self.stbar.end()
- self.stbar.set_status_text(self.status_error)
+ self.stbar.set_text(self.status_error)
return False
self.repo = self.newrepo
self.ui = self.repo.ui
|
|
@@ -10,77 +10,113 @@ import gobject
from tortoisehg.util.i18n import _
+from tortoisehg.hgtk import gtklib
+
+ALIGN_MAP = { gtk.JUSTIFY_LEFT: 0,
+ gtk.JUSTIFY_CENTER: 0.5,
+ gtk.JUSTIFY_RIGHT: 1}
class StatusBar(gtk.HBox):
def __init__(self, extra=None):
gtk.HBox.__init__(self)
+
+ self.fields = {}
+ self.boxes = {}
+
self.idle_text = None
- self.started = False
+ self.timeout_id = None
+
+ self.append_field('status', expand=True, sep=False)
self.pbar = gtk.ProgressBar()
- self.sttext = gtk.Label("")
- self.sttext.set_alignment(0, 0.5)
+ self.pbar.set_no_show_all(True)
+ self.append_widget(self.pbar, pack=gtk.PACK_START)
- self.pbox = gtk.HBox()
- self.pbox.pack_start(gtk.VSeparator(), False, False)
- self.pbox.pack_start(self.pbar, False, False)
+ gtklib.idle_add_single_call(self.after_init)
- self.pack_start(self.sttext, padding=4)
- if extra:
- self.pack_end(extra, False, False)
- self.right1_label = gtk.Label()
- self.pack_end(self.right1_label, False, False, padding=20)
- self.pack_end(self.pbox, False, False, padding=1)
- self.pbox.set_child_visible(False)
- self.right2_label = gtk.Label()
- self.pack_end(self.right2_label, False, False, padding=5)
- self.right3_label = gtk.Label()
- self.pack_end(self.right3_label, False, False, padding=20)
- self.show_all()
-
- def _pulse_timer(self, now=False):
- self.pbar.pulse()
- return True
+ ### public methods ###
def begin(self, msg=_('Running...'), timeout=100):
- self.pbox.set_child_visible(True)
- self.pbox.map()
- self.set_status_text(msg)
- self.started = True
- self._timeout_event = gobject.timeout_add(timeout, self._pulse_timer)
+ self.set_text(msg)
+ self.pbar.map()
+ self.pbar.show_all()
+ self.timeout_id = gobject.timeout_add(timeout, self.pulse_timer)
def end(self, msg=None, unmap=True):
- self.started = False
- gobject.source_remove(self._timeout_event)
+ gobject.source_remove(self.timeout_id)
+ self.timeout_id = None
- t = ''
+ text = ''
if msg:
- t = msg
+ text = msg
elif self.idle_text:
- t = self.idle_text
- self.set_status_text(t)
+ text = self.idle_text
+ self.set_text(text)
if unmap:
- self.pbox.unmap()
+ self.pbar.unmap()
else:
self.pbar.set_fraction(1.0)
- def set_status_text(self, msg):
- self.sttext.set_text(str(msg))
+ def set_text(self, msg, name='status'):
+ try:
+ label, box = self.fields[name], self.boxes[name]
+ except KeyError:
+ raise _('unknown field name: %s') % name
+
+ if not msg and not name == 'status':
+ label.set_text('')
+ box.hide_all()
+ box.unmap()
+ box.set_no_show_all(True)
+ return
+
+ label.set_text(msg)
+ if box.get_no_show_all():
+ box.set_no_show_all(False)
+ box.map()
+ box.show_all()
def set_idle_text(self, msg):
self.idle_text = msg
- if msg and not self.started:
- self.set_status_text(msg)
+ if msg and self.timeout_id is None:
+ self.set_text(msg, name='status')
- def set_right1_text(self, msg):
- self.right1_label.set_text(str(msg))
+ def append_widget(self, widget, expand=False, pack=gtk.PACK_START):
+ if pack == gtk.PACK_START:
+ packfunc = self.pack_start
+ elif pack == gtk.PACK_END:
+ packfunc = self.pack_end
+ else:
+ raise _('invalid pack direction: %s') % pack
+ packfunc(widget, expand, expand, 2)
- def set_right2_text(self, msg):
- self.right2_label.set_text(str(msg))
+ def append_field(self, name, expand=False, pack=gtk.PACK_START,
+ align=gtk.JUSTIFY_LEFT, sep=True):
+ label = gtk.Label()
+ try:
+ label.set_alignment(ALIGN_MAP[align], 0.5)
+ except KeyError:
+ raise _('invalid alignment value: %s') % align
- def set_right3_text(self, msg):
- self.right3_label.set_text(str(msg))
+ box = gtk.HBox()
+ if sep:
+ box.pack_start(gtk.VSeparator(), False, False, 2)
+ box.pack_start(label, expand, expand, 2)
+ self.append_widget(box, expand, pack)
+ box.set_no_show_all(True)
+
+ self.fields[name] = label
+ self.boxes[name] = box
def set_pulse_step(self, val):
self.pbar.set_pulse_step(val)
+
+ ### signal handlers ###
+
+ def after_init(self, *args):
+ self.pbar.set_no_show_all(False)
+
+ def pulse_timer(self, now=False):
+ self.pbar.pulse()
+ return True
|
@@ -564,7 +564,7 @@ self.hgthread = hgthread.HgThread(cmdline, parent=self)
self.hgthread.start()
self.stbar.begin()
- self.stbar.set_status_text('hg ' + ' '.join(cmd))
+ self.stbar.set_text('hg ' + ' '.join(cmd))
self.add_src_to_recent(remote_path)
|
Loading...