Преглед на файлове

- added a new setting in Edit -> Preferences -> General that allow to select the type of saving for the FlatCAM project: either compressed or uncompressed. Compression introduce an time overhead to the saving/restoring of a FlatCAM project.

Marius Stanciu преди 7 години
родител
ревизия
4dbecde32f
променени са 3 файла, в които са добавени 58 реда и са изтрити 40 реда
  1. 42 36
      FlatCAMApp.py
  2. 15 4
      FlatCAMGUI.py
  3. 1 0
      README.md

+ 42 - 36
FlatCAMApp.py

@@ -314,6 +314,7 @@ class App(QtCore.QObject):
             "global_project_autohide": self.general_defaults_form.general_app_group.project_autohide_cb,
             "global_advanced": self.general_defaults_form.general_app_group.advanced_cb,
             "global_compression_level": self.general_defaults_form.general_app_group.compress_combo,
+            "global_save_compressed": self.general_defaults_form.general_app_group.save_type_cb,
 
             "global_gridx": self.general_defaults_form.general_gui_group.gridx_entry,
             "global_gridy": self.general_defaults_form.general_gui_group.gridy_entry,
@@ -550,6 +551,8 @@ class App(QtCore.QObject):
             "global_shell_at_startup": False,  # Show the shell at startup.
             "global_recent_limit": 10,  # Max. items in recent list.
             "global_compression_level": 3,
+            "global_save_compressed": True,
+
             "fit_key": 'V',
             "zoom_out_key": '-',
             "zoom_in_key": '=',
@@ -6929,42 +6932,45 @@ The normal flow when working in FlatCAM is the following:</span></p>
                  "options": self.options,
                  "version": self.version}
 
-            with lzma.open(filename, "w", preset=int(self.defaults['global_compression_level'])) as f:
-                g = json.dumps(d, default=to_dict, indent=2, sort_keys=True).encode('utf-8')
-                # # Write
-                f.write(g)
-            self.inform.emit("[success] Project saved to: %s" % filename)
-            # Open file
-            # try:
-            #     f = open(filename, 'w')
-            # except IOError:
-            #     App.log.error("[ERROR] Failed to open file for saving: %s", filename)
-            #     return
-            #
-            # # Write
-            # json.dump(d, f, default=to_dict, indent=2, sort_keys=True)
-            # f.close()
-            #
-            # # verification of the saved project
-            # # Open and parse
-            # try:
-            #     saved_f = open(filename, 'r')
-            # except IOError:
-            #     self.inform.emit("[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." % filename)
-            #     return
-            #
-            # try:
-            #     saved_d = json.load(saved_f, object_hook=dict2obj)
-            # except:
-            #     self.inform.emit("[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." % filename)
-            #     f.close()
-            #     return
-            # saved_f.close()
-            #
-            # if 'version' in saved_d:
-            #     self.inform.emit("[success] Project saved to: %s" % filename)
-            # else:
-            #     self.inform.emit("[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." % filename)
+            if self.defaults["global_save_compressed"] is True:
+                with lzma.open(filename, "w", preset=int(self.defaults['global_compression_level'])) as f:
+                    g = json.dumps(d, default=to_dict, indent=2, sort_keys=True).encode('utf-8')
+                    # # Write
+                    f.write(g)
+                self.inform.emit("[success] Project saved to: %s" % filename)
+            else:
+                # Open file
+                try:
+                    f = open(filename, 'w')
+                except IOError:
+                    App.log.error("[ERROR] Failed to open file for saving: %s", filename)
+                    return
+
+                # Write
+                json.dump(d, f, default=to_dict, indent=2, sort_keys=True)
+                f.close()
+
+                # verification of the saved project
+                # Open and parse
+                try:
+                    saved_f = open(filename, 'r')
+                except IOError:
+                    self.inform.emit("[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." % filename)
+                    return
+
+                try:
+                    saved_d = json.load(saved_f, object_hook=dict2obj)
+                except:
+                    self.inform.emit(
+                        "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." % filename)
+                    f.close()
+                    return
+                saved_f.close()
+
+                if 'version' in saved_d:
+                    self.inform.emit("[success] Project saved to: %s" % filename)
+                else:
+                    self.inform.emit("[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." % filename)
 
     def on_options_app2project(self):
         """

+ 15 - 4
FlatCAMGUI.py

@@ -3105,8 +3105,9 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         # to the main layout of this TAB
         self.layout.addLayout(self.form_box)
 
-        hlay = QtWidgets.QHBoxLayout()
-        self.layout.addLayout(hlay)
+        # hlay = QtWidgets.QHBoxLayout()
+        # self.layout.addLayout(hlay)
+        # hlay.addStretch()
 
         # Advanced CB
         self.advanced_cb = FCCheckBox('Show Advanced Options')
@@ -3116,8 +3117,16 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
             "kind of objects."
         )
         # self.advanced_cb.setLayoutDirection(QtCore.Qt.RightToLeft)
-        hlay.addWidget(self.advanced_cb)
-        hlay.addStretch()
+        self.layout.addWidget(self.advanced_cb)
+
+        # Save compressed project CB
+        self.save_type_cb = FCCheckBox('Save Compressed Project')
+        self.save_type_cb.setToolTip(
+            "Whether to save a compressed or uncompressed project.\n"
+            "When checked it will save a compressed FlatCAM project."
+        )
+        # self.advanced_cb.setLayoutDirection(QtCore.Qt.RightToLeft)
+        self.layout.addWidget(self.save_type_cb)
 
         hlay1 = QtWidgets.QHBoxLayout()
         self.layout.addLayout(hlay1)
@@ -3136,6 +3145,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         hlay1.addWidget(self.compress_label)
         hlay1.addWidget(self.compress_combo)
 
+        self.proj_ois = OptionalInputSection(self.save_type_cb, [self.compress_label, self.compress_combo], True)
+
         self.form_box_2 = QtWidgets.QFormLayout()
         self.layout.addLayout(self.form_box_2)
 

+ 1 - 0
README.md

@@ -17,6 +17,7 @@ CAD program, and create G-Code for Isolation routing.
 - compacted a bit more the GUI for Gerber Object
 - removed the Open Gerber with 'follow' menu entry and also the open_gerber Tcl Command attribute 'follow'. This is no longer required because now the follow_geometry is stored by default in a Gerber object attribute gerber_obj.follow_geometry
 - added a new parameter for the Tcl CommandIsolate, named: 'follow'. When follow = 1 (True) the resulting geometry will follow the Gerber paths.
+- added a new setting in Edit -> Preferences -> General that allow to select the type of saving for the FlatCAM project: either compressed or uncompressed. Compression introduce an time overhead to the saving/restoring of a FlatCAM project.
 
 18.02.2019