home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / serpentine / plugins / plugrhythmbox.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  3.9 KB  |  81 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. import gtk
  5. import os.path as os
  6. import weakref
  7. from xml.xpath import Evaluate
  8. from xml.dom import minidom
  9. from gettext import gettext as _
  10. if __name__ == '__main__':
  11.     import sys
  12.     basedir = os.path.join(os.path.join(os.path.dirname(__file__), '..'), '..')
  13.     sys.path.insert(0, basedir)
  14.  
  15. from serpentine import gtkutil
  16. PLAYLISTS = os.path.join(os.path.expanduser('~'), '.gnome2', 'rhythmbox', 'playlists.xml')
  17.  
  18. def rhythmbox_list_names():
  19.     root = minidom.parse(PLAYLISTS)
  20.     
  21.     getvalue = lambda node: node.attributes['name'].value
  22.     return map(getvalue, Evaluate('/rhythmdb-playlists/playlist', root))
  23.  
  24.  
  25. def rhythmbox_get_playlist(playlist_name):
  26.     root = minidom.parse(PLAYLISTS)
  27.     path = "/rhythmdb-playlists/playlist[@name = '%s']/location/text()" % playlist_name
  28.     
  29.     getvalue = lambda node: node.nodeValue
  30.     return map(getvalue, Evaluate(path, root))
  31.  
  32.  
  33. class RhythmboxListener(object):
  34.     
  35.     def __init__(self, app):
  36.         self._app = weakref.ref(app)
  37.  
  38.     app = property((lambda self: self._app()))
  39.     
  40.     def on_clicked(self, menu):
  41.         playlists = rhythmbox_list_names()
  42.         if len(playlists) == 0:
  43.             gtkutil.dialog_warn(_('No Rhythmbox playlist found'), _('Please create a playlist using <i>Music→Playlist→New Playlist...</i>'), parent = self.app.window_widget)
  44.             return None
  45.         
  46.         (indexes, response) = gtkutil.choice_dialog(_('Which playlist do you choose to open?'), _('These are the playlists created on Rhythmbox.'), one_item_text = _('Do you want to open the playlist <i>%s</i>?'), list_title = _('Rhythmbox playlists:'), items = playlists, parent = self.app.window_widget, min_select = 1, max_select = 1, ok_button = gtk.STOCK_OPEN)
  47.         if response == gtk.RESPONSE_OK:
  48.             self.app.music_list.clear()
  49.             files = rhythmbox_get_playlist(playlists[indexes[0]])
  50.             self.app.add_files(files).start()
  51.         
  52.  
  53.  
  54.  
  55. def create_plugin(app):
  56.     if not hasattr(app, 'window_widget'):
  57.         return None
  58.     
  59.     window = app.window_widget
  60.     theme = gtk.icon_theme_get_default()
  61.     rhyt = gtk.ImageMenuItem(_('Open Rhythmbox Playlist...'))
  62.     if theme.has_icon('rhythmbox'):
  63.         img = gtk.image_new_from_icon_name('rhythmbox', gtk.ICON_SIZE_MENU)
  64.         img.show()
  65.         rhyt.set_image(img)
  66.     
  67.     rhyt.show()
  68.     listener = RhythmboxListener(app)
  69.     rhyt.connect('activate', listener.on_clicked)
  70.     file_menu = gtkutil.find_child_widget(window, 'file_menu')
  71.     file_menu.add(rhyt)
  72.     file_menu.reorder_child(rhyt, 4)
  73.  
  74. if __name__ == '__main__':
  75.     import sys
  76.     if len(sys.argv) != 2:
  77.         print rhythmbox_list_names()
  78.     else:
  79.         print rhythmbox_get_playlist(sys.argv[1])
  80.  
  81.