summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-09-22 16:43:42 +0000
committerLennart Poettering <lennart@poettering.net>2006-09-22 16:43:42 +0000
commit3c68b3b176859549c1b8f4ccaaa542e7959cc542 (patch)
tree6a17202b544e140450d5531b4e9f794b71b33e05
parent9961a0e3e596551807181c111c0c27351bc44c74 (diff)
show "watch" cursor whenever applicable
git-svn-id: file:///home/lennart/svn/public/fring/trunk@6 d0d2c35f-0a1e-0410-abeb-dabff30a67ee
-rw-r--r--TODO2
-rw-r--r--src/fringlib/fringui.py24
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
+