From 25b7ee99bd976ad59be1b631c92ac1e45b514d60 Mon Sep 17 00:00:00 2001 From: bjschuma Date: Sat, 27 Jun 2009 23:57:42 +0000 Subject: [PATCH] Pulsing progress bar when adding songs to library git-svn-id: file:///home/anna/Desktop/ocarina-legacy/mithos/ocarina@31 1daee41c-8060-4895-b1f0-2197c00d777a --- trunk/src/GuiObjects/libView.py | 47 ++++++++++++++++++++++++++------- trunk/src/library.py | 8 +++--- trunk/src/window.py | 24 ++++++++++------- 3 files changed, 57 insertions(+), 22 deletions(-) diff --git a/trunk/src/GuiObjects/libView.py b/trunk/src/GuiObjects/libView.py index 0f01c5bd..fdd2e5e6 100644 --- a/trunk/src/GuiObjects/libView.py +++ b/trunk/src/GuiObjects/libView.py @@ -4,15 +4,33 @@ pygtk.require('2.0') import gtk -class LibView(gtk.ScrolledWindow): +#class LibView(gtk.ScrolledWindow): +class LibView(gtk.VBox): def __init__(self,library): - gtk.ScrolledWindow.__init__(self) + #gtk.ScrolledWindow.__init__(self) + gtk.VBox.__init__(self,False,0) + self.win = gtk.ScrolledWindow() + self.win.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) self.library = library + self.treeview = None + self.col = None + self.pbar = gtk.ProgressBar() + self.pack_start(self.win) + self.pack_start(self.pbar,False,False,0) self.update() + self.win.show() # Use to update the library pane def update(self): + rval = self.library.scanning + #if self.library.count == 0: + # return False + if self.treeview: + self.win.remove(self.treeview) + self.treeview.remove_column(self.col) + self.pbar.pulse() + self.pbar.set_text("Found "+str(self.library.count)+" files.") tree = gtk.TreeStore(str) for artist in self.library.artAlb.keys(): ariter = tree.append(None,[artist]) @@ -20,12 +38,21 @@ class LibView(gtk.ScrolledWindow): aliter = tree.append(ariter,[album]) for track in self.library.albTrk[album]: tree.append(aliter,[track]) - treeview = gtk.TreeView(tree) - col = gtk.TreeViewColumn('Library') - treeview.append_column(col) + self.treeview = gtk.TreeView(tree) + self.col = gtk.TreeViewColumn('Library') + self.treeview.append_column(self.col) cell = gtk.CellRendererText() - col.pack_start(cell,True) - col.add_attribute(cell,'text',0) - treeview.set_rules_hint(True) - treeview.show() - self.add(treeview) + self.col.pack_start(cell,True) + self.col.add_attribute(cell,'text',0) + self.col.set_sort_column_id(0) + self.treeview.set_rules_hint(True) + self.treeview.show() + self.win.add(self.treeview) + if rval==False: + self.pbar.hide() + return rval + + + def updates(self): + self.pbar.show() + gobject.timeout_add(500,self.update) diff --git a/trunk/src/library.py b/trunk/src/library.py index 055ebb2b..0609ed1d 100644 --- a/trunk/src/library.py +++ b/trunk/src/library.py @@ -34,9 +34,11 @@ class Library: def scan(self,thread,dir): #self.data = LibData() #self.data.path = os.path.expanduser(dir) - + self.scanning = True self.files = [] self.count = 0 + self.artAlb = dict() + self.albTrk = dict() self.path = os.path.expanduser(dir) if os.path.exists(self.path) == False: @@ -44,7 +46,7 @@ class Library: print "Directory not found: %s" % dir return print "Scanning: "+self.path - self.scanning = True + #self.scanning = True self.traverse("") self.scanning = False #num = len(self.data.files) @@ -87,7 +89,7 @@ class Library: info.filename = os.path.join(self.path,file) self.files += [info.filename] info.count = 0 - split = file.rsplit(os.sep) + split = info.filename.rsplit(os.sep) max = 3 if len(split) < 3: max = len(split) diff --git a/trunk/src/window.py b/trunk/src/window.py index e577ccd6..c0146438 100644 --- a/trunk/src/window.py +++ b/trunk/src/window.py @@ -273,6 +273,7 @@ class Window(gtk.Window): # This is the dropdown selections # Make a new library option newLib = MenuItem("New Library",self.selectDir,"ScanLib",self.data.library.scan,None) + #update = MenuItem("Update",self.libview.update,"Update",None,None) library = MenuItem("Library",None,None,None,[newLib]) bar.append(library) @@ -296,10 +297,15 @@ class Window(gtk.Window): if response == gtk.RESPONSE_OK: file = dirsel.get_filename() dirsel.hide() - dirsel.destroy() - dirsel = None - #thread.start_new_thread(func,(data,file)) - func(data,file) + if response != gtk.RESPONSE_OK: + return + #dirsel.destroy() + #dirsel = None + self.libview.updates() + thread.start_new_thread(func,(data,file)) + #self.libview.updates() + #func(data,file) + #self.libview.update() def makeContentPane(self): @@ -309,13 +315,13 @@ class Window(gtk.Window): self.contentPane.add(self.divider) self.divider.show() - libview = LibView(self.data.library) - libview.show() - self.divider.add1(libview) + self.libview = LibView(self.data.library) + self.libview.show() + self.divider.add1(self.libview) tracks = gtk.TreeStore(str) - for file in self.data.library.files: - tracks.append(None,[file.title]) + #for file in self.data.library.files: + # tracks.append(None,[file.title]) trackview = gtk.TreeView(tracks) title = gtk.TreeViewColumn('filename')