diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 569e0b8e..ff4cb5d0 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1813,10 +1813,11 @@ class App(QtCore.QObject): self.ui.menufileexportdxf.triggered.connect(self.on_file_exportdxf) + self.ui.menufile_print.triggered.connect(lambda: self.on_file_save_objects_pdf(use_thread=True)) + self.ui.menufilesaveproject.triggered.connect(self.on_file_saveproject) self.ui.menufilesaveprojectas.triggered.connect(self.on_file_saveprojectas) self.ui.menufilesaveprojectcopy.triggered.connect(lambda: self.on_file_saveprojectas(make_copy=True)) - self.ui.menufilesave_object_pdf.triggered.connect(self.on_file_save_object_pdf) self.ui.menufilesavedefaults.triggered.connect(self.on_file_savedefaults) self.ui.menufileexportpref.triggered.connect(self.on_export_preferences) @@ -10322,19 +10323,26 @@ class App(QtCore.QObject): self.set_ui_title(name=self.project_filename) self.should_we_save = False - def on_file_save_object_pdf(self, use_thread=True): + def on_file_save_objects_pdf(self, use_thread=True): self.date = str(datetime.today()).rpartition('.')[0] self.date = ''.join(c for c in self.date if c not in ':-') self.date = self.date.replace(' ', '_') try: - obj_active = self.collection.get_active() - obj_name = _(str(obj_active.options['name'])) + obj_selection = self.collection.get_selected() + if len(obj_selection) == 1: + obj_name = str(obj_selection[0].options['name']) + else: + obj_name = _("FlatCAM objects print") except AttributeError as err: log.debug("App.on_file_save_object_pdf() --> %s" % str(err)) self.inform.emit('[ERROR_NOTCL] %s' % _("No object selected.")) return + if not obj_selection: + self.inform.emit('[ERROR_NOTCL] %s' % _("No object selected.")) + return + filter_ = "PDF File (*.PDF);; All Files (*.*)" try: filename, _f = QtWidgets.QFileDialog.getSaveFileName( @@ -10354,17 +10362,20 @@ class App(QtCore.QObject): return if use_thread is True: - self.worker_task.emit({'fcn': self.save_pdf, 'params': [filename, obj_name]}) + self.worker_task.emit({'fcn': self.save_pdf, 'params': [filename, obj_name, obj_selection]}) else: - self.save_pdf(filename, obj_name) + self.save_pdf(filename, obj_name, obj_selection) # self.save_project(filename) if self.defaults["global_open_style"] is False: self.file_opened.emit("pdf", filename) self.file_saved.emit("pdf", filename) - def save_pdf(self, file_name, obj_name): - self.film_tool.export_positive(obj_name=obj_name, box_name=obj_name, filename=file_name, ftype='pdf') + def save_pdf(self, file_name, obj_name, obj_selection): + if len(obj_selection) == 1: + self.film_tool.export_positive(obj_name=obj_name, box_name=obj_name, filename=file_name, ftype='pdf') + else: + self.inform.emit('[WARNING_NOTCL] %s' % _("Multiple objects print not implemented yet.")) def export_svg(self, obj_name, filename, scale_stroke_factor=0.00): """ diff --git a/README.md b/README.md index 61efc7ca..fdd73dba 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ CAD program, and create G-Code for Isolation routing. - in 2-Sided Tool fixed the Reset Tool button handler to reset the bounds value too; changed a string - added Preferences values for PDF margins when saving text in Code Editor as PDF - when clicking Cancel in Preferences now the values are reverted to what they used to be before opening Preferences tab and start changing values +- starting to work to a general Print function; for now it will generate PDF files; currently it works only for one object not for a selection +- added shortcut key CTRL+P for printing to PDF method 18.12.2019 diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 9d451575..fc75f8a5 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -240,6 +240,9 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # Separator self.menufile.addSeparator() + self.menufile_print = QtWidgets.QAction( + QtGui.QIcon(self.app.resource_location + '/printer32.png'), '%s\tCTRL+P' % _('Print (PDF)')) + self.menufile.addAction(self.menufile_print) self.menufile_save = self.menufile.addMenu(QtGui.QIcon(self.app.resource_location + '/save_as.png'), _('Save')) @@ -260,11 +263,6 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.menufile_save.addSeparator() - # Save Object PDF - self.menufilesave_object_pdf = QtWidgets.QAction(QtGui.QIcon(self.app.resource_location + '/pdf32.png'), - _('Save Object as PDF ...'), self) - self.menufile_save.addAction(self.menufilesave_object_pdf) - # Separator self.menufile.addSeparator() @@ -1381,18 +1379,22 @@ class FlatCAMGUI(QtWidgets.QMainWindow): CTRL+G  %s - - CTRL+N -  %s - CTRL+M  %s + + CTRL+N +  %s + CTRL+O  %s + + CTRL+P +  %s + CTRL+Q  %s @@ -1579,8 +1581,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # CTRL section _("Select All"), _("Copy Obj"), _("Open Tools Database"), - _("Open Excellon File"), _("Open Gerber File"), _("New Project"), _("Distance Tool"), - _("Open Project"), _("PDF Import Tool"), _("Save Project As"), _("Toggle Plot Area"), + _("Open Excellon File"), _("Open Gerber File"), _("Distance Tool"), _("New Project"), + _("Open Project"), _("Print (PDF)"), _("PDF Import Tool"), _("Save Project As"), _("Toggle Plot Area"), # SHIFT section _("Copy Obj_Name"), @@ -2671,18 +2673,22 @@ class FlatCAMGUI(QtWidgets.QMainWindow): if key == QtCore.Qt.Key_G: self.app.on_fileopengerber() - # Create New Project - if key == QtCore.Qt.Key_N: - self.app.on_file_new_click() - # Distance Tool if key == QtCore.Qt.Key_M: self.app.distance_tool.run() + # Create New Project + if key == QtCore.Qt.Key_N: + self.app.on_file_new_click() + # Open Project if key == QtCore.Qt.Key_O: self.app.on_file_openproject() + # Open Project + if key == QtCore.Qt.Key_P: + self.app.on_file_save_objects_pdf(use_thread=True) + # PDF Import if key == QtCore.Qt.Key_Q: self.app.pdf_tool.run() diff --git a/share/printer16.png b/share/printer16.png new file mode 100644 index 00000000..1b98d2fb Binary files /dev/null and b/share/printer16.png differ diff --git a/share/printer32.png b/share/printer32.png new file mode 100644 index 00000000..c6f314e5 Binary files /dev/null and b/share/printer32.png differ