From 284d500073c480a5a5fffdd954e49514014c3fa9 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 19 Dec 2019 17:15:41 +0200 Subject: [PATCH] - 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 --- FlatCAMApp.py | 27 +++++++++++++++++++-------- README.md | 2 ++ flatcamGUI/FlatCAMGUI.py | 36 +++++++++++++++++++++--------------- share/printer16.png | Bin 0 -> 559 bytes share/printer32.png | Bin 0 -> 818 bytes 5 files changed, 42 insertions(+), 23 deletions(-) create mode 100644 share/printer16.png create mode 100644 share/printer32.png 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 0000000000000000000000000000000000000000..1b98d2fbf639b8399767eb32aed9a1a0d93c728a GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+uenMVO6iP5s=4O z;1OBOz`%C|gc+x5^GO2**-JcqUD+S=2=l2i2uW020t)^0ba4#PINy5F*1IWDT)YyVkyI0I?b2rC)xBSn1y_WC4i_W5S-PTpl_D1)(H!P}}akQ?`f{Epotto@Zn#e%D z_{wCtyWeedymkhDlVbYZ_a>w21w*&r-M=3jbC1U*-Ec}>F!#FI(n}u=nmpO1n2s!+ zd;7z(o2ENoU0Y{-`Qex4w$mpW$to1|?hrmH@Z(#~q5cL%6WOTnfQe>Z`k}6zmf=x% zLzllb5$R2+7#p!^^C25YmQoo{Jej=i}dRlo6eaB|Et_t0SpM$ z64!{5l*E!$tK_0oAjM#0U}&jpXryas8DeN+Wo%((V4!Va03k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5n0T@z;^_M8K-LVNdpDhOFVsD*&p)=^Qo%Ov7c83)WqQF;uzv_{OT27kB~%>V;|?o z_qsSLEYTDU>)z1frCKi4voL5~%f4w7Id^g`^4+Z??x>*R@^q1y;I_>jM?8JB7G4p1 z>9^E%hSNm7mXIDXzjJ5i2C~QeymPjC{`Wcd&uyRIo36XQ$MlbOAN!m{{>$u7BuY&m zlv*TdTAEm^DqP;d=B`H?nOWym|F%iQ;6nNAo=A zhc(2&GUcEVl97SN>88tA1aHfPt#{vkXvY^#-f4TU z$@adylFYj`({-!f6s_Q8BKjc@w^^G7%&ogwu{5Y}`L2>mCHL0pCxk9em?5xdYW0~J zlNQHJea`20xA6HM;}p+@ceAcDzX|O;z3&C@n=2Nt4B2Yq`8O;wnm*~>(bTzZ=C2M+ zyJCM}Mx9k*!;j6to=IEp-izbPX*-3{9+z&8>_rwG9lc z3=9@E2lk?9$jwj5OsmAL;qtwghCmIHARB`7(@M${i&7cN%ggmL^RkPR6AM!H@{7`E Tzq647Dq`?-^>bP0l+XkKMIlHN literal 0 HcmV?d00001