@@ -1408,8 +1408,31 @@ def open_recent_file(self):
14081408 QMessageBox .warning (self , "Warning" , f"File { filepath } could not be found" )
14091409
14101410 def _save_data (self , filepath ):
1411+ CAN_BE_SAVED = (la .Array , la .Axis , la .Group )
1412+ in_var_list = {k : v for k , v in self .data .items ()
1413+ if self ._display_in_varlist (k , v )}
1414+ if not in_var_list :
1415+ QMessageBox .warning (self , "Warning" , "Nothing to save" )
1416+ return
1417+
1418+ to_save = {k : v for k , v in in_var_list .items ()
1419+ if isinstance (v , CAN_BE_SAVED )}
1420+ if not to_save :
1421+ msg = ("Nothing can be saved because "
1422+ "all the currently loaded variables "
1423+ "are of types which are not supported for saving." )
1424+ QMessageBox .warning (self , "Warning: unsavable objects" , msg )
1425+ return
1426+
1427+ unsaveable = in_var_list .keys () - to_save .keys ()
1428+ if unsaveable :
1429+ object_names = ', ' .join (sorted (unsaveable ))
1430+ QMessageBox .warning (self , "Warning: unsavable objects" ,
1431+ "The following variables are of types which "
1432+ "are not supported for saving and will be "
1433+ f"ignored:\n \n { object_names } " )
1434+ session = la .Session (to_save )
14111435 try :
1412- session = la .Session ({k : v for k , v in self .data .items () if self ._display_in_varlist (k , v )})
14131436 session .save (filepath )
14141437 self .set_current_file (filepath )
14151438 self .edit_undo_stack .clear ()
0 commit comments