48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| Reads *.py files and crafts a settings dialog from meta data.
Where `plugin_states{}` is usually an entry in `config{}` itself. Depending on plugin
and option names, it might even be a flat/shared namespace for both. Per default you'd
set `files=["plugins/*.py", __file__]` to be read. But with `files=[]` it's possible to
provide a `plugins=pluginconf.get_plugin_meta()` or prepared plugin/options dict instead.
Parameters
----------
config : dict 🔁
Config settings, updated after dialog completion
plugin_states : dict 🔁
Plugin activation states, also input/output
files : list
Glob list of *.py files to extract meta definitions from
plugins : dict
Alternatively to files=[] list, a preparsed list of pluginmeta+config dicts can be injected
opt_label : bool
Show config name= as label
theme : str
Set PSG window theme.
**kwargs : dict
Other options are passed on to PySimpleGUI
Returns
-------
True : if changed config{} values are to be saved (the dict will be updated in any case)
"""
plugins = kwargs.get("plugins", {})
opt_label = kwargs.get("opt_label", False)
theme = kwargs.get("theme", "DefaultNoMoreNagging")
if theme:
if "theme" in kwargs:
del kwargs["theme"]
|
|
|
<
|
<
|
<
|
<
|
<
|
<
|
<
|
|
<
<
<
| 48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| Reads *.py files and crafts a settings dialog from meta data.
Where `plugin_states{}` is usually an entry in `config{}` itself. Depending on plugin
and option names, it might even be a flat/shared namespace for both. Per default you'd
set `files=["plugins/*.py", __file__]` to be read. But with `files=[]` it's possible to
provide a `plugins=pluginconf.get_plugin_meta()` or prepared plugin/options dict instead.
| Params | | |
|---------------|---------|---------------------------------------------------------|
| config | dict 🔁 | Config settings, updated after dialog completion |
| plugin_states | dict 🔁 | Plugin activation states, also input/output |
| files | list | Glob list of *.py files to extract meta definitions from|
| plugins | dict | Alternatively to files=[] list, a preparsed list of pluginmeta+config dicts can be injected |
| opt_label | bool | Show config name= as label (instead of description) |
| theme | str | Set PSG window theme. |
| **kwargs | dict | Other options are passed on to PySimpleGUI |
| **Returns** | True | if updated config{} values should be [Saved] |
"""
plugins = kwargs.get("plugins", {})
opt_label = kwargs.get("opt_label", False)
theme = kwargs.get("theme", "DefaultNoMoreNagging")
if theme:
if "theme" in kwargs:
del kwargs["theme"]
|
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
| if plugins.get(key):
plugin_states[key] = val
return True
#print(config, plugin_states)
def plugin_layout(pmd_list, config, plugin_states, opt_label=False):
""" craft list of widgets for each read plugin """
layout = []
for plg in pmd_list:
#print(plg.get("id"))
layout = layout + plugin_entry(plg, plugin_states)
for opt in plg["config"]:
if opt.get("name"):
if opt_label:
|
|
| 100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
| if plugins.get(key):
plugin_states[key] = val
return True
#print(config, plugin_states)
def plugin_layout(pmd_list, config, plugin_states, opt_label=False):
""" craft list of widgets: \*( `plugin_entry`, \*`option_entry` )"""
layout = []
for plg in pmd_list:
#print(plg.get("id"))
layout = layout + plugin_entry(plg, plugin_states)
for opt in plg["config"]:
if opt.get("name"):
if opt_label:
|