@@ -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