📄 configuration.py
字号:
elif setting[1] == FontButton: if value == None: value = '' widget = xml.get_widget(setting[2]) widget.set_property('font-name', value) else: logging.debug('key=%s' % key) returndef widgets_to_gconf(config_prefix, config_names, config, xml): """Save settings into gconf database.""" for group, settings in config_names.items(): for keyname, setting in settings.items(): key = '%s/%s/%s' % (config_prefix, group, keyname) if setting[0] == VALUE_STRING: old_value = config.get_string(key) elif setting[0] == VALUE_INT: old_value = config.get_int(key) elif setting[0] == VALUE_BOOL: old_value = config.get_bool(key) else: raise ValueError if setting[1] == Entry: widget = xml.get_widget(setting[2]) new_value = widget.get_text() if setting[0] == VALUE_STRING and old_value != new_value: config.set_string(key, new_value) elif setting[0] == VALUE_INT and old_value != string.atoi(new_value): config.set_int(key, string.atoi(new_value)) elif setting[1] == ComboBoxEntry: widget = xml.get_widget(setting[2]) model = widget.get_model() iter = widget.get_active_iter() new_value = model.get_path(iter) if setting[0] == VALUE_STRING and old_value != new_value: config.set_string(key, new_value.__str__()) else: raise Error() elif setting[1] == CheckButton: widget = xml.get_widget(setting[2]) new_value = widget.get_property('active') if (old_value and not new_value) or (not old_value and new_value): config.set_bool(key, new_value) elif setting[1] == RadioButton: new_value = 0 for widget_name in setting[2]: widget = xml.get_widget(widget_name) if widget.get_property('active'): break new_value = new_value + 1 if old_value != new_value: config.set_int(key, new_value) elif setting[1] == ColorButton: widget = xml.get_widget(setting[2]) color = widget.get_color() new_value = '#%04x%04x%04x' % (color.red, color.green, color.blue) if old_value != new_value: config.set_string(key, new_value) elif setting[1] == FontButton: widget = xml.get_widget(setting[2]) new_value = widget.get_property('font-name') if old_value != new_value: config.set_string(key, new_value) else: logging.debug('key=%s' % key) returndef setup_checkbuttons(gladexml, defines): func = lambda widget, data: data.set_property('sensitive', widget.get_property('active')) for item in defines: widget = gladexml.get_widget(item[0]) for citem in item[1]: cwidget = gladexml.get_widget(citem) widget.connect('toggled', func, cwidget)class ConfigurationDialog(gobject.GObject): __gsignals__ = { 'response' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,)), } CHECKBUTTON_DEFS = ( ('cb_enable_disk_based_logging', ('entry_status_log_filename', 'btn_status_log_filename_browse', 'cb_trim_status_log_file', 'spbtn_status_log_file_size')), ('cb_trim_status_log_file', ('spbtn_status_log_file_size',)), ('cb_send_keep_alive', ('cmb_keep_alive_command', 'spbtn_send_keep_alive_interval')), ('cb_stop_send_keep_alive', ('spbtn_stop_keep_alive_after',)) ) def __init__(self, coralftp, config=None): self.__gobject_init__() self.coralftp = coralftp if config != None: self.__config = config else: self.__config = coralftp.config self.__tree = get_glade_xml('configure_dialog') self.__tree.signal_autoconnect(self) self.__window = self.__tree.get_widget('configure_dialog') setup_checkbuttons(self.__tree, self.CHECKBUTTON_DEFS) gconf_to_widgets(CONFIG_PREFIX, CONFIG_NAMES, self.__config, self.__tree) return def __del__(self): self.__window.destroy() return def on_response(self, obj, resp, *args): if resp in (RESPONSE_APPLY, RESPONSE_OK): widgets_to_gconf(CONFIG_PREFIX, CONFIG_NAMES, self.__config, self.__tree) if resp in (RESPONSE_OK, RESPONSE_CANCEL): self.__window.set_modal(FALSE) self.__window.hide() self.emit('response', resp) return def run(self): self.__window.show() self.__window.set_modal(TRUE) def on_btn_change_color_fonts_clicked(self, obj, *args): def on_change_color_font_response(dlg, resp, *args): if resp in (RESPONSE_OK, RESPONSE_CANCEL): dlg.destroy() return dlg = SetColorsFontsDialog(self.__config) dlg.connect('response', on_change_color_font_response) dlg.run() returngobject.type_register(ConfigurationDialog)class SetColorsFontsDialog(gobject.GObject): __gsignals__ = { 'response' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,)), } CHECKBUTTON_DEFS = ( ('cb_file_listing', ('fbtn_file_listing',)), ('cb_status', ('fbtn_status',)), ('cb_queue', ('fbtn_queue',)) ) def __init__(self, config): self.__gobject_init__() self.__config = config self.__xml = get_glade_xml('set_colors_fonts_dialog') self.__xml.signal_autoconnect(self) setup_checkbuttons(self.__xml, self.CHECKBUTTON_DEFS) self.__window = self.__xml.get_widget('set_colors_fonts_dialog') gconf_to_widgets(CONFIG_PREFIX, COLOR_FONT_CONFIG_NAMES, self.__config, self.__xml) return def on_response(self, obj, resp, *args): if resp in (RESPONSE_APPLY, RESPONSE_OK): widgets_to_gconf(CONFIG_PREFIX, COLOR_FONT_CONFIG_NAMES, self.__config, self.__xml) if resp in (RESPONSE_OK, RESPONSE_CANCEL): self.__window.set_modal(FALSE) self.__window.hide() self.emit('response', resp) return def run(self): self.__window.show() self.__window.set_modal(TRUE) return def destroy(self): self.__window.destroy() returngobject.type_register(SetColorsFontsDialog)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -