2
# ***************************************************************************
3
# * Copyright (c) 2009, 2010 Yorik van Havre <yorik@uncreated.net> *
4
# * Copyright (c) 2009, 2010 Ken Cline <cline@frii.com> *
6
# * This program is free software; you can redistribute it and/or modify *
7
# * it under the terms of the GNU Lesser General Public License (LGPL) *
8
# * as published by the Free Software Foundation; either version 2 of *
9
# * the License, or (at your option) any later version. *
10
# * for detail see the LICENCE text file. *
12
# * This program is distributed in the hope that it will be useful, *
13
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
# * GNU Library General Public License for more details. *
17
# * You should have received a copy of the GNU Library General Public *
18
# * License along with this program; if not, write to the Free Software *
19
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
22
# ***************************************************************************
23
"""Provide GUI commands of the Draft Workbench.
25
This module loads all graphical commands of the Draft Workbench,
26
that is, those actions that can be called from menus and buttons.
27
This module must be imported only when the graphical user interface
28
is available, for example, during the workbench definition in `IntiGui.py`.
32
# \brief Provide GUI commands of the Draft workbench.
34
# This module contains all the graphical commands of the Draft workbench,
35
# that is, those actions that can be called from menus and buttons.
37
# ---------------------------------------------------------------------------
39
# ---------------------------------------------------------------------------
42
from PySide import QtCore, QtGui
47
from FreeCAD import Vector
51
import DraftGui # Initializes the DraftToolBar class
54
from draftutils.todo import ToDo
55
from draftutils.translate import translate
56
import draftguitools.gui_snapper as gui_snapper
57
import draftguitools.gui_trackers as trackers
59
# The module is used to prevent complaints from code checkers (flake8)
60
True if Draft_rc.__name__ else False
61
True if DraftGui.__name__ else False
63
__title__ = "FreeCAD Draft Workbench GUI Tools"
64
__author__ = ("Yorik van Havre, Werner Mayer, Martin Burbaum, Ken Cline, "
66
__url__ = "https://www.freecad.org"
68
if not hasattr(FreeCADGui, "Snapper"):
69
FreeCADGui.Snapper = gui_snapper.Snapper()
71
WorkingPlane.get_working_plane()
73
# ---------------------------------------------------------------------------
74
# Commands that have been migrated to their own modules
75
# ---------------------------------------------------------------------------
76
import draftguitools.gui_edit
77
import draftguitools.gui_selectplane
78
import draftguitools.gui_setstyle
79
import draftguitools.gui_planeproxy
80
from draftguitools.gui_togglemodes import ToggleConstructionMode
81
from draftguitools.gui_togglemodes import ToggleDisplayMode
82
from draftguitools.gui_groups import AddToGroup
83
from draftguitools.gui_groups import SelectGroup
84
from draftguitools.gui_groups import SetAutoGroup
85
from draftguitools.gui_groups import Draft_AddConstruction
86
from draftguitools.gui_grid import ToggleGrid
87
from draftguitools.gui_heal import Heal
88
from draftguitools.gui_dimension_ops import Draft_FlipDimension
89
from draftguitools.gui_lineslope import Draft_Slope
90
import draftguitools.gui_arrays
91
import draftguitools.gui_annotationstyleeditor
92
from draftguitools.gui_layers import Layer
94
# ---------------------------------------------------------------------------
96
# ---------------------------------------------------------------------------
97
# update the translation engine
98
FreeCADGui.updateLocale()
100
# ---------------------------------------------------------------------------
102
# ---------------------------------------------------------------------------
103
from draftguitools.gui_tool_utils import formatUnit
105
from draftguitools.gui_tool_utils import selectObject
107
from draftguitools.gui_tool_utils import getPoint
109
from draftguitools.gui_tool_utils import getSupport
111
from draftguitools.gui_tool_utils import setWorkingPlaneToObjectUnderCursor
113
from draftguitools.gui_tool_utils import setWorkingPlaneToSelectedObject
115
from draftguitools.gui_tool_utils import hasMod
117
from draftguitools.gui_tool_utils import setMod
119
# ---------------------------------------------------------------------------
121
# ---------------------------------------------------------------------------
122
from draftguitools.gui_base_original import DraftTool
124
# ---------------------------------------------------------------------------
125
# Geometry constructors
126
# ---------------------------------------------------------------------------
127
from draftguitools.gui_tool_utils import redraw3DView
129
from draftguitools.gui_base_original import Creator
131
from draftguitools.gui_lines import Line
132
from draftguitools.gui_lines import Wire
133
from draftguitools.gui_fillets import Fillet
134
from draftguitools.gui_splines import BSpline
135
from draftguitools.gui_beziers import BezCurve
136
from draftguitools.gui_beziers import CubicBezCurve
137
from draftguitools.gui_beziers import BezierGroup
138
from draftguitools.gui_rectangles import Rectangle
139
from draftguitools.gui_arcs import Arc
140
from draftguitools.gui_arcs import Draft_Arc_3Points
141
from draftguitools.gui_circles import Circle
142
from draftguitools.gui_polygons import Polygon
143
from draftguitools.gui_ellipses import Ellipse
144
from draftguitools.gui_texts import Text
145
from draftguitools.gui_dimensions import Dimension
146
from draftguitools.gui_shapestrings import ShapeString
147
from draftguitools.gui_points import Point
148
from draftguitools.gui_facebinders import Draft_Facebinder
149
from draftguitools.gui_labels import Draft_Label
150
from draftguitools.gui_hatch import Draft_Hatch
152
# ---------------------------------------------------------------------------
154
# ---------------------------------------------------------------------------
155
from draftguitools.gui_base_original import Modifier
157
from draftguitools.gui_subelements import SubelementHighlight
158
from draftguitools.gui_move import Move
159
from draftguitools.gui_styles import ApplyStyle
160
from draftguitools.gui_rotate import Rotate
161
from draftguitools.gui_offset import Offset
162
from draftguitools.gui_stretch import Stretch
163
from draftguitools.gui_join import Join
164
from draftguitools.gui_split import Split
165
from draftguitools.gui_upgrade import Upgrade
166
from draftguitools.gui_downgrade import Downgrade
167
from draftguitools.gui_trimex import Trimex
168
from draftguitools.gui_scale import Scale
169
from draftguitools.gui_wire2spline import WireToBSpline
170
from draftguitools.gui_shape2dview import Shape2DView
171
from draftguitools.gui_draft2sketch import Draft2Sketch
172
from draftguitools.gui_patharray import PathArray
173
from draftguitools.gui_patharray import PathLinkArray
174
from draftguitools.gui_pointarray import PointArray
175
import draftguitools.gui_arrays
176
from draftguitools.gui_clone import Draft_Clone
177
from draftguitools.gui_mirror import Mirror
179
# ---------------------------------------------------------------------------
181
# ---------------------------------------------------------------------------
182
from draftguitools.gui_snaps import Draft_Snap_Lock
183
from draftguitools.gui_snaps import Draft_Snap_Midpoint
184
from draftguitools.gui_snaps import Draft_Snap_Perpendicular
185
from draftguitools.gui_snaps import Draft_Snap_Grid
186
from draftguitools.gui_snaps import Draft_Snap_Intersection
187
from draftguitools.gui_snaps import Draft_Snap_Parallel
188
from draftguitools.gui_snaps import Draft_Snap_Endpoint
189
from draftguitools.gui_snaps import Draft_Snap_Angle
190
from draftguitools.gui_snaps import Draft_Snap_Center
191
from draftguitools.gui_snaps import Draft_Snap_Extension
192
from draftguitools.gui_snaps import Draft_Snap_Near
193
from draftguitools.gui_snaps import Draft_Snap_Ortho
194
from draftguitools.gui_snaps import Draft_Snap_Special
195
from draftguitools.gui_snaps import Draft_Snap_Dimensions
196
from draftguitools.gui_snaps import Draft_Snap_WorkingPlane
197
from draftguitools.gui_snaps import ShowSnapBar
199
# ---------------------------------------------------------------------------
200
# Adds the icons & commands to the FreeCAD command manager, and sets defaults
201
# ---------------------------------------------------------------------------
205
# modification commands
209
# a global place to look for active draft Command
210
FreeCAD.activeDraftCommand = None