Explorar o código

- added an extra check if old preferences files are detected, a check if the type of the values is the same with the type in the current preferences file. If the type is not the same then the current type is preferred.

Marius Stanciu %!s(int64=5) %!d(string=hai) anos
pai
achega
1f36ed9369
Modificáronse 2 ficheiros con 18 adicións e 1 borrados
  1. 1 0
      CHANGELOG.md
  2. 17 1
      FlatCAMApp.py

+ 1 - 0
CHANGELOG.md

@@ -13,6 +13,7 @@ CHANGELOG for FlatCAM beta
 - added a 'Close' menu entry in the Tcl Shell context menu that will close (hide) the Tcl Shell Dock widget
 - added a 'Close' menu entry in the Tcl Shell context menu that will close (hide) the Tcl Shell Dock widget
 - on launching the Tcl Shell the Edit line will take focus immediately 
 - on launching the Tcl Shell the Edit line will take focus immediately 
 - in App.on_mouse_move_over_plot() method no longer will be done a setFocus() on every move, only when it is needed
 - in App.on_mouse_move_over_plot() method no longer will be done a setFocus() on every move, only when it is needed
+- added an extra check if old preferences files are detected, a check if the type of the values is the same with the type in the current preferences file. If the type is not the same then the current type is preferred.
 
 
 22.04.2020 
 22.04.2020 
 
 

+ 17 - 1
FlatCAMApp.py

@@ -3829,7 +3829,23 @@ class App(QtCore.QObject):
             if 'version' not in defaults or defaults['version'] != self.defaults['version']:
             if 'version' not in defaults or defaults['version'] != self.defaults['version']:
                 for k, v in defaults.items():
                 for k, v in defaults.items():
                     if k in self.defaults and k != 'version':
                     if k in self.defaults and k != 'version':
-                        self.defaults[k] = v
+
+                        # check if the types are the same. Because some types (tuple, float, int etc)
+                        # may be stored as strings we check their types.
+                        try:
+                            target = eval(self.defaults[k])
+                        except NameError:
+                            # it's an unknown string leave it as it is
+                            target = deepcopy(self.defaults[k])
+
+                        try:
+                            source = eval(v)
+                        except NameError:
+                            # it's an unknown string leave it as it is
+                            source = deepcopy(v)
+
+                        if type(target) == type(source):
+                            self.defaults[k] = v
 
 
                 # delete old factory defaults
                 # delete old factory defaults
                 try:
                 try: