home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / xbmc-9.11.exe / scripts / AppleMovieTrailers / resources / lib / settings.py < prev    next >
Encoding:
Python Source  |  2008-09-14  |  19.4 KB  |  390 lines

  1. """
  2. Settings module
  3.  
  4. Nuka1195
  5. """
  6.  
  7. import sys
  8. import os
  9. import xbmc
  10. import xbmcgui
  11.  
  12. from utilities import *
  13. import chooser
  14.  
  15. _ = sys.modules[ "__main__" ].__language__
  16. __scriptname__ = sys.modules[ "__main__" ].__scriptname__
  17. __version__ = sys.modules[ "__main__" ].__version__
  18. __svn_revision__ = sys.modules[ "__main__" ].__svn_revision__
  19.  
  20.  
  21. class GUI( xbmcgui.WindowXMLDialog ):
  22.     """ Settings module: used for changing settings """
  23.     def __init__( self, *args, **kwargs ):
  24.         xbmcgui.WindowXMLDialog.__init__( self, *args, **kwargs )
  25.         self.genres = kwargs[ "genres" ]
  26.         self.skin = kwargs[ "skin" ]
  27.  
  28.     def onInit( self ):
  29.         xbmcgui.lock()
  30.         self._get_settings()
  31.         self._set_labels()
  32.         self._set_functions()
  33.         self._setup_special()
  34.         self._set_restart_required()
  35.         self._set_controls_values()
  36.         xbmcgui.unlock()
  37.  
  38.     def _get_settings( self, defaults=False ):
  39.         """ reads settings """
  40.         self.settings = Settings().get_settings( defaults=defaults )
  41.  
  42.     def _set_labels( self ):
  43.         try:
  44.             #self.getControl( 20 ).setLabel( __scriptname__ )
  45.             self.getControl( 30 ).setLabel( "%s: %s-%s" % ( _( 1006 ), __version__, __svn_revision__, ) )
  46.             #self.getControl( 250 ).setLabel( _( 250 ) )
  47.             #self.getControl( 251 ).setLabel( _( 251 ) )
  48.             #self.getControl( 252 ).setLabel( _( 252 ) )
  49.             #self.getControl( 253 ).setLabel( _( 253 ) )
  50.             #self.getControl( 254 ).setLabel( _( 254 ) )
  51.             #self.getControl( 255 ).setLabel( _( 255 ) )
  52.             ## setEnabled( False ) if not used
  53.             #self.getControl( 253 ).setVisible( False )
  54.             #self.getControl( 253 ).setEnabled( False )
  55.             #for x in range( 1, len( self.settings ) ):
  56.             #    self.getControl( 200 + x ).setLabel( _( 200 + x ) )
  57.         except: pass
  58.  
  59.     def _set_functions( self ):
  60.         self.functions = {}
  61.         self.functions[ 250 ] = self._save_settings
  62.         self.functions[ 251 ] = self._close_dialog
  63.         self.functions[ 252 ] = self._update_script
  64.         self.functions[ 253 ] = self._show_credits
  65.         self.functions[ 254 ] = self._install_plugin
  66.         self.functions[ 255 ] = self._get_defaults
  67.         for x in range( 1, len( self.settings ) ):
  68.             self.functions[ 200 + x ] = eval( "self._change_setting%d" % x )
  69.  
  70. ##### Special defs, script dependent, remember to call them from _setup_special #################
  71.     
  72.     def _setup_special( self ):
  73.         """ calls any special defs """
  74.         self._setup_startup_categories()
  75.         self._setup_thumbnail_display()
  76.         self._setup_playback_mode()
  77.         self._setup_trailer_quality()
  78.         self._setup_skins()
  79.         self._setup_videoplayer()
  80.         self._setup_showtimes_scrapers()
  81.         self._setup_plugins()
  82.  
  83.     def _setup_startup_categories( self ):
  84.         self.startup_categories = {}
  85.         self.startup_titles = []
  86.         for count, genre in enumerate( self.genres ):
  87.             self.startup_categories[ count ] = genre.title.replace( "Newest", _( 150 ) ).replace( "Exclusives", _( 151 ) )
  88.         self.startup_categories[ FAVORITES ] = _( 152 )
  89.         self.startup_categories[ DOWNLOADED ] = _( 153 )
  90.         self.startup_categories[ HD_TRAILERS ] = _( 160 )
  91.         self.startup_categories[ NO_TRAILER_URLS ] = _( 161 )
  92.         self.startup_categories[ CUSTOM_SEARCH ] = _( 162 )
  93.         self.startup_categories[ WATCHED ] = _( 163 )
  94.         self.startup_categories[ RECENTLY_ADDED ] = _( 164 )
  95.         self.startup_categories[ MULTIPLE_TRAILERS ] = _( 165 )
  96.         for title in self.startup_categories.values():
  97.             self.startup_titles += [ title ]
  98.         self.startup_titles.sort()
  99.  
  100.     def _setup_thumbnail_display( self ):
  101.         self.thumbnail = ( _( 2050 ), _( 2051 ), _( 2052 ), )
  102.         
  103.     def _setup_playback_mode( self ):
  104.         self.mode = ( _( 2030 ), _( 2031 ), "%s (%s)" % ( _( 2032 ), _( 84 ), ), "%s (%s)" % ( _( 2032 ), _( 86 ), ), )
  105.     
  106.     def _setup_trailer_quality( self ):
  107.         self.quality = ( _( 2020 ), _( 2021 ), _( 2022 ), "480p", "720p", "1080p" )
  108.  
  109.     def _setup_skins( self ):
  110.         """ special def for setting up skin choices """
  111.         self.skins = os.listdir( os.path.join( BASE_RESOURCE_PATH, "skins" ) )
  112.         try: self.current_skin = self.skins.index( self.settings[ "skin" ] )
  113.         except: self.current_skin = 0
  114.  
  115.     def _setup_showtimes_scrapers( self ):
  116.         """ special def for setting up scraper choices """
  117.         self.showtimes_scrapers = os.listdir( os.path.join( BASE_RESOURCE_PATH, "showtimes_scrapers" ) )
  118.         try: self.current_showtimes_scraper = self.showtimes_scrapers.index( self.settings[ "showtimes_scraper" ] )
  119.         except: self.current_showtimes_scraper = 0
  120.  
  121.     def _setup_plugins( self ):
  122.         """ special def for setting up plugin installation choices """
  123.         self.plugins = os.listdir( os.path.join( BASE_RESOURCE_PATH, "plugins" ) )
  124.         self.plugins.sort()
  125.         self.plugins += [ _( 799 ) ]
  126.  
  127.     def _setup_videoplayer( self ):
  128.         self.videoplayer_displayresolutions = ( "1080i 16x9", "720p 16x9", "480p 4x3", "480p 16x9", "NTSC 4x3", "NTSC 16x9", "PAL 4x3", "PAL 16x9", "PAL60 4x3", "PAL60 16x9", _( 2110 ) )
  129.  
  130.     def _set_restart_required( self ):
  131.         """ copies self.settings and adds any settings that require a restart on change """
  132.         self.settings_original = self.settings.copy()
  133.         self.settings_restart = ( "skin", "showtimes_scraper" )
  134.         self.settings_refresh = ( "thumbnail_display", "fade_thumb", )
  135.  
  136. ###### End of Special defs #####################################################
  137.     def _get_chooser( self, choices, descriptions, original, selection, list_control, title ):
  138.         force_fallback = self.skin != "Default"
  139.         ch = chooser.GUI( "script-%s-chooser.xml" % ( __scriptname__.replace( " ", "_" ), ), os.getcwd(), self.skin, force_fallback, choices=choices, descriptions=descriptions, original=original, selection=selection, list_control=list_control, title=title )
  140.         selection = ch.selection
  141.         del ch
  142.         return selection
  143.  
  144.     def _get_setting_from_category( self, category ):
  145.         for key, value in self.startup_categories.items():
  146.             if ( value == self.startup_titles[ category ] ):
  147.                 return key
  148.         return 0
  149.  
  150.     def _get_category_from_setting( self, setting ):
  151.         for count, value in enumerate( self.startup_titles ):
  152.             if ( value == self.startup_categories[ setting ] ):
  153.                 return count
  154.         return 0
  155.  
  156.     def _set_controls_values( self ):
  157.         """ sets the value labels """
  158.         xbmcgui.lock()
  159.         try:
  160.             self.getControl( 201 ).setLabel( self.getControl( 201 ).getLabel(), label2=self.settings[ "skin" ] )
  161.             self.getControl( 202 ).setLabel( self.getControl( 202 ).getLabel(), label2=self.quality[ self.settings[ "trailer_quality" ] ] )
  162.             self.getControl( 203 ).setLabel( self.getControl( 203 ).getLabel(), label2=self.mode[ self.settings[ "mode" ] ] )
  163.             self.getControl( 204 ).setLabel( self.getControl( 204 ).getLabel(), label2=self.settings[ "save_folder" ] )
  164.             self.getControl( 204 ).setEnabled( self.settings[ "mode" ] >= 1 )
  165.             #self.getControl( 205 ).setLabel( _( 205 ) )
  166.             self.getControl( 205 ).setSelected( self.settings[ "auto_play_all" ] )
  167.             self.getControl( 206 ).setLabel( self.getControl( 206 ).getLabel(), label2=self.thumbnail[ self.settings[ "thumbnail_display" ] ] )
  168.             #self.getControl( 207 ).setLabel( _( 207 ) )
  169.             self.getControl( 207 ).setSelected( self.settings[ "fade_thumb" ] )
  170.             self.getControl( 207 ).setEnabled( self.settings[ "thumbnail_display" ] == 0 )
  171.             self.getControl( 208 ).setLabel( self.getControl( 208 ).getLabel(), label2=self.startup_categories[ self.settings[ "startup_category_id" ] ] )
  172.             self.getControl( 209 ).setLabel( self.getControl( 209 ).getLabel(), label2=self.startup_categories[ self.settings[ "shortcut1" ] ] )
  173.             self.getControl( 210 ).setLabel( self.getControl( 210 ).getLabel(), label2=self.startup_categories[ self.settings[ "shortcut2" ] ] )
  174.             self.getControl( 211 ).setLabel( self.getControl( 211 ).getLabel(), label2=self.startup_categories[ self.settings[ "shortcut3" ] ] )
  175.             #self.getControl( 212 ).setLabel( _( 212 ) )
  176.             self.getControl( 212 ).setSelected( self.settings[ "refresh_newest" ] )
  177.             #self.getControl( 213 ).setLabel( _( 213 ) )
  178.             self.getControl( 213 ).setSelected( self.settings[ "use_simple_search" ] )
  179.             #self.getControl( 214 ).setLabel( _( 214 ) )
  180.             self.getControl( 214 ).setSelected( self.settings[ "match_whole_words" ] )
  181.             self.getControl( 214 ).setEnabled( self.settings[ "use_simple_search" ] )
  182.             self.getControl( 215 ).setLabel( self.getControl( 215 ).getLabel(), label2=self.videoplayer_displayresolutions[ self.settings[ "videoplayer_displayresolution" ] ] )
  183.             self.getControl( 216 ).setLabel( self.getControl( 216 ).getLabel(), label2= self.settings[ "showtimes_local" ] )
  184.             self.getControl( 217 ).setLabel( self.getControl( 217 ).getLabel(), label2=self.settings[ "showtimes_scraper" ] )
  185.             #self.getControl( 218 ).setLabel( _( 218 ) )
  186.             self.getControl( 218 ).setSelected( self.settings[ "refresh_trailers" ] )
  187.             self.getControl( 250 ).setEnabled( self.settings_original != self.settings )
  188.         except:
  189.             pass
  190.         xbmcgui.unlock()
  191.  
  192.     def _change_setting1( self ):
  193.         """ changes settings #1 """
  194.         try: original_selection = self.skins.index( self.settings_original[ "skin" ] )
  195.         except: original_selection = 0
  196.         selection = self._get_chooser( self.skins, [ "" for x in range( len( self.skins ) ) ], original_selection, self.current_skin, 0, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  197.         if ( selection is not None ):
  198.             self.current_skin = selection
  199.             self.settings[ "skin" ] = self.skins[ self.current_skin ]
  200.             self._set_controls_values()
  201.  
  202.     def _change_setting2( self ):
  203.         """ changes settings #2 """
  204.         selection = self._get_chooser( self.quality, [ "" for x in range( len( self.quality ) ) ], self.settings_original[ "trailer_quality" ], self.settings[ "trailer_quality" ], 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  205.         if ( selection is not None ):
  206.             self.settings[ "trailer_quality" ] = selection
  207.             self._set_controls_values()
  208.  
  209.     def _change_setting3( self ):
  210.         """ changes settings #3 """
  211.         selection = self._get_chooser( self.mode, [ "" for x in range( len( self.mode ) ) ], self.settings_original[ "mode" ], self.settings[ "mode" ], 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  212.         if ( selection is not None ):
  213.             self.settings[ "mode" ] = selection
  214.             self._set_controls_values()
  215.  
  216.     def _change_setting4( self ):
  217.         """ changes settings #4 """
  218.         shares = [ "video", "files" ][ self.settings[ "mode" ] == 3 ]
  219.         self.settings[ "save_folder" ] = get_browse_dialog( self.settings[ "save_folder" ], _( self.controlId ), 3, shares )
  220.         self._set_controls_values()
  221.  
  222.     def _change_setting5( self ):
  223.         """ changes settings #5 """
  224.         self.settings[ "auto_play_all" ] = not self.settings[ "auto_play_all" ]
  225.         self._set_controls_values()
  226.  
  227.     def _change_setting6( self ):
  228.         """ changes settings #6 """
  229.         selection = self._get_chooser( self.thumbnail, [ "" for x in range( len( self.thumbnail ) ) ], self.settings_original[ "thumbnail_display" ], self.settings[ "thumbnail_display" ], 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  230.         if ( selection is not None ):
  231.             self.settings[ "thumbnail_display" ] = selection
  232.             self._set_controls_values()
  233.  
  234.     def _change_setting7( self ):
  235.         """ changes settings #7 """
  236.         self.settings[ "fade_thumb" ] = not self.settings[ "fade_thumb" ]
  237.         self._set_controls_values()
  238.     
  239.     def _change_setting8( self ):
  240.         """ changes settings #8 """
  241.         selection = self._get_category_from_setting( self.settings[ "startup_category_id" ] )
  242.         original_selection = self._get_category_from_setting( self.settings_original[ "startup_category_id" ] )
  243.         selection = self._get_chooser( self.startup_titles, [ "" for x in range( len( self.startup_titles ) ) ], original_selection, selection, 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  244.         if ( selection is not None ):
  245.             self.settings[ "startup_category_id" ] = self._get_setting_from_category( selection )
  246.             self._set_controls_values()
  247.  
  248.     def _change_setting9( self ):
  249.         """ changes settings #9 """
  250.         selection = self._get_category_from_setting( self.settings[ "shortcut1" ] )
  251.         original_selection = self._get_category_from_setting( self.settings_original[ "shortcut1" ] )
  252.         selection = self._get_chooser( self.startup_titles, [ "" for x in range( len( self.startup_titles ) ) ], original_selection, selection, 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  253.         if ( selection is not None ):
  254.             self.settings[ "shortcut1" ] = self._get_setting_from_category( selection )
  255.             self._set_controls_values()
  256.  
  257.     def _change_setting10( self ):
  258.         """ changes settings #10 """
  259.         selection = self._get_category_from_setting( self.settings[ "shortcut2" ] )
  260.         original_selection = self._get_category_from_setting( self.settings_original[ "shortcut2" ] )
  261.         selection = self._get_chooser( self.startup_titles, [ "" for x in range( len( self.startup_titles ) ) ], original_selection, selection, 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  262.         if ( selection is not None ):
  263.             self.settings[ "shortcut2" ] = self._get_setting_from_category( selection )
  264.             self._set_controls_values()
  265.  
  266.     def _change_setting11( self ):
  267.         """ changes settings #11 """
  268.         selection = self._get_category_from_setting( self.settings[ "shortcut3" ] )
  269.         original_selection = self._get_category_from_setting( self.settings_original[ "shortcut3" ] )
  270.         selection = self._get_chooser( self.startup_titles, [ "" for x in range( len( self.startup_titles ) ) ], original_selection, selection, 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  271.         if ( selection is not None ):
  272.             self.settings[ "shortcut3" ] = self._get_setting_from_category( selection )
  273.             self._set_controls_values()
  274.  
  275.     def _change_setting12( self ):
  276.         """ changes settings #12 """
  277.         self.settings[ "refresh_newest" ] = not self.settings[ "refresh_newest" ]
  278.         self._set_controls_values()
  279.  
  280.     def _change_setting13( self ):
  281.         """ changes settings #13 """
  282.         self.settings[ "use_simple_search" ] = not self.settings[ "use_simple_search" ]
  283.         self._set_controls_values()
  284.  
  285.     def _change_setting14( self ):
  286.         """ changes settings #14 """
  287.         self.settings[ "match_whole_words" ] = not self.settings[ "match_whole_words" ]
  288.         self._set_controls_values()
  289.  
  290.     def _change_setting15( self ):
  291.         """ changes settings #15 """
  292.         selection = self._get_chooser( self.videoplayer_displayresolutions, [ "" for x in range( len( self.videoplayer_displayresolutions ) ) ], self.settings_original[ "videoplayer_displayresolution" ], self.settings[ "videoplayer_displayresolution" ], 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  293.         if ( selection is not None ):
  294.             self.settings[ "videoplayer_displayresolution" ] = selection
  295.             self._set_controls_values()
  296.  
  297.     def _change_setting16( self ):
  298.         """ changes settings #16 """
  299.         self.settings[ "showtimes_local" ] = get_keyboard( self.settings[ "showtimes_local" ], _( self.controlId ) )
  300.         self._set_controls_values()
  301.  
  302.     def _change_setting17( self ):
  303.         """ changes settings #17 """
  304.         try: original_selection = self.showtimes_scrapers.index( self.settings_original[ "showtimes_scraper" ] )
  305.         except: original_selection = 0
  306.         selection = self._get_chooser( self.showtimes_scrapers, [ "" for x in range( len( self.showtimes_scrapers ) ) ], original_selection, self.current_showtimes_scraper, 1, "%s %s" % ( _( 200 ), _( self.controlId ), ) )
  307.         if ( selection is not None ):
  308.             self.current_showtimes_scraper = selection
  309.             self.settings[ "showtimes_scraper" ] = self.showtimes_scrapers[ self.current_showtimes_scraper ]
  310.             self._set_controls_values()
  311.  
  312.     def _change_setting18( self ):
  313.         """ changes settings #18 """
  314.         self.settings[ "refresh_trailers" ] = not self.settings[ "refresh_trailers" ]
  315.         self._set_controls_values()
  316.  
  317.     def _install_plugin( self ):
  318.         descriptions = [ _( x ) for x in range( 700, 700 + len( self.plugins ) - 1 ) ]
  319.         descriptions += [ _( 755 ) ]
  320.         selection = self._get_chooser( self.plugins, descriptions, -1, 0, 0, "%s %s" % ( _( 200 ), _( 713 ), ) )
  321.         if ( selection is not None ):
  322.             if ( selection == len( self.plugins ) - 1 ):
  323.                 first = 0
  324.                 last = selection
  325.             else:
  326.                 first = selection
  327.                 last = selection + 1
  328.             install_plugin( range( first, last ) )
  329.  
  330. ##### End of unique defs ######################################################
  331.     
  332.     def _save_settings( self ):
  333.         """ saves settings """
  334.         ok = Settings().save_settings( self.settings )
  335.         if ( not ok ):
  336.             ok = xbmcgui.Dialog().ok( __scriptname__, _( 230 ) )
  337.         else:
  338.             self._check_for_restart()
  339.  
  340.     def _check_for_restart( self ):
  341.         """ checks for any changes that require a restart to take effect """
  342.         restart = False
  343.         refresh = False
  344.         for setting in self.settings_restart:
  345.             if ( self.settings_original[ setting ] != self.settings[ setting ] ):
  346.                 restart = True
  347.                 break
  348.         for setting in self.settings_refresh:
  349.             if ( self.settings_original[ setting ] != self.settings[ setting ] ):
  350.                 refresh = True
  351.                 break
  352.         self._close_dialog( True, restart, refresh )
  353.     
  354.     def _update_script( self ):
  355.         """ checks for updates to the script """
  356.         import update
  357.         updt = update.Update()
  358.         del updt
  359.  
  360.     def _show_credits( self ):
  361.         """ shows a credit window """
  362.         import credits
  363.         force_fallback = self.skin != "Default"
  364.         c = credits.GUI( "script-%s-credits.xml" % ( __scriptname__.replace( " ", "_" ), ), os.getcwd(), self.skin, force_fallback )
  365.         del c
  366.  
  367.     def _get_defaults( self ):
  368.         """ resets values to defaults """
  369.         self._get_settings( defaults=True )
  370.         self._set_controls_values()
  371.  
  372.     def _close_dialog( self, changed=False, restart=False, refresh=False ):
  373.         """ closes this dialog window """
  374.         self.changed = changed
  375.         self.restart = restart
  376.         self.refresh = refresh
  377.         self.close()
  378.  
  379.     def onClick( self, controlId ):
  380.         #xbmc.sleep(5)
  381.         self.functions[ controlId ]()
  382.  
  383.     def onFocus( self, controlId ):
  384.         xbmc.sleep( 5 )
  385.         self.controlId = self.getFocusId()
  386.  
  387.     def onAction( self, action ):
  388.         if ( action in ACTION_CANCEL_DIALOG ):
  389.             self._close_dialog()
  390.