Ticket #307: gtkui_preference_toggle_updates.patch

File gtkui_preference_toggle_updates.patch, 6.8 KB (added by sadrul, 16 years ago)
  • deluge/ui/gtkui/preferences.py

    Makes the filechooser buttons [in]sensitive depending on the state of
    the corresponding checkbuttons in the preference dialog. Does the same
    check for the 'Stop seeding' setting too.
    
     
    599599        except:
    600600            return
    601601
    602         # Disable the focus dialog checkbox if the show dialog isn't active.       
    603         if widget == self.glade.get_widget("chk_show_dialog"):
    604             self.glade.get_widget("chk_focus_dialog").set_sensitive(value)
    605            
    606         # Disable the port spinners if random ports is selected.
    607         if widget == self.glade.get_widget("chk_random_port"):
    608             log.debug("chk_random_port set to: %s", value)
    609             self.glade.get_widget("spin_port_min").set_sensitive(not value)
    610             self.glade.get_widget("spin_port_max").set_sensitive(not value)
    611        
    612         # Disable all the tray options if tray is not used.
    613         if widget == self.glade.get_widget("chk_use_tray"):
    614             self.glade.get_widget("chk_min_on_close").set_sensitive(value)
    615             self.glade.get_widget("chk_start_in_tray").set_sensitive(value)
    616             self.glade.get_widget("chk_lock_tray").set_sensitive(value)
    617             if value == True:
    618                 lock = self.glade.get_widget("chk_lock_tray").get_active()
    619                 self.glade.get_widget("txt_tray_password").set_sensitive(lock)
    620                 self.glade.get_widget("password_label").set_sensitive(lock)
    621             else:
    622                 self.glade.get_widget("txt_tray_password").set_sensitive(value)
    623                 self.glade.get_widget("password_label").set_sensitive(value)
    624            
    625         if widget == self.glade.get_widget("chk_lock_tray"):
    626             self.glade.get_widget("txt_tray_password").set_sensitive(value)
    627             self.glade.get_widget("password_label").set_sensitive(value)
    628                        
    629         # Disable the file manager combo box if custom is selected.
    630         if widget == self.glade.get_widget("radio_open_folder_custom"):
    631             self.glade.get_widget("combo_file_manager").set_sensitive(not value)
    632             self.glade.get_widget("txt_open_folder_location").set_sensitive(
    633                                                                         value)
    634            
     602        dependents = {
     603                "chk_show_dialog": {"chk_focus_dialog": True},
     604                "chk_random_port": {"spin_port_min": False,
     605                                    "spin_port_max": False},
     606                "chk_use_tray": {"chk_min_on_close": True,
     607                                 "chk_start_in_tray": True,
     608                                 "chk_lock_tray": True},
     609                "chk_lock_tray": {"txt_tray_password": True,
     610                                  "password_label": True},
     611                "radio_open_folder_custom": {"combo_file_manager": False,
     612                                             "txt_open_folder_location": True},
     613                "chk_move_completed" : {"move_completed_path_button" : True},
     614                "chk_copy_torrent_file" : {"torrent_files_button" : True},
     615                "chk_autoadd" : {"folder_autoadd" : True},
     616                "chk_seed_ratio" : {"spin_share_ratio": True,
     617                                    "chk_remove_ratio" : True}
     618            }
     619
     620        def update_dependent_widgets(name, value):
     621            dependency = dependents[name]
     622            for dep in dependency.keys():
     623                depwidget = self.glade.get_widget(dep)
     624                sensitive = [not value, value][dependency[dep]]
     625                depwidget.set_sensitive(sensitive)
     626                if dep in dependents:
     627                    update_dependent_widgets(dep, depwidget.get_active() and sensitive)
     628
     629        for key in dependents.keys():
     630            if widget != self.glade.get_widget(key):
     631                continue
     632            update_dependent_widgets(key, value)
     633
    635634    def on_button_ok_clicked(self, data):
    636635        log.debug("on_button_ok_clicked")
    637636        self.set_config()
  • deluge/ui/gtkui/glade/preferences_dialog.glade

     
    229229                                                <property name="label" translatable="yes">Move completed to:</property>
    230230                                                <property name="response_id">0</property>
    231231                                                <property name="draw_indicator">True</property>
     232                                                <signal name="toggled" handler="on_toggle"/>
    232233                                              </widget>
    233234                                              <packing>
    234235                                                <property name="expand">False</property>
     
    304305                                            <property name="label" translatable="yes">Save copy of .torrent file:</property>
    305306                                            <property name="response_id">0</property>
    306307                                            <property name="draw_indicator">True</property>
     308                                            <signal name="toggled" handler="on_toggle"/>
    307309                                          </widget>
    308310                                          <packing>
    309311                                            <property name="expand">False</property>
     
    377379                                            <property name="label" translatable="yes">Enable Folder:</property>
    378380                                            <property name="response_id">0</property>
    379381                                            <property name="draw_indicator">True</property>
     382                                            <signal name="toggled" handler="on_toggle"/>
    380383                                          </widget>
    381384                                          <packing>
    382385                                            <property name="expand">False</property>
     
    24562459                                                    <property name="label" translatable="yes">Stop seeding when share ratio reaches:</property>
    24572460                                                    <property name="response_id">0</property>
    24582461                                                    <property name="draw_indicator">True</property>
     2462                                                    <signal name="toggled" handler="on_toggle"/>
    24592463                                                  </widget>
    24602464                                                  <packing>
    24612465                                                    <property name="expand">False</property>