@@ -17,11 +17,11 @@ # Some feature extensions inject custom subcategories here. For example the # "search" feature adds its own result list here, as does the "timer" plugin. from config import * -from uikit import uikit +from uikit import * from channels import * # The bookmarks tab is a core feature and built into the GtkBuilder @@ -34,40 +34,55 @@ # # It's accessible as `parent.bookmarks` in the ST2 window and elsewhere. # class bookmarks(GenericChannel): - # desc - module = "bookmarks" - title = "bookmarks" - base_url = "file:.config/streamtuner2/bookmarks.json" + # content listformat = "any" - - # content categories = ["favourite", ] # timer, links, search, and links show up as needed - current = "favourite" - default = "favourite" finder_song = { "genre": "Youtube ", "format": "video/youtube", "playing": "current_", "title": "The Finder song", "url": "http://youtube.com/v/omyZy4H8y9M", "homepage": "http://youtu.be/omyZy4H8y9M" } streams = {"favourite":[finder_song], "search":[], "scripts":[], "timer":[], "history":[], } # cache list, to determine if a PLS url is bookmarked urls = [] + drag_types = [ + ("UTF8_STRING", 0, 5), + ("STRING", 0, 5), + ("text/plain", 0, 10), + ("text/uri-list", 0, 11), + ("application/x-scpls", 0, 21), + ("*/*", 0, 22), + ] def gui(self, parent): GenericChannel.gui(self, parent) parent.notebook_channels.set_menu_label_text(parent.v_bookmarks, "bookmarks") + #DND + w = self.gtk_list + #self.gtk_list.drag_source_set_icon_stock("gtk-folder") + w.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, self.drag_types, gtk.gdk.ACTION_DEFAULT|gtk.gdk.ACTION_COPY|gtk.gdk.ACTION_MOVE) + w.enable_model_drag_dest(self.drag_types, gtk.gdk.ACTION_DEFAULT|gtk.gdk.ACTION_COPY) + w.connect('drag_drop', self.drop_cb) + # function to print out the mime type of the drop item + def drop_cb(self, wid, context, x, y, time, *e): + print '\n'.join([str(t) for t in context.targets]) + # What should I put here to get the URL of the link? + context.finish(True, False, time) + return True + # this channel does not actually retrieve/parse data from anywhere def update_categories(self): pass # but category sub-plugins might provide a hook category_plugins = {} def update_streams(self, cat): + if cat in self.category_plugins: return self.category_plugins[cat].update_streams(cat) or [] else: return self.streams.get(cat, [])