From a34ce0acf32a0de3fae81df286b51ea9b14458bf Mon Sep 17 00:00:00 2001 From: vocx-fc Date: Thu, 9 Apr 2020 22:28:45 -0500 Subject: [PATCH] Draft: move Array GuiCommand to gui_array_simple module The code is kept for historical reasons, but the tool is no longer accessible from the toolbars or menus, as it was superseded by the three commands `Draft_OrthoArray`, `Draft_PolarArray` and `Draft_CircularArray`. --- src/Mod/Draft/CMakeLists.txt | 1 + src/Mod/Draft/DraftTools.py | 44 +------ .../Draft/draftguitools/gui_array_simple.py | 110 ++++++++++++++++++ 3 files changed, 112 insertions(+), 43 deletions(-) create mode 100644 src/Mod/Draft/draftguitools/gui_array_simple.py diff --git a/src/Mod/Draft/CMakeLists.txt b/src/Mod/Draft/CMakeLists.txt index 977b608bc5..9f732e770c 100644 --- a/src/Mod/Draft/CMakeLists.txt +++ b/src/Mod/Draft/CMakeLists.txt @@ -117,6 +117,7 @@ SET(Modifier_tools draftguitools/gui_wire2spline.py draftguitools/gui_shape2dview.py draftguitools/gui_draft2sketch.py + draftguitools/gui_array_simple.py ) SET(Draft_GUI_tools diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index 928a22981f..a5dc285df7 100644 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -188,48 +188,7 @@ from draftguitools.gui_drawing import Drawing from draftguitools.gui_wire2spline import WireToBSpline from draftguitools.gui_shape2dview import Shape2DView from draftguitools.gui_draft2sketch import Draft2Sketch - - -class Array(Modifier): - """GuiCommand for the Draft_Array tool. - - Parameters - ---------- - use_link: bool, optional - It defaults to `False`. If it is `True`, the created object - will be a `Link array`. - """ - - def __init__(self, use_link=False): - Modifier.__init__(self) - self.use_link = use_link - - def GetResources(self): - return {'Pixmap' : 'Draft_Array', - 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_Array", "Array"), - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_Array", "Creates a polar or rectangular array from a selected object")} - - def Activated(self): - Modifier.Activated(self) - if not FreeCADGui.Selection.getSelection(): - if self.ui: - self.ui.selectUi() - FreeCAD.Console.PrintMessage(translate("draft", "Select an object to array")+"\n") - self.call = self.view.addEventCallback("SoEvent",selectObject) - else: - self.proceed() - - def proceed(self): - if self.call: - self.view.removeEventCallback("SoEvent",self.call) - if FreeCADGui.Selection.getSelection(): - obj = FreeCADGui.Selection.getSelection()[0] - FreeCADGui.addModule("Draft") - self.commit(translate("draft","Array"), - ['obj = Draft.makeArray(FreeCAD.ActiveDocument.{},FreeCAD.Vector(1,0,0),FreeCAD.Vector(0,1,0),2,2,use_link={})'.format(obj.Name,self.use_link), - 'Draft.autogroup(obj)', - 'FreeCAD.ActiveDocument.recompute()']) - self.finish() +from draftguitools.gui_array_simple import Array class LinkArray(Array): @@ -525,7 +484,6 @@ from draftguitools.gui_snaps import ShowSnapBar # drawing commands # modification commands -FreeCADGui.addCommand('Draft_Array',Array()) FreeCADGui.addCommand('Draft_LinkArray',LinkArray()) FreeCADGui.addCommand('Draft_Clone',Draft_Clone()) FreeCADGui.addCommand('Draft_PathArray',PathArray()) diff --git a/src/Mod/Draft/draftguitools/gui_array_simple.py b/src/Mod/Draft/draftguitools/gui_array_simple.py new file mode 100644 index 0000000000..9d9c40bd57 --- /dev/null +++ b/src/Mod/Draft/draftguitools/gui_array_simple.py @@ -0,0 +1,110 @@ +# *************************************************************************** +# * (c) 2009, 2010 Yorik van Havre * +# * (c) 2009, 2010 Ken Cline * +# * (c) 2020 Eliud Cabrera Castillo * +# * * +# * This file is part of the FreeCAD CAx development system. * +# * * +# * 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. * +# * * +# * FreeCAD 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 FreeCAD; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** +"""Provides simple tools for creating arrays with the Draft Workbench. + +These commands were replaced by individual commands `Draft_OrthoArray`, +`Draft_PolarArray`, and `Draft_CircularArray` which launch their own +task panel, and provide a more useful way of creating the desired array. +""" +## @package gui_array_simple +# \ingroup DRAFT +# \brief Provides simple tools for creating arrays with the Draft Workbench. + +from PySide.QtCore import QT_TRANSLATE_NOOP + +import FreeCADGui as Gui +import Draft_rc +import draftguitools.gui_base_original as gui_base_original +import draftguitools.gui_tool_utils as gui_tool_utils +from draftutils.messages import _msg +from draftutils.translate import translate, _tr + +# The module is used to prevent complaints from code checkers (flake8) +True if Draft_rc.__name__ else False + + +class Array(gui_base_original.Modifier): + """Gui Command for the original simple Array tool. + + Parameters + ---------- + use_link: bool, optional + It defaults to `False`. If it is `True`, the created object + will be a `Link array`. + """ + + def __init__(self, use_link=False): + super().__init__() + self.use_link = use_link + + def GetResources(self): + """Set icon, menu and tooltip.""" + _tip = ("Creates an array from a selected object. " + "By default, it is a 2x2 orthogonal array.\n" + "Once the array is created its type can be changed " + "to polar or circular, and its properties can be modified.") + + return {'Pixmap': 'Draft_Array', + 'MenuText': QT_TRANSLATE_NOOP("Draft_Array", "Array"), + 'ToolTip': QT_TRANSLATE_NOOP("Draft_Array", _tip)} + + def Activated(self, name=_tr("Array")): + """Execute when the command is called.""" + super().Activated(name=name) + if not Gui.Selection.getSelection(): + if self.ui: + self.ui.selectUi() + _msg(translate("draft", "Select an object to array")) + self.call = \ + self.view.addEventCallback("SoEvent", + gui_tool_utils.selectObject) + else: + self.proceed() + + def proceed(self): + """Proceed with the command if one object was selected.""" + if self.call: + self.view.removeEventCallback("SoEvent", self.call) + if Gui.Selection.getSelection(): + obj = Gui.Selection.getSelection()[0] + Gui.addModule("Draft") + _cmd = 'Draft.makeArray' + _cmd += '(' + _cmd += 'FreeCAD.ActiveDocument.' + obj.Name + ', ' + _cmd += 'FreeCAD.Vector(1, 0, 0), ' + _cmd += 'FreeCAD.Vector(0, 1, 0), ' + _cmd += '2, ' + _cmd += '2, ' + _cmd += 'use_link=' + str(self.use_link) + _cmd += ')' + _cmd_list = ['obj = ' + _cmd, + 'Draft.autogroup(obj)', + 'FreeCAD.ActiveDocument.recompute()'] + self.commit(translate("draft", "Array"), + _cmd_list) + self.finish() + + +Gui.addCommand('Draft_Array', Array())