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
|
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.
Parameters
----------
| Params | | |
|---------------|---------|---------------------------------------------------------|
config : dict 🔁
Config settings, updated after dialog completion
| config | dict 🔁 | Config settings, updated after dialog completion |
plugin_states : dict 🔁
Plugin activation states, also input/output
| plugin_states | dict 🔁 | Plugin activation states, also input/output |
files : list
Glob list of *.py files to extract meta definitions from
| 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
| plugins | dict | Alternatively to files=[] list, a preparsed list of pluginmeta+config dicts can be injected |
opt_label : bool
Show config name= as label
| opt_label | bool | Show config name= as label (instead of description) |
theme : str
Set PSG window theme.
| theme | str | Set PSG window theme. |
**kwargs : dict
Other options are passed on to PySimpleGUI
| **kwargs | dict | Other options are passed on to PySimpleGUI |
| **Returns** | True | if updated config{} values should be [Saved] |
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"]
|
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
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 for each read plugin """
""" 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:
|