Skip to content

Commit 2bf9607

Browse files
committed
fixed #9 unnamed ui elements in certain plugins do not longer crash workbench when saving workbenches
1 parent ed78cb3 commit 2bf9607

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

CHANGES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## 0.0.4 (2019-XX-XX)
44

5-
* [TBD]
5+
* Fixed #9: Workbenches can be saved even if other plugins contain unnamed UI elements.
66

77
## 0.0.3 (2019-09-08)
88

qgist/workbench/dtype_workbench.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,18 @@ def save(self, mainwindow):
175175
qtoolbars_dict = dtype_workbench_class._get_uielements_from_mainwindow(mainwindow, QToolBar)
176176
qdockwidgets_dict = dtype_workbench_class._get_uielements_from_mainwindow(mainwindow, QDockWidget)
177177

178-
dtype_workbench_class._save_uielements(qtoolbars_dict, self._toolbars_dict)
179-
dtype_workbench_class._save_uielements(qdockwidgets_dict, self._dockwidgets_dict)
178+
show_unnamed_warning = False if self._config is None else self._config.get('show_unnamed_warning', False)
179+
180+
dtype_workbench_class._save_uielements(
181+
uiobjects_dict = qtoolbars_dict,
182+
uielements_dict = self._toolbars_dict,
183+
show_unnamed_warning = show_unnamed_warning,
184+
)
185+
dtype_workbench_class._save_uielements(
186+
uiobjects_dict = qdockwidgets_dict,
187+
uielements_dict = self._dockwidgets_dict,
188+
show_unnamed_warning = show_unnamed_warning,
189+
)
180190

181191
self._mainwindow_state = bytes(mainwindow.saveState())
182192

@@ -236,14 +246,24 @@ def get_parent(el):
236246
}
237247

238248
@staticmethod
239-
def _save_uielements(uiobjects_dict, uielements_dict):
249+
def _save_uielements(uiobjects_dict, uielements_dict, show_unnamed_warning):
240250

241251
for name_internal, uiobject in uiobjects_dict.items():
242-
try:
252+
if name_internal in uielements_dict.keys():
243253
uielements_dict[name_internal].pull_state_from_uiobject()
244-
except KeyError:
245-
uielement = dtype_uielement_class.from_uiobject(uiobject)
246-
uielements_dict[uielement.name_internal] = uielement
254+
else:
255+
"""try/except-block fixes #9, Certain other plugins inhibit
256+
saving a workbench because of unnamed UI element"""
257+
try:
258+
uielement = dtype_uielement_class.from_uiobject(uiobject)
259+
uielements_dict[uielement.name_internal] = uielement
260+
except QgistUnnamedElementError as e:
261+
"""implementing #8, enabling the user to disable warnings
262+
which are mainly caused by other plugins"""
263+
if show_unnamed_warning:
264+
msg_warning(e)
265+
except Qgist_ALL_Errors as e:
266+
msg_warning(e)
247267
for name_internal in (uielements_dict.keys() - uiobjects_dict.keys()):
248268
uielements_dict[name_internal].existence = False
249269

0 commit comments

Comments
 (0)