From 02bdb20a08f24e0ffe080f7c08a88d0e6fa233ed Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 7 Nov 2020 17:40:23 +0200 Subject: [PATCH] - in Project tab, when selecting multiple CNCJob objects, in the context menu the name of the Save entry change to Batch Save and those objects are all saved each in its own file --- CHANGELOG.md | 1 + appObjects/FlatCAMCNCJob.py | 9 +++++---- appObjects/ObjectCollection.py | 31 ++++++++++++++++++++++--------- app_Main.py | 7 ++++--- 4 files changed, 32 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3693c8bf..4e816d7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ CHANGELOG for FlatCAM beta - fixed an if/else selection in the AppObject.on_object_created() that made the plotting of CNCJob objects to be done twice and second time will disregard the Plot Kind Preference value - updated the GCode generation section. Now the GCode is generated only once, when a CNCJob object was created. If the user chose to use the GCode Editor the GCode is only updated. If the user chose to include or remove the CNC Code Snippets, only then the GCode is regenerated. This has a higher impact on CNCJobs with very complex and long GCode. - in GCode Editor added handlers for the Insert Code buttons +- in Project tab, when selecting multiple CNCJob objects, in the context menu the name of the Save entry change to Batch Save and those objects are all saved each in its own file 7.11.2020 diff --git a/appObjects/FlatCAMCNCJob.py b/appObjects/FlatCAMCNCJob.py index 9477095b..dd40cecc 100644 --- a/appObjects/FlatCAMCNCJob.py +++ b/appObjects/FlatCAMCNCJob.py @@ -1941,7 +1941,7 @@ class CNCJobObject(FlatCAMObj, CNCjob): self.export_gcode_handler(filename, is_gcode=save_gcode) - def export_gcode_handler(self, filename, is_gcode=True): + def export_gcode_handler(self, filename, is_gcode=True, rename_object=True): preamble = '' postamble = '' filename = str(filename) @@ -1954,9 +1954,10 @@ class CNCJobObject(FlatCAMObj, CNCjob): used_extension = filename.rpartition('.')[2] self.update_filters(last_ext=used_extension, filter_string='cncjob_save_filters') - new_name = os.path.split(str(filename))[1].rpartition('.')[0] - self.ui.name_entry.set_value(new_name) - self.on_name_activate(silent=True) + if rename_object: + new_name = os.path.split(str(filename))[1].rpartition('.')[0] + self.ui.name_entry.set_value(new_name) + self.on_name_activate(silent=True) # try: # if self.ui.snippets_cb.get_value(): diff --git a/appObjects/ObjectCollection.py b/appObjects/ObjectCollection.py index 8b325a96..41fece58 100644 --- a/appObjects/ObjectCollection.py +++ b/appObjects/ObjectCollection.py @@ -373,7 +373,12 @@ class ObjectCollection(QtCore.QAbstractItemModel): self.app.ui.menuprojectcopy.setEnabled(sel) self.app.ui.menuprojectedit.setEnabled(sel) + + # ############################################# self.app.ui.menuprojectdelete.setEnabled(sel) + self.app.ui.menuprojectsave.setText(_('Save')) + # ############################################# + self.app.ui.menuprojectsave.setEnabled(sel) self.app.ui.menuprojectproperties.setEnabled(sel) @@ -384,25 +389,33 @@ class ObjectCollection(QtCore.QAbstractItemModel): self.app.ui.menuprojectviewsource.setVisible(True) self.app.ui.menuprojectcolor.setEnabled(False) - for obj in self.get_selected(): - if type(obj) == GerberObject or type(obj) == ExcellonObject: + obj_selection = self.get_selected() + + for obj in obj_selection: + if obj.kind == 'gerber' or obj.kind == 'excellon': self.app.ui.menuprojectcolor.setEnabled(True) - if type(obj) != GeometryObject: + if obj.kind == 'geometry': self.app.ui.menuprojectgeneratecnc.setVisible(False) - # if type(obj) != GeometryObject and type(obj) != ExcellonObject and type(obj) != GerberObject or \ - # type(obj) != CNCJobObject: - # self.app.ui.menuprojectedit.setVisible(False) - if type(obj) != GerberObject and type(obj) != ExcellonObject and type(obj) != CNCJobObject: + if obj.kind != 'gerber' and obj.kind != 'excellon' and obj.kind != 'cncjob': self.app.ui.menuprojectviewsource.setVisible(False) - if type(obj) != GerberObject and type(obj) != GeometryObject and type(obj) != ExcellonObject and \ - type(obj) != CNCJobObject: + if obj.kind != 'gerber' and obj.kind != 'geometry' and obj.kind != 'excellon' and obj.kind != 'cncjob': # meaning for Scripts and for Document type of FlatCAM object self.app.ui.menuprojectenable.setVisible(False) self.app.ui.menuprojectdisable.setVisible(False) self.app.ui.menuprojectedit.setVisible(False) self.app.ui.menuprojectproperties.setVisible(False) self.app.ui.menuprojectgeneratecnc.setVisible(False) + + len_objects = len(obj_selection) + cnt = 0 + if len_objects > 1: + for o in obj_selection: + if o.kind == 'cncjob': + cnt += 1 + + if len_objects == cnt: + self.app.ui.menuprojectsave.setText(_('Batch Save')) else: self.app.ui.menuprojectgeneratecnc.setVisible(False) diff --git a/app_Main.py b/app_Main.py index dcc6dd7e..617b98b1 100644 --- a/app_Main.py +++ b/app_Main.py @@ -7100,12 +7100,13 @@ class App(QtCore.QObject): caption=_("Export Code ..."), ext_filter=_filter_) - filename = filename.rpartition('/')[0] + path = filename.rpartition('/')[0] + file_extension = filename.rpartition('.')[2] for ob in sel_objects: ob.read_form() - fname = '%s/%s' % (filename, ob.options['name']) - ob.export_gcode_handler(fname, is_gcode=True) + fname = os.path.join(path, '%s.%s' % (ob.options['name'], file_extension)) + ob.export_gcode_handler(fname, is_gcode=True, rename_object=False) return obj = self.collection.get_active()