home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / rhythmbox / plugins / lyrics / LyricsConfigureDialog.py < prev    next >
Encoding:
Python Source  |  2009-04-07  |  4.5 KB  |  130 lines

  1. # -*- Mode: python; coding: utf-8; tab-width: 8; indent-tabs-mode: t; -*-
  2. #
  3. # Copyright (C) 2007 James Livingston
  4. # Copyright (C) 2007 Sirio Bola√±os Puchet
  5. #
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2, or (at your option)
  9. # any later version.
  10. #
  11. # The Rhythmbox authors hereby grant permission for non-GPL compatible
  12. # GStreamer plugins to be used and distributed together with GStreamer
  13. # and Rhythmbox. This permission is above and beyond the permissions granted
  14. # by the GPL license by which Rhythmbox is covered. If you modify this code
  15. # you may extend this exception to your version of the code, but you are not
  16. # obligated to do so. If you do not wish to do so, delete this exception
  17. # statement from your version.
  18. #
  19. # This program is distributed in the hope that it will be useful,
  20. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  22. # GNU General Public License for more details.
  23. #
  24. # You should have received a copy of the GNU General Public License
  25. # along with this program; if not, write to the Free Software
  26. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
  27.  
  28.  
  29.  
  30. import gobject, gtk, gtk.glade
  31. import gconf
  32. from os import system, path
  33.  
  34. class LyricsConfigureDialog (object):
  35.     def __init__(self, glade_file, gconf_keys):
  36.         self.gconf = gconf.client_get_default()
  37.         self.gconf_keys = gconf_keys
  38.         self.gladexml = gtk.glade.XML(glade_file)
  39.             
  40.         self.dialog = self.gladexml.get_widget("preferences_dialog")
  41.  
  42.         self.toggle1 = self.gladexml.get_widget("engine1")
  43.         self.toggle2 = self.gladexml.get_widget("engine2")
  44.         self.toggle3 = self.gladexml.get_widget("engine3")
  45.         self.toggle4 = self.gladexml.get_widget("engine4")
  46.         self.toggle5 = self.gladexml.get_widget("engine5")
  47.         self.choose_button = self.gladexml.get_widget("choose_button")
  48.         self.path_display = self.gladexml.get_widget("path_display")
  49.  
  50.         self.choose_button.connect("clicked", self.choose_callback)
  51.         self.dialog.connect("response", self.dialog_response)
  52.  
  53.         # set fields from gconf
  54.         engines, self.folder = self.get_prefs()
  55.         if self.folder is None:
  56.             self.folder = '~/.lyrics'
  57.         self.path_display.set_text(self.folder)
  58.         self.toggle1.set_active('astraweb.com' in engines)
  59.         self.toggle2.set_active('lyrc.com.ar' in engines)
  60.         self.toggle3.set_active('leoslyrics.com' in engines)
  61.         self.toggle4.set_active('lyricwiki.org' in engines)
  62.         self.toggle5.set_active('winampcn.com' in engines)
  63.  
  64.     def dialog_response(self, dialog, response):
  65.         if response == gtk.RESPONSE_OK:
  66.             self.set_values()
  67.             self.dialog.hide()
  68.         elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT:
  69.             self.dialog.hide()
  70.         else:
  71.             print "unexpected response type"
  72.  
  73.  
  74.     def set_values(self):
  75.         engines = []
  76.         if self.toggle1.get_active():
  77.             engines.append('astraweb.com')
  78.         if self.toggle2.get_active():
  79.             engines.append('lyrc.com.ar')
  80.         if self.toggle3.get_active():
  81.             engines.append('leoslyrics.com')
  82.         if self.toggle4.get_active():
  83.             engines.append('lyricwiki.org')
  84.         if self.toggle5.get_active():
  85.             engines.append('winampcn.com')
  86.  
  87.         if len(self.path_display.get_text()) is not 0:
  88.             self.folder = self.path_display.get_text()
  89.  
  90.         self.gconf.set_list(self.gconf_keys['engines'], gconf.VALUE_STRING, engines)
  91.         self.gconf.set_string(self.gconf_keys['folder'], self.folder)
  92.  
  93.     def choose_callback(self, widget):
  94.         def response_handler(widget, response):
  95.             if response == gtk.RESPONSE_OK:
  96.                 path = self.chooser.get_filename()
  97.                 self.chooser.destroy()
  98.                 self.path_display.set_text(path)
  99.             else:
  100.                 self.chooser.destroy()
  101.  
  102.         buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE,
  103.                 gtk.STOCK_OK, gtk.RESPONSE_OK)
  104.         self.chooser = gtk.FileChooserDialog(title=_("Choose lyrics folder..."),
  105.                     parent=None,
  106.                     action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
  107.                     buttons=buttons)
  108.         self.chooser.connect("response", response_handler)
  109.         self.chooser.set_modal(True)
  110.         self.chooser.set_transient_for(self.dialog)
  111.         self.chooser.present()
  112.  
  113.     def get_dialog (self):
  114.         return self.dialog
  115.     
  116.     def get_prefs (self):
  117.         try:
  118.             engines = gconf.client_get_default().get_list(self.gconf_keys['engines'], gconf.VALUE_STRING)
  119.             if engines is None:
  120.                 engines = []
  121.         except gobject.GError, e:
  122.             print e
  123.             engines = []
  124.         folder = gconf.client_get_default().get_string(self.gconf_keys['folder'])
  125.  
  126.         print "lyric engines: " + str (engines)
  127.         print "lyric folder: " + folder
  128.         return (engines, folder)
  129.  
  130.