@@ -445,6 +445,49 @@ def on_properties_clicked(self, button):
445445 self .on_properties ()
446446
447447
448+ class IntItem :
449+ def __init__ (self , name , value , min_value , max_value ):
450+ super ().__init__ ()
451+
452+ builder = utility .create_gtk_builder (SETTINGS_ITEM_INT_GLADE )
453+ builder .get_object ("lbl_name" ).set_label (_ (name ))
454+ self .spin_value = builder .get_object ("spin_value" )
455+ self .spin_value .set_range (min_value , max_value )
456+ self .spin_value .set_value (value )
457+ self .box = builder .get_object ("box" )
458+
459+ def get_value (self ):
460+ return self .spin_value .get_value ()
461+
462+
463+ class TextItem :
464+ def __init__ (self , name , value ):
465+ super ().__init__ ()
466+
467+ builder = utility .create_gtk_builder (SETTINGS_ITEM_TEXT_GLADE )
468+ builder .get_object ("lbl_name" ).set_label (_ (name ))
469+ self .txt_value = builder .get_object ("txt_value" )
470+ self .txt_value .set_text (value )
471+ self .box = builder .get_object ("box" )
472+
473+ def get_value (self ):
474+ return self .txt_value .get_text ()
475+
476+
477+ class BoolItem :
478+ def __init__ (self , name , value ):
479+ super ().__init__ ()
480+
481+ builder = utility .create_gtk_builder (SETTINGS_ITEM_BOOL_GLADE )
482+ builder .get_object ("lbl_name" ).set_label (_ (name ))
483+ self .switch_value = builder .get_object ("switch_value" )
484+ self .switch_value .set_active (value )
485+ self .box = builder .get_object ("box" )
486+
487+ def get_value (self ):
488+ return self .switch_value .get_active ()
489+
490+
448491class PluginSettingsDialog :
449492 """Builds a settings dialog based on the configuration of a plugin."""
450493
@@ -459,67 +502,33 @@ def __init__(self, parent, config):
459502 self .window .set_title (_ ("Plugin Settings" ))
460503 for setting in config .get ("settings" ):
461504 if setting ["type" ].upper () == "INT" :
462- box = self . __load_int_item (
505+ box = IntItem (
463506 setting ["label" ],
464- setting ["id" ],
465- config ["active_plugin_config" ],
507+ config ["active_plugin_config" ][setting ["id" ]],
466508 setting .get ("min" , 0 ),
467509 setting .get ("max" , 120 ),
468510 )
469511 elif setting ["type" ].upper () == "TEXT" :
470- box = self . __load_text_item (
471- setting ["label" ], setting [ "id" ], config [ "active_plugin_config" ]
512+ box = TextItem (
513+ setting ["label" ], config [ "active_plugin_config" ][ setting [ "id" ] ]
472514 )
473515 elif setting ["type" ].upper () == "BOOL" :
474- box = self . __load_bool_item (
475- setting ["label" ], setting [ "id" ], config [ "active_plugin_config" ]
516+ box = BoolItem (
517+ setting ["label" ], config [ "active_plugin_config" ][ setting [ "id" ] ]
476518 )
477519 else :
478520 continue
479521
480- box_settings .append (box )
522+ self .property_controls .append ({"key" : setting ["id" ], "box" : box })
523+ box_settings .append (box .box )
481524
482525 self .window .connect ("close-request" , self .on_window_delete )
483526
484- def __load_int_item (self , name , key , settings , min_value , max_value ):
485- """Load the UI control for int property."""
486- builder = utility .create_gtk_builder (SETTINGS_ITEM_INT_GLADE )
487- builder .get_object ("lbl_name" ).set_label (_ (name ))
488- spin_value = builder .get_object ("spin_value" )
489- spin_value .set_range (min_value , max_value )
490- spin_value .set_value (settings [key ])
491- box = builder .get_object ("box" )
492- box .set_visible (True )
493- self .property_controls .append ({"key" : key , "value" : spin_value .get_value })
494- return box
495-
496- def __load_text_item (self , name , key , settings ):
497- """Load the UI control for text property."""
498- builder = utility .create_gtk_builder (SETTINGS_ITEM_TEXT_GLADE )
499- builder .get_object ("lbl_name" ).set_label (_ (name ))
500- txt_value = builder .get_object ("txt_value" )
501- txt_value .set_text (settings [key ])
502- box = builder .get_object ("box" )
503- box .set_visible (True )
504- self .property_controls .append ({"key" : key , "value" : txt_value .get_text })
505- return box
506-
507- def __load_bool_item (self , name , key , settings ):
508- """Load the UI control for boolean property."""
509- builder = utility .create_gtk_builder (SETTINGS_ITEM_BOOL_GLADE )
510- builder .get_object ("lbl_name" ).set_label (_ (name ))
511- switch_value = builder .get_object ("switch_value" )
512- switch_value .set_active (settings [key ])
513- box = builder .get_object ("box" )
514- box .set_visible (True )
515- self .property_controls .append ({"key" : key , "value" : switch_value .get_active })
516- return box
517-
518527 def on_window_delete (self , * args ):
519528 """Event handler for Properties dialog close action."""
520529 for property_control in self .property_controls :
521530 self .config ["active_plugin_config" ][property_control ["key" ]] = (
522- property_control ["value" ] ()
531+ property_control ["box" ]. get_value ()
523532 )
524533 self .window .destroy ()
525534
0 commit comments