From 9bb8ecc0a0b7ef00cb92c7a99646df0a60889f49 Mon Sep 17 00:00:00 2001 From: bjschuma Date: Sun, 28 Jun 2009 19:23:51 +0000 Subject: [PATCH] Can populate and save current playlist git-svn-id: file:///home/anna/Desktop/ocarina-legacy/mithos/ocarina@34 1daee41c-8060-4895-b1f0-2197c00d777a --- trunk/Makefile | 2 +- trunk/src/GuiObjects/__init__.py | 2 +- trunk/src/GuiObjects/libView.py | 30 ++++++++++++---------- trunk/src/GuiObjects/plistView.py | 41 +++++++++++++++++++++++++++++++ trunk/src/saveddata.py | 3 +++ trunk/src/window.py | 33 ++++++++++++++----------- 6 files changed, 81 insertions(+), 30 deletions(-) create mode 100644 trunk/src/GuiObjects/plistView.py diff --git a/trunk/Makefile b/trunk/Makefile index d4fb8998..47cf1fcc 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ open: + geany src/GuiObjects/*.py & geany src/*.py & - geany src/GuiObjects/*.py clean: rm -rf src/*.pyo diff --git a/trunk/src/GuiObjects/__init__.py b/trunk/src/GuiObjects/__init__.py index 3ffd5cd5..249786ac 100644 --- a/trunk/src/GuiObjects/__init__.py +++ b/trunk/src/GuiObjects/__init__.py @@ -1,2 +1,2 @@ -__all__ = ['menuItem','libView'] +__all__ = ['menuItem','libView','plistView'] diff --git a/trunk/src/GuiObjects/libView.py b/trunk/src/GuiObjects/libView.py index 4864ab7e..ad916f67 100644 --- a/trunk/src/GuiObjects/libView.py +++ b/trunk/src/GuiObjects/libView.py @@ -8,12 +8,13 @@ from menuItem import MenuItem #class LibView(gtk.ScrolledWindow): class LibView(gtk.VBox): - def __init__(self,library): + def __init__(self,data): #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.data.library = library + self.data = data self.treeview = None self.col = None self.pbar = gtk.ProgressBar() @@ -27,23 +28,23 @@ class LibView(gtk.VBox): # Use to update the library pane def update(self): - rval = self.library.scanning - #if self.library.count == 0: + rval = self.data.library.scanning + #if self.data.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.") + self.pbar.set_text("Found "+str(self.data.library.count)+" files.") tree = gtk.TreeStore(str,int) - for artist in self.library.artAlb.keys(): + for artist in self.data.library.artAlb.keys(): ariter = tree.append(None,[artist.title(),-1]) - for album in self.library.artAlb[artist]: + for album in self.data.library.artAlb[artist]: aliter = tree.append(ariter,[album.title(),-1]) - for track in self.library.albTrk[(artist,album)]: + for track in self.data.library.albTrk[(artist,album)]: #if rval == False: - # print artist,album,self.library.files[track].title - tree.append(aliter,[self.library.files[track].title,self.library.files[track].id]) + # print artist,album,self.data.library.files[track].title + tree.append(aliter,[self.data.library.files[track].title,self.data.library.files[track].id]) self.treeview = gtk.TreeView(tree) self.treeview.connect("button_release_event",self.clicked) self.col = gtk.TreeViewColumn('Library') @@ -64,12 +65,12 @@ class LibView(gtk.VBox): def makeLabel(self): - self.label = gtk.Label(str(self.library.count)+" tracks in collection") + self.label = gtk.Label(str(self.data.library.count)+" tracks in collection") self.label.show() def updateLabel(self): - self.label.set_text(str(self.library.count)+" tracks in collection") + self.label.set_text(str(self.data.library.count)+" tracks in collection") self.label.show() @@ -94,14 +95,17 @@ class LibView(gtk.VBox): def populatePlaylist(self,widgit,func,data): (model,pathlist) = self.selection.get_selected_rows() + self.data.curList = [] for path in pathlist: iter = model.get_iter(path) self.popHelper(model,iter,model.iter_n_children(iter)) + self.data.updateList = True def popHelper(self,model,iter,count): if count == 0: - print model[iter][0],count + #print model[iter][0],count + self.data.curList+=[model[iter][1]] return child = model.iter_children(iter) diff --git a/trunk/src/GuiObjects/plistView.py b/trunk/src/GuiObjects/plistView.py new file mode 100644 index 00000000..40fcb208 --- /dev/null +++ b/trunk/src/GuiObjects/plistView.py @@ -0,0 +1,41 @@ +import gobject +import pygtk +pygtk.require('2.0') +import gtk + + +class PlistView(gtk.ScrolledWindow): + def __init__(self,data): + gtk.ScrolledWindow.__init__(self) + self.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) + self.data = data + self.tree = None + self.makeList() + gobject.timeout_add(1000,self.checkUpdate) + + + def checkUpdate(self): + if self.data.updateList == True: + self.data.updateList = False + self.makeList() + return True + + + def makeList(self): + trackList= gtk.ListStore(int,str,str,str,str) + if self.tree: + self.remove(self.tree) + for index in self.data.curList: + track = self.data.library.files[index] + trackList.append([track.id,track.title,track.artist,track.album,track.length]) + self.tree = gtk.TreeView(trackList) + cell = gtk.CellRendererText() + cols = ["Id","Title","Artist","Album","Length"] + for i in range(len(cols)): + col = gtk.TreeViewColumn(cols[i],cell) + col.add_attribute(cell,'text',i) + col.set_resizable(True) + col.set_sort_column_id(i) + self.tree.append_column(col) + self.tree.show() + self.add(self.tree) diff --git a/trunk/src/saveddata.py b/trunk/src/saveddata.py index 9acbe5da..e2128685 100644 --- a/trunk/src/saveddata.py +++ b/trunk/src/saveddata.py @@ -10,6 +10,8 @@ class SavedData: self.size = (800,600) self.divider = 150 self.library = Library() + self.curList = [] + self.updateList = False self.path = path if os.path.exists(path): @@ -37,3 +39,4 @@ class SavedData: self.size = data.size self.library = data.library self.divider = data.divider + self.curList = data.curList diff --git a/trunk/src/window.py b/trunk/src/window.py index 94ed827e..e12fe624 100644 --- a/trunk/src/window.py +++ b/trunk/src/window.py @@ -8,6 +8,7 @@ from kiwi.ui.objectlist import Column, ObjectList from GuiObjects.menuItem import MenuItem from GuiObjects.libView import LibView +from GuiObjects.plistView import PlistView class Window(gtk.Window): @@ -320,30 +321,32 @@ class Window(gtk.Window): self.contentPane.add(self.divider) self.divider.show() - self.libview = LibView(self.data.library) + self.libview = LibView(self.data) self.libview.show() self.divider.add1(self.libview) rightPane=gtk.VBox(False,0) - tracks = gtk.TreeStore(str) + #tracks = gtk.TreeStore(str) #for file in self.data.library.files: # tracks.append(None,[file.title]) - trackview = gtk.TreeView(tracks) - title = gtk.TreeViewColumn('filename') - trackview.append_column(title) - cell = gtk.CellRendererText() - title.pack_start(cell,True) - title.add_attribute(cell,'text',0) - trackview.set_rules_hint(True) - trackview.show() - trackscroll = gtk.ScrolledWindow() - trackscroll.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) - trackscroll.add(trackview) - trackscroll.show() + #trackview = gtk.TreeView(tracks) + #title = gtk.TreeViewColumn('filename') + #trackview.append_column(title) + #cell = gtk.CellRendererText() + #title.pack_start(cell,True) + #title.add_attribute(cell,'text',0) + #trackview.set_rules_hint(True) + #trackview.show() + #trackscroll = gtk.ScrolledWindow() + #trackscroll.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) + #trackscroll.add(trackview) + #trackscroll.show() #rightPane.pack_start(trackscroll,False,False,0) - rightPane.add(trackscroll) + self.plistview = PlistView(self.data) + self.plistview.show() + rightPane.add(self.plistview) self.makeBottomRow(rightPane) rightPane.show()