diff --git a/src/Mod/Path/CMakeLists.txt b/src/Mod/Path/CMakeLists.txt index ef93de68c..1de3dac47 100644 --- a/src/Mod/Path/CMakeLists.txt +++ b/src/Mod/Path/CMakeLists.txt @@ -55,7 +55,7 @@ SET(PathScripts_SRCS PathScripts/PathArray.py PathScripts/PathCustom.py PathScripts/PathInspect.py - PathScripts/PathToolChange.py + PathScripts/PathSimpleCopy.py ) ADD_CUSTOM_TARGET(PathScripts ALL diff --git a/src/Mod/Path/Gui/Resources/Path.qrc b/src/Mod/Path/Gui/Resources/Path.qrc index 9140b35b9..9a5c60c0b 100644 --- a/src/Mod/Path/Gui/Resources/Path.qrc +++ b/src/Mod/Path/Gui/Resources/Path.qrc @@ -29,5 +29,6 @@ icons/Path-Custom.svg icons/Path-Inspect.svg icons/Path-ToolChange.svg + icons/Path-SimpleCopy.svg diff --git a/src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg b/src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg new file mode 100644 index 000000000..c2283c40b --- /dev/null +++ b/src/Mod/Path/Gui/Resources/icons/Path-SimpleCopy.svg @@ -0,0 +1,526 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/Mod/Path/InitGui.py b/src/Mod/Path/InitGui.py index cfcec1702..93d8428ea 100644 --- a/src/Mod/Path/InitGui.py +++ b/src/Mod/Path/InitGui.py @@ -87,13 +87,14 @@ class PathWorkbench ( Workbench ): from PathScripts import PathFacePocket from PathScripts import PathCustom from PathScripts import PathInspect + from PathScripts import PathSimpleCopy # build commands list projcmdlist = ["Path_Project", "Path_ToolTableEdit","Path_Post","Path_Inspect"] prepcmdlist = ["Path_Plane","Path_Fixture","Path_LoadTool","Path_ToolLenOffset","Path_Comment","Path_Stop", "Path_FaceProfile","Path_FacePocket","Path_Custom","Path_FromShape"] opcmdlist = ["Path_Profile","Path_Kurve","Path_Pocket","Path_Drilling"] - modcmdlist = ["Path_Copy","Path_CompoundExtended","Path_Dressup","Path_Hop","Path_Array"] + modcmdlist = ["Path_Copy","Path_CompoundExtended","Path_Dressup","Path_Hop","Path_Array","Path_SimpleCopy"] # Add commands to menu and toolbar diff --git a/src/Mod/Path/PathScripts/PathInspect.py b/src/Mod/Path/PathScripts/PathInspect.py index 9ceb76fef..f97ec7c25 100644 --- a/src/Mod/Path/PathScripts/PathInspect.py +++ b/src/Mod/Path/PathScripts/PathInspect.py @@ -125,15 +125,20 @@ class GCodeEditorDialog(QtGui.QDialog): self.editor.setText("G01 X55 Y4.5 F300.0") self.highlighter = GCodeHighlighter(self.editor.document()) layout.addWidget(self.editor) - + + # Note + lab = QtGui.QLabel() + lab.setText(translate("PathInspect","Note: Pressing OK will commit any change you make above to the object, but if the object is parametric, these changes will be overridden on recompute.")) + lab.setWordWrap(True) + layout.addWidget(lab) + # OK and Cancel buttons self.buttons = QtGui.QDialogButtonBox( - QtGui.QDialogButtonBox.Ok, - #QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel, + QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self) layout.addWidget(self.buttons) self.buttons.accepted.connect(self.accept) - #self.buttons.rejected.connect(self.reject) + self.buttons.rejected.connect(self.reject) def show(obj): @@ -146,10 +151,13 @@ def show(obj): dia.editor.setText(obj.Path.toGCode()) result = dia.exec_() # exec_() returns 0 or 1 depending on the button pressed (Ok or Cancel) - #if result: - # return dia.editor.toPlainText() - #else: - # return inputstring + if result: + import Path + p = Path.Path(dia.editor.toPlainText()) + FreeCAD.ActiveDocument.openTransaction("Edit Path") + obj.Path = p + FreeCAD.ActiveDocument.commitTransaction() + FreeCAD.ActiveDocument.recompute() class CommandPathInspect: diff --git a/src/Mod/Path/PathScripts/PathSimpleCopy.py b/src/Mod/Path/PathScripts/PathSimpleCopy.py new file mode 100644 index 000000000..2a087efe2 --- /dev/null +++ b/src/Mod/Path/PathScripts/PathSimpleCopy.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- + +#*************************************************************************** +#* * +#* Copyright (c) 2015 Yorik van Havre * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import FreeCAD,FreeCADGui,Path,PathGui +from PySide import QtCore,QtGui + +"""Path SimpleCopy command""" + +# Qt tanslation handling +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def translate(context, text, disambig=None): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def translate(context, text, disambig=None): + return QtGui.QApplication.translate(context, text, disambig) + + +class CommandPathSimpleCopy: + + + def GetResources(self): + return {'Pixmap' : 'Path-SimpleCopy', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_SimpleCopy","Simple Copy"), + 'Accel': "P, Y", + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_SimpleCopy","Creates a non-parametric copy of another path")} + + def IsActive(self): + return not FreeCAD.ActiveDocument is None + + def Activated(self): + # check that the selection contains exactly what we want + selection = FreeCADGui.Selection.getSelection() + if len(selection) != 1: + FreeCAD.Console.PrintError(translate("Path_SimpleCopy","Please select exactly one path object\n")) + return + if not(selection[0].isDerivedFrom("Path::Feature")): + FreeCAD.Console.PrintError(translate("Path_SimpleCopy","Please select exactly one path object\n")) + return + + FreeCAD.ActiveDocument.openTransaction(translate("Path_SimpleCopy","Simple Copy")) + FreeCADGui.doCommand('copy = FreeCAD.ActiveDocument.addObject("Path::Feature","'+selection[0].Name+ '_copy")') + FreeCADGui.doCommand('copy.Path = FreeCAD.ActiveDocument.'+selection[0].Name+'.Path') + FreeCAD.ActiveDocument.commitTransaction() + FreeCAD.ActiveDocument.recompute() + + +if FreeCAD.GuiUp: + # register the FreeCAD command + FreeCADGui.addCommand('Path_SimpleCopy',CommandPathSimpleCopy())