Check-in [5f8afee363]
Overview
Comment: | Make configwin construction slightly more readable, use new pluginconf functions. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
5f8afee363949efe4e0642d3efa0bbc4 |
User & Date: | mario on 2015-05-04 15:22:34 |
Other Links: | manifest | tags |
Context
2015-05-04
| ||
15:23 | Moved dependency() into pluginconf module, which shortens adding new installable modules to the vbox. check-in: 686c553354 user: mario tags: trunk | |
15:22 | Make configwin construction slightly more readable, use new pluginconf functions. check-in: 5f8afee363 user: mario tags: trunk | |
15:21 | Split pluginconf from config module. check-in: 0d6acc5aef user: mario tags: trunk | |
Changes
Modified channels/configwin.py from [227cef2658] to [2e64bb2fe7].
︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # general settings, and plugin activaiton and # their options. from uikit import * import channels from config import * import re # Settings window # # Interacts with main.* window (gtkBuilder widgets) # and conf.* dictionary. | > | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # general settings, and plugin activaiton and # their options. from uikit import * import channels from config import * from pluginconf import all_plugin_meta import re # Settings window # # Interacts with main.* window (gtkBuilder widgets) # and conf.* dictionary. |
︙ | ︙ | |||
111 112 113 114 115 116 117 | else: return gtk.STOCK_NEW # iterate over channel and feature plugins def add_plugins(self): | < < < < < < < | | | | | | > > | > | < < < | | > > | > | > | | | > > > > > > | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | else: return gtk.STOCK_NEW # iterate over channel and feature plugins def add_plugins(self): ls = all_plugin_meta() 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 add_ = self.add_channels if meta.get("type") == "channel" else self.add_features self.add_plg(name, meta, add_) pass # Description text plugin_text = "<span size='larger' weight='heavy'>{title}</span> "\ + "<span style='italic' foreground='slate blue'>({type}/{category})</span> "\ + "<span weight='bold' foreground='#777777'>{version}</span>\n"\ + "<span size='smaller' stretch='ultraexpanded'>{description}</span>" # Add [x] plugin setting, and its configuration definitions, set defaults from conf.* def add_plg(self, name, meta, add_): # Plugin enable button cb = gtk.CheckButton(name) cb.set_sensitive(not meta.get("priority") in ("core", "required", "builtin")) cb.get_children()[0].set_markup(self.plugin_text.format(**meta)) cb.set_tooltip_text(self._tooltip(meta)) add_( "config_plugins_"+name, cb, color=meta.get("color"), image=meta.get("png"), align=0) # 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"] in ("bool", "boolean"): cb = gtk.CheckButton(opt["description"]) add_( "config_"+opt["name"], cb, color=color ) # drop down list elif opt["type"] in ("select", "choose", "options"): cb = ComboBoxText(ComboBoxText.parse_options(opt["select"])) # custom uikit widget add_( "config_"+opt["name"], cb, opt["description"], color ) # text entry else: add_( "config_"+opt["name"], gtk.Entry(), opt["description"], color ) # Spacer between plugins add_( None, gtk.HSeparator() ) # Reformat `doc` linebreaks for gtk.tooltip def _tooltip(self, meta): doc = meta.get("doc", "").strip() if ver < 3: doc = re.sub("(?<=\S) *\n(?! *\n)", " ", doc) return doc # Put config widgets into channels/features configwin notebooks def add_channels(self, id=None, w=None, label=None, color=None, image=None, align=20): self.plugin_options.pack_start(uikit.wrap(self.widgets, id, w, label, color, image, align)) # Separate tab for non-channel plugins def add_features(self, id=None, w=None, label=None, color=None, image=None, align=20): self.feature_options.pack_start(uikit.wrap(self.widgets, id, w, label, color, image, align)) # 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() |