From 5df72aab9a1064a1b008c58d5adaf11abe85fcbb Mon Sep 17 00:00:00 2001 From: Frederic Back Date: Wed, 4 Oct 2006 11:18:03 +0000 Subject: * Changed parent button size to SMALL_TOOLBAR * Added progress bar * The progress signal now also emits the path getting parsed * Path in status bar is now relative to current path (shorter) git-svn-id: file:///home/lennart/svn/public/fring/trunk@65 d0d2c35f-0a1e-0410-abeb-dabff30a67ee --- src/fringlib/fringrenderer.py | 2 +- src/fringlib/fringui.py | 33 ++++++++++++++++++++++++++------- src/fringlib/fringwalker.py | 14 ++++++++------ 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/fringlib/fringrenderer.py b/src/fringlib/fringrenderer.py index 2a44f57..63b719b 100644 --- a/src/fringlib/fringrenderer.py +++ b/src/fringlib/fringrenderer.py @@ -82,7 +82,7 @@ class FringRenderer: for entry in data.children: - hasContents = entry.children != None + hasContents = entry.has_children() start = last accumulated += entry.size diff --git a/src/fringlib/fringui.py b/src/fringlib/fringui.py index feb609c..7a59660 100644 --- a/src/fringlib/fringui.py +++ b/src/fringlib/fringui.py @@ -1,5 +1,6 @@ import gtk import cairo +import pango import sys import os @@ -65,9 +66,11 @@ class UI( gtk.Window ): self.__init_gui() # walk directory - self.walker.connect("list-changed",self.__event_walker_progress) + self.walker.connect("list-changed",self.__event_walker_changed) + self.walker.connect("progress",self.__event_walker_progress) self.walker.connect("finished", self.__event_walker_finished) self.walker.connect("manually-stopped", lambda w: self.__show_busy_cursor(-1)) + self.open_folder(uri) def __init_gui(self): @@ -108,7 +111,7 @@ class UI( gtk.Window ): toolbar = gtk.HBox() b = gtk.Button() - img = gtk.image_new_from_stock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_BUTTON) + img = gtk.image_new_from_stock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_SMALL_TOOLBAR) b.set_property("image", img) uimanager.get_action("/MenuBar/FRing/OpenParent").connect_proxy(b) toolbar.pack_start( b, False ) @@ -141,6 +144,14 @@ class UI( gtk.Window ): self.label.set_padding(6, 0) self.label.set_text("") + self.pbar = gtk.ProgressBar() + self.pbar.set_ellipsize(pango.ELLIPSIZE_END) + + self.statbar = gtk.HBox() + #self.statbar.set_has_resize_grip(False) + self.statbar.pack_start(self.label) + self.statbar.pack_start(self.pbar,False,False,0) + # aligh menubar, toolbar and canvas vertically vbox = gtk.VBox(); vbox.pack_start(menubar,False,False) @@ -148,8 +159,8 @@ class UI( gtk.Window ): f = gtk.Frame() f.set_shadow_type(gtk.SHADOW_IN) f.add(self.eventbox) - vbox.pack_start(f) - vbox.pack_start(self.label,False,False,6) + vbox.pack_start(f,True,True,3) + vbox.pack_start(self.statbar,False,False) self.add(vbox) # show everything @@ -312,7 +323,9 @@ class UI( gtk.Window ): self.label.set_text("") if f: - markup = "%s, %s, %0.1f%%" % (format_uri(f.path), pretty_size(f.sumlist.size), f.value*100) + path = format_uri( f.path[ len(self.uri): ] ) + path = path[1:] + markup = "%s, %s, %0.1f%%" % (path, pretty_size(f.sumlist.size), f.value*100) self.label.set_text(markup) if f.sumlist.has_children(): @@ -333,9 +346,15 @@ class UI( gtk.Window ): self.zoom(widget, -0.2) def __event_walker_finished(self, widget, data): - self.__event_walker_progress(widget, data) + self.__event_walker_changed(widget, data) self.__show_busy_cursor(-1) self.scan_active = False + self.pbar.set_text( _("Done") ) + + def __event_walker_progress(self, widget, c, total, uri): + self.pbar.set_sensitive(True) + self.pbar.set_text( _("reading %s")%uri ) + self.pbar.set_fraction( float(c) / float(total) ) def __event_resized(self, widget, event): r = self.eventbox.get_allocation() @@ -350,7 +369,7 @@ class UI( gtk.Window ): def __event_parentbutton_leave(self,widget,event): self.label.set_text("") - def __event_walker_progress(self,widget,data): + def __event_walker_changed(self,widget,data): self.data = data self.redraw() diff --git a/src/fringlib/fringwalker.py b/src/fringlib/fringwalker.py index 1bf5c68..d328627 100644 --- a/src/fringlib/fringwalker.py +++ b/src/fringlib/fringwalker.py @@ -15,7 +15,8 @@ class FringWalker( gobject.GObject ): 'list-changed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), 'finished': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), 'manually-stopped': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, () ), - 'progress': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,gobject.TYPE_INT)), + 'progress': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, + (gobject.TYPE_INT,gobject.TYPE_INT,gobject.TYPE_STRING)), } def __init__(self, sumlistcollection): @@ -35,11 +36,11 @@ class FringWalker( gobject.GObject ): self.thread.stopsignal = True self.thread = None - def _progress_fn(self, walkthread, c, l, r): + def _progress_fn(self, walkthread, c, l, r, currentlyScanning): # only emit if called from the current request if walkthread == self.thread: gtk.gdk.threads_enter() - self.emit("progress", c, l) + self.emit("progress", c, l, currentlyScanning) self.emit("list-changed", r) gtk.gdk.threads_leave() @@ -94,6 +95,7 @@ class WalkThread( threading.Thread ): """ Parse the root directory """ self.result = SumList(self.__uri_tail(self.uri), None, 0) + self.master._progress_fn(self, 0, 1, self.result, self.uri) # write some debug information starttime = time.time() @@ -116,20 +118,20 @@ class WalkThread( threading.Thread ): # emit an intermediate version to fill up the screen while waiting self.result.sort() self.master.collection.set_sumlist(unicode(self.uri),self.result) - self.master._progress_fn(self, 0, len(subdirectories), self.result) # walk the subdirectories c = 0 for directory in subdirectories: c += 1 - self.result.append_child( self.build_tree_gnomevfs(self.uri.append_path(directory)) ) + sub = self.build_tree_gnomevfs(self.uri.append_path(directory)) + self.result.append_child( sub ) if self.stopsignal: return self.result.sort() self.master.collection.set_sumlist(unicode(self.uri),self.result) - self.master._progress_fn(self, c, len(subdirectories), self.result) + self.master._progress_fn(self, c, len(subdirectories), self.result, sub.name) # emit final signal self.master._finished_fn(self,self.result) -- cgit