[gnome-music/freeze-break: 56/107] rebased on top of current master
- From: Arnel A. Borja <arnelborja src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/freeze-break: 56/107] rebased on top of current master
- Date: Wed, 11 Sep 2013 13:19:05 +0000 (UTC)
commit 6d68d422d57c54bbf4628f785259978d2c88d2c9
Author: Sai <suman sai14 gmail com>
Date: Sun Aug 4 22:18:17 2013 +0530
rebased on top of current master
gnomemusic/playlists.py | 49 +++++++++++++++++++++++++++++++++
gnomemusic/view.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++
gnomemusic/window.py | 2 +-
3 files changed, 118 insertions(+), 1 deletions(-)
---
diff --git a/gnomemusic/playlists.py b/gnomemusic/playlists.py
new file mode 100644
index 0000000..cf2bea7
--- /dev/null
+++ b/gnomemusic/playlists.py
@@ -0,0 +1,49 @@
+from gi.repository import TotemPlParser, GLib, Gio
+
+import os
+
+
+class Playlists:
+ instance = None
+
+ @classmethod
+ def get_default(self):
+ if self.instance:
+ return self.instance
+ else:
+ self.instance = Playlists()
+ return self.instance
+
+ def __init__(self):
+ self.playlist_dir = os.path.join(GLib.get_user_data_dir(),
+ 'gnome-music',
+ 'playlists')
+
+ def create_playlist(self, name, iterlist=None):
+ parser = TotemPlParser.Parser()
+ playlist = TotemPlParser.Playlist()
+ pl_file = Gio.file_new_for_path(self.playlist_dir + name + ".pls")
+ if iterlist is not None:
+ for _iter in iterlist:
+ pass
+ else:
+ _iter = TotemPlParser.PlaylistIter()
+ playlist.append(_iter)
+ parser.save(playlist, pl_file, name, TotemPlParser.ParserType.PLS)
+ return False
+
+ def get_playlists(self):
+ playlist_files = [pl_file for pl_file in os.listdir(self.playlist_dir)
+ if os.path.isfile(os.path.join(self.playlist_dir,
+ pl_file))]
+ playlist_names = []
+ for playlist_file in playlist_files:
+ name, ext = os.path.splitext(playlist_file)
+ playlist_names.append(name)
+ return playlist_names
+
+ def add_to_playlist(self, playlist_name):
+ pass
+
+ def delete_playlist(self, playlist_name):
+ pass
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index b5622c4..001ea49 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -40,12 +40,15 @@ from gi.repository import GLib
from gi.repository import GdkPixbuf
from gi.repository import Tracker
from gi.repository import Gio
+
from gettext import gettext as _
from gnomemusic.grilo import grilo
import gnomemusic.widgets as Widgets
+from gnomemusic.playlists import Playlists
from gnomemusic.query import Query
from gnomemusic.albumArtCache import AlbumArtCache as albumArtCache
tracker = Tracker.SparqlConnection.get(None)
+playlists = Playlists.get_default()
if Gtk.get_minor_version() > 8:
from gi.repository.Gtk import Stack, StackTransitionType
@@ -462,9 +465,74 @@ class Songs(ViewContainer):
class Playlist(ViewContainer):
+ playlists_list = playlists.get_playlists()
+
def __init__(self, header_bar, selection_toolbar, player):
ViewContainer.__init__(self, _("Playlists"), header_bar,
selection_toolbar)
+ self._playlistWidget = Gtk.Frame(
+ shadow_type=Gtk.ShadowType.NONE,
+ hexpand=True
+ )
+ self.add_button = Gtk.Button(label=_("Add"), visible=True)
+ self.view.get_parent().add(self.add_button)
+ self.add_button.show()
+ self._playlist_list = {}
+ self.view.set_view_type(Gd.MainViewType.LIST)
+ self.view.set_hexpand(False)
+ self.view.get_generic_view().get_selection().set_mode(
+ Gtk.SelectionMode.SINGLE)
+ self._grid.attach(Gtk.Separator(orientation=Gtk.Orientation.VERTICAL),
+ 1, 0, 1, 1)
+ self._grid.attach(self._playlistWidget, 2, 0, 2, 2)
+ self._add_list_renderers()
+ if (Gtk.Settings.get_default().get_property(
+ 'gtk_application_prefer_dark_theme')):
+ self.view.get_generic_view().get_style_context().\
+ add_class("artist-panel-dark")
+ else:
+ self.view.get_generic_view().get_style_context().\
+ add_class("artist-panel-white")
+ self.add_button.connect("clicked", self._on_add_button_clicked)
+
+ def _add_list_renderers(self):
+ list_widget = self.view.get_generic_view()
+
+ cols = list_widget.get_columns()
+ cells = cols[0].get_cells()
+ cells[1].set_visible(False)
+ cells[2].set_visible(False)
+ type_renderer = Gd.StyledTextRenderer(
+ xpad=16,
+ ypad=16,
+ ellipsize=Pango.EllipsizeMode.END,
+ xalign=0.0,
+ width=220
+ )
+ list_widget.add_renderer(type_renderer, lambda *args: None, None)
+ cols[0].clear_attributes(type_renderer)
+ cols[0].add_attribute(type_renderer, "text", 2)
+
+ def _populate(self):
+ self._init = True
+ self.populate()
+
+ def _add_item(self, item):
+ _iter = self._model.append()
+ self._playlist_list[item] = {"iter": _iter, "albums": []}
+ self._model.set(_iter, [2], [item])
+
+ def populate(self):
+ for item in self.playlists_list:
+ self._add_item(item)
+
+ def _on_add_button_clicked(self, button):
+ text_renderer = Gtk.CellRendererText()
+ _iter = self._model.append()
+ text_renderer.set_property('editable', True)
+ text_renderer.set_property('editable-set', True)
+ self.view.get_generic_view().add_renderer(text_renderer,
+ lambda *args: None, None)
class Artists (ViewContainer):
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 98fd005..064e8d6 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -117,7 +117,7 @@ class Window(Gtk.ApplicationWindow):
self.views.append(Views.Albums(self.toolbar, self.selection_toolbar, self.player))
self.views.append(Views.Artists(self.toolbar, self.selection_toolbar, self.player))
self.views.append(Views.Songs(self.toolbar, self.selection_toolbar, self.player))
- #self.views.append(Views.Playlist(self.toolbar, self.selection_toolbar, self.player))
+ self.views.append(Views.Playlist(self.toolbar, self.selection_toolbar, self.player))
for i in self.views:
self._stack.add_titled(i, i.title, i.title)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]