Index: channels/configwin.py ================================================================== --- channels/configwin.py +++ channels/configwin.py @@ -123,47 +123,48 @@ # else: # ls[name] = plugin_meta(module=name) for name,meta in sorted(ls.items(), key=lambda e: e[1]["type"]+e[1]["title"].lower(), reverse=False): if not name in conf.plugins: conf.plugins[name] = False - self.add_plg(name, meta) - + add_ = self.add_channels if meta.get("type") == "channel" else self.add_features + self.add_plg(name, meta, add_) + pass # add configuration setting definitions from plugins plugin_text = "%s "\ + "(%s/%s) "\ + "%s\n"\ + "%s" - def add_plg(self, name, meta): + def add_plg(self, name, meta, add_): # add plugin load entry cb = gtk.CheckButton(name) cb.set_sensitive(not meta.get("priority") in ("core", "required", "builtin")) cb.get_children()[0].set_markup(self.plugin_text % (meta.get("title", name), meta.get("type", "plugin"), meta.get("category", "addon"), meta.get("version", "./."), meta.get("description", "no description"))) cb.set_tooltip_text(re.sub("(?<=\S) *\n(?! *\n)", " ",meta.get("doc", "")).strip()) - self.add_( "config_plugins_"+name, cb, color=meta.get("color"), image=meta.get("png")) + add_( "config_plugins_"+name, cb, color=meta.get("color"), image=meta.get("png")) # default values are already in conf[] dict (now done in conf.add_plugin_defaults) for opt in meta["config"]: color = opt.get("color", None) # display checkbox if opt["type"] == "boolean": cb = gtk.CheckButton(opt["description"]) - self.add_( "config_"+opt["name"], cb, color=color ) + add_( "config_"+opt["name"], cb, color=color ) # drop down list elif opt["type"] == "select": cb = ComboBoxText(ComboBoxText.parse_options(opt["select"])) # custom uikit widget - self.add_( "config_"+opt["name"], cb, opt["description"], color ) + add_( "config_"+opt["name"], cb, opt["description"], color ) # text entry else: - self.add_( "config_"+opt["name"], gtk.Entry(), opt["description"], color ) + add_( "config_"+opt["name"], gtk.Entry(), opt["description"], color ) # spacer - self.add_( "filler_pl_"+name, gtk.HSeparator() ) + add_( "filler_pl_"+name, gtk.HSeparator() ) - # Put config widgets into config dialog notebook, wrap with label, or background, retain widget id/name - def add_(self, id=None, w=None, label=None, color=None, image=None): + # Wrap entries/checkboxes with extra label, background, images, etc. + def wrap_entry(self, id, w, label, color, image): if id: self.widgets[id] = w if label: if type(w) is gtk.Entry: w.set_width_chars(11) @@ -172,15 +173,23 @@ pix = gtk.image_new_from_pixbuf(uikit.pixbuf(image)) if pix: w = uikit.hbox(w, pix, exr=False) if color: w = uikit.bg(w, color) - self.plugin_options.pack_start(w) - + return w + + # Put config widgets into channels/features configwin notebooks + def add_channels(self, id=None, w=None, label=None, color=None, image=None): + self.plugin_options.pack_start(self.wrap_entry(id, w, label, color, image)) + + # Separate tab for non-channel plugins + def add_features(self, id=None, w=None, label=None, color=None, image=None): + self.feature_options.pack_start(self.wrap_entry(id, w, label, color, image)) + # save config def save(self, widget): self.save_config(conf.__dict__, "config_") self.save_config(conf.plugins, "config_plugins_") [callback() for callback in self.hooks["config_save"]] conf.save(nice=1) self.hide() Index: gtk3.xml.gz ================================================================== --- gtk3.xml.gz +++ gtk3.xml.gz cannot compute difference between binary files