From db7639c1860a1b51fcaa62ec7a8eaa636339ce2f Mon Sep 17 00:00:00 2001 From: edi271 Date: Tue, 5 Dec 2023 11:07:28 +0100 Subject: [PATCH] [TD] New command and task panel --- .../TechDrawTools/CommandVertexCreations.py | 99 +++++++++++++++++++ .../TechDrawTools/TaskAddOffsetVertex.py | 58 +++++++++++ 2 files changed, 157 insertions(+) create mode 100644 src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py create mode 100644 src/Mod/TechDraw/TechDrawTools/TaskAddOffsetVertex.py diff --git a/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py b/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py new file mode 100644 index 0000000000..87e17dab86 --- /dev/null +++ b/src/Mod/TechDraw/TechDrawTools/CommandVertexCreations.py @@ -0,0 +1,99 @@ +# *************************************************************************** +# * Copyright (c) 2023 edi * +# * * +# * 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 * +# * * +# *************************************************************************** +"""Provides several TechDraw GuiCommands to create vertexes.""" + +__title__ = "TechDrawTools.CommandVertexCreations" +__author__ = "edi" +__url__ = "https://www.freecad.org" +__version__ = "00.01" +__date__ = "2023/12/05" + + +from PySide.QtCore import QT_TRANSLATE_NOOP + +import FreeCAD as App +import FreeCADGui as Gui + +import TechDrawTools +import TechDrawTools.TDToolsUtil as Utils + + +import TechDraw + +class CommandVertexCreationGroup: + '''Create a drop down toolbar/menubar for vertex creating tools''' + def Activated(self, index): + if index == 0: + Gui.runCommand("TechDraw_ExtensionVertexAtIntersection") + elif index == 1: + Gui.runCommand("TechDraw_CommandAddOffsetVertex") + + def GetCommands(self): + return("TechDraw_ExtensionVertexAtIntersection", + "TechDraw_CommandAddOffsetVertex") + + def GetDefaultCommand(self): + return 0 + + def GetResources(self): + return {'Pixmap':'TechDraw_ExtensionVertexAtIntersection'} + + def IsActive(self): + """Return True when the command should be active or False when it should be disabled (greyed).""" + if App.ActiveDocument: + return Utils.havePage() and Utils.haveView() + else: + return False + +class CommandAddOffsetVertex: + """Creates a vertex offset to a selected vertex.""" + + def __init__(self): + """Initialize variables for the command that must exist at all times.""" + pass + + def GetResources(self): + """Return a dictionary with data that will be used by the button or menu item.""" + return {'Pixmap': 'actions/TechDraw_AddOffsetVertex.svg', + 'Accel': "", + 'MenuText': QT_TRANSLATE_NOOP("TechDraw_AddOffsetVertex", "Add an offset vertex"), + 'ToolTip': QT_TRANSLATE_NOOP("TechDraw_AddOffsetVertex", "Create an offset vertex
\ + - select one vertex
\ + - start the tool
\ + - enter offset values in panel")} + + def Activated(self): + """Run the following code when the command is activated (button pressed).""" + if Utils.getSelView() and Utils.getSelVertexes(): + view = Utils.getSelView() + vertexes = Utils.getSelVertexes() + self.ui = TechDrawTools.TaskAddOffsetVertex(view, vertexes[0]) + Gui.Control.showDialog(self.ui) + + def IsActive(self): + """Return True when the command should be active or False when it should be disabled (greyed).""" + if App.ActiveDocument: + return Utils.havePage() and Utils.haveView() + else: + return False + +Gui.addCommand('TechDraw_CommandVertexCreationGroup',CommandVertexCreationGroup()) +Gui.addCommand('TechDraw_CommandAddOffsetVertex',CommandAddOffsetVertex()) diff --git a/src/Mod/TechDraw/TechDrawTools/TaskAddOffsetVertex.py b/src/Mod/TechDraw/TechDrawTools/TaskAddOffsetVertex.py new file mode 100644 index 0000000000..1be39d86e2 --- /dev/null +++ b/src/Mod/TechDraw/TechDrawTools/TaskAddOffsetVertex.py @@ -0,0 +1,58 @@ +# *************************************************************************** +# * Copyright (c) 2023 edi * +# * * +# * 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 * +# * * +# *************************************************************************** +"""Provides the TechDraw AddOffsetVertex Task Dialog.""" + +__title__ = "TechDrawTools.TasAddOffsetVertex" +__author__ = "edi" +__url__ = "https://www.freecad.org" +__version__ = "00.01" +__date__ = "2023/12/04" + +import FreeCAD as App +import FreeCADGui as Gui + +from functools import partial + +import os + +translate = App.Qt.translate + +class TaskAddOffsetVertex(): + '''Provides the TechDraw AddOffsetVertex Task Dialog.''' + def __init__(self,view,vertex): + self._uiPath = App.getHomePath() + self._uiPath = os.path.join(self._uiPath, "Mod/TechDraw/TechDrawTools/Gui/TaskAddOffsetVertex.ui") + self.form = Gui.PySideUic.loadUi(self._uiPath) + self.form.setWindowTitle(translate("TechDraw_AddOffsetVertex", "Add offset vertex")) + self.view = view + self.vertex = vertex + + def accept(self): + '''slot: OK pressed''' + point = self.vertex.Point + xOffset = self.form.dSpinBoxX.value() + yOffset = self.form.dSpinBoxY.value() + offset = App.Vector(xOffset,yOffset,0) + self.view.makeCosmeticVertex(point+offset) + Gui.Control.closeDialog() + + def reject(self): + return True \ No newline at end of file