From 3c68b3b176859549c1b8f4ccaaa542e7959cc542 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Sep 2006 16:43:42 +0000 Subject: show "watch" cursor whenever applicable git-svn-id: file:///home/lennart/svn/public/fring/trunk@6 d0d2c35f-0a1e-0410-abeb-dabff30a67ee --- TODO | 2 +- src/fringlib/fringui.py | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 309e17d..440b2f5 100644 --- a/TODO +++ b/TODO @@ -9,10 +9,10 @@ TODO [x] open parent folder [x] click on folder -> open it +[x] show busy cursor while walking dir tree [ ] always render text on top [ ] make sure that filenames are always visible [ ] do more magic adjustments [ ] clean gui -> renderer interface -[ ] show busy cursor while walking dir tree [ ] do not show black backrgound when app starts up diff --git a/src/fringlib/fringui.py b/src/fringlib/fringui.py index f6e231b..eb5ff42 100644 --- a/src/fringlib/fringui.py +++ b/src/fringlib/fringui.py @@ -56,6 +56,7 @@ ui = """ class UI( gtk.Window ): def __init__(self, path): + self.busy_cursor = 0 self.backgroundColour = (1,1,1) self.data = None self.zoomfactor = 1.0 @@ -69,9 +70,9 @@ class UI( gtk.Window ): # walk directory self.walker.connect("list-changed",self.__list_changed) + self.walker.connect("finished", self.__walker_finished) self.open_folder(path) - def __init_gui(self, path): # create menubar @@ -146,6 +147,8 @@ class UI( gtk.Window ): self.eventbox.connect("size-allocate",self.__on_resize) self.connect("delete_event", self.close) + self.__show_busy_cursor(1) + def open_folder(self,path): print "open",path # change folder by changing the chooser button @@ -177,6 +180,7 @@ class UI( gtk.Window ): def redraw(self,widget=None): # clear the canvas + self.__show_busy_cursor(1) self.ctx.rectangle(0,0,self.width,self.height) self.ctx.set_source_rgb(*self.backgroundColour) self.ctx.fill() @@ -197,6 +201,7 @@ class UI( gtk.Window ): self.renderer.hotspots = [] self.renderer.draw_segment(self.ctx, 0, 0, 1, 0, 1, self.data, self.path) self.image.queue_draw() + self.__show_busy_cursor(-1) def save_image(self, widget=None): d = gtk.FileChooserDialog("Save As...", @@ -206,11 +211,13 @@ class UI( gtk.Window ): r = d.run() if r == 1: #print d.get_uri() + self.__show_busy_cursor(1) pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,True,8,self.width,self.height) pixmap, mask = self.image.get_pixmap() pixbuf.get_from_drawable(pixmap,pixmap.get_colormap(),0,0,0,0,-1,-1) #pixbuf.save(d.get_filename(), "jpeg", {"quality":"100"}) pixbuf.save(d.get_filename(), "png", {}) + self.__show_busy_cursor(-1) d.destroy() #----------------------------------------------------------- private methods @@ -236,6 +243,10 @@ class UI( gtk.Window ): self.__set_path(self.path) def __move_event(self, widget, event): + + if self.busy_cursor > 0: + return + f = self.renderer.get_hotspot_at(event.x, event.y) if f is None: self.eventbox.window.set_cursor(None) #gtk.gdk.Cursor(gtk.gdk.CROSSHAIR)) @@ -266,11 +277,22 @@ class UI( gtk.Window ): self.redraw() #print data.name + def __walker_finished(self, widget, data): + self.__show_busy_cursor(-1) + def __on_resize(self, widget, event): r = self.eventbox.get_allocation() if (r.width,r.height) != (self.width,self.height): self.__create_canvas() self.redraw() + def __show_busy_cursor(self, value): + if self.busy_cursor <= 0 and self.busy_cursor+value >= 0: + self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) + elif self.busy_cursor > 0 and self.busy_cursor+value <= 0: + self.window.set_cursor(None) + + self.busy_cursor += value + -- cgit