Draft: clean up the utils module a bit, PEP8, style

This commit is contained in:
vocx-fc
2020-05-25 20:27:18 -05:00
committed by Yorik van Havre
parent 6665799aac
commit fea82942d3

View File

@@ -36,12 +36,17 @@ the graphical user interface (GUI).
import os
from PySide import QtCore
import FreeCAD
import FreeCAD as App
import Draft_rc
from draftutils.messages import _msg, _log
from draftutils.messages import _msg, _wrn, _err, _log
from draftutils.translate import _tr
App = FreeCAD
# TODO: move the functions that require the graphical interface
# This module should not import any graphical commands; those should be
# in gui_utils
if App.GuiUp:
import FreeCADGui as Gui
# The module is used to prevent complaints from code checkers (flake8)
True if Draft_rc else False
@@ -113,9 +118,8 @@ def type_check(args_and_types, name="?"):
"""
for v, t in args_and_types:
if not isinstance(v, t):
w = "typecheck[" + str(name) + "]: "
w += str(v) + " is not " + str(t) + "\n"
FreeCAD.Console.PrintWarning(w)
w = "typecheck[{}]: '{}' is not {}".format(name, v, t)
_wrn(w)
raise TypeError("Draft." + str(name))
@@ -158,7 +162,7 @@ def get_param_type(param):
"hideSnapBar", "alwaysShowGrid", "renderPolylineWidth",
"showPlaneTracker", "UsePartPrimitives",
"DiscretizeEllipses", "showUnit",
"Draft_array_fuse", "Draft_array_Link","gridBorder"):
"Draft_array_fuse", "Draft_array_Link", "gridBorder"):
return "bool"
elif param in ("color", "constructioncolor",
"snapcolor", "gridColor"):
@@ -204,8 +208,8 @@ def get_param(param, default=None):
draft_params = "User parameter:BaseApp/Preferences/Mod/Draft"
view_params = "User parameter:BaseApp/Preferences/View"
p = FreeCAD.ParamGet(draft_params)
v = FreeCAD.ParamGet(view_params)
p = App.ParamGet(draft_params)
v = App.ParamGet(view_params)
t = getParamType(param)
# print("getting param ",param, " of type ",t, " default: ",str(default))
if t == "int":
@@ -267,8 +271,8 @@ def set_param(param, value):
draft_params = "User parameter:BaseApp/Preferences/Mod/Draft"
view_params = "User parameter:BaseApp/Preferences/View"
p = FreeCAD.ParamGet(draft_params)
v = FreeCAD.ParamGet(view_params)
p = App.ParamGet(draft_params)
v = App.ParamGet(view_params)
t = getParamType(param)
if t == "int":
@@ -525,21 +529,36 @@ isClone = is_clone
def get_clone_base(obj, strict=False):
"""get_clone_base(obj, [strict])
Returns the object cloned by this object, if any, or this object if
it is no clone.
"""Return the object cloned by this object, if any.
Parameters
----------
obj :
TODO: describe
obj: App::DocumentObject
Any type of object.
strict : bool (default = False)
If strict is True, if this object is not a clone,
this function returns False
strict: bool, optional
It defaults to `False`.
If it is `True`, and this object is not a clone,
this function will return `False`.
Returns
-------
App::DocumentObject
It `obj` is a `Draft Clone`, it will return the first object
that is in its `Objects` property.
If `obj` has a `CloneOf` property, it will search iteratively
inside the object pointed to by this property.
obj
If `obj` is not a `Draft Clone`, nor it has a `CloneOf` property,
it will return the same `obj`, as long as `strict` is `False`.
False
It will return `False` if `obj` is not a clone,
and `strict` is `True`.
"""
if hasattr(obj,"CloneOf"):
if hasattr(obj, "CloneOf"):
if obj.CloneOf:
return get_clone_base(obj.CloneOf)
if get_type(obj) == "Clone":
@@ -566,7 +585,7 @@ def get_group_names():
Otherwise, return an empty list.
"""
glist = []
doc = FreeCAD.ActiveDocument
doc = App.ActiveDocument
for obj in doc.Objects:
if (obj.isDerivedFrom("App::DocumentObjectGroup")
or getType(obj) in ("Floor", "Building", "Site")):
@@ -588,7 +607,7 @@ def ungroup(obj):
Any type of scripted object.
"""
for name in getGroupNames():
group = FreeCAD.ActiveDocument.getObject(name)
group = App.ActiveDocument.getObject(name)
if obj in group.Group:
# The list of objects cannot be modified directly,
# so a new list is created, this new list is modified,
@@ -647,8 +666,8 @@ def shapify(obj):
else:
name = getRealName(obj.Name)
FreeCAD.ActiveDocument.removeObject(obj.Name)
newobj = FreeCAD.ActiveDocument.addObject("Part::Feature", name)
App.ActiveDocument.removeObject(obj.Name)
newobj = App.ActiveDocument.addObject("Part::Feature", name)
newobj.Shape = shape
return newobj
@@ -869,11 +888,11 @@ compareObjects = compare_objects
def load_svg_patterns():
"""Load the default Draft SVG patterns and user defined patterns.
The SVG patterns are added as a dictionary to the `FreeCAD.svgpatterns`
The SVG patterns are added as a dictionary to the `App.svgpatterns`
attribute.
"""
import importSVG
FreeCAD.svgpatterns = {}
App.svgpatterns = {}
# Getting default patterns in the resource file
patfiles = QtCore.QDir(":/patterns").entryList()
@@ -885,7 +904,7 @@ def load_svg_patterns():
if p:
for k in p:
p[k] = [p[k], file]
FreeCAD.svgpatterns.update(p)
App.svgpatterns.update(p)
# Get patterns in a user defined file
altpat = getParam("patternFile", "")
@@ -897,7 +916,7 @@ def load_svg_patterns():
if p:
for k in p:
p[k] = [p[k], file]
FreeCAD.svgpatterns.update(p)
App.svgpatterns.update(p)
loadSvgPatterns = load_svg_patterns
@@ -909,16 +928,16 @@ def svg_patterns():
Returns
-------
dict
Returns `FreeCAD.svgpatterns` if it exists.
Returns `App.svgpatterns` if it exists.
Otherwise it calls `load_svg_patterns` to create it
before returning it.
"""
if hasattr(FreeCAD, "svgpatterns"):
return FreeCAD.svgpatterns
if hasattr(App, "svgpatterns"):
return App.svgpatterns
else:
loadSvgPatterns()
if hasattr(FreeCAD, "svgpatterns"):
return FreeCAD.svgpatterns
if hasattr(App, "svgpatterns"):
return App.svgpatterns
return {}
@@ -926,10 +945,8 @@ svgpatterns = svg_patterns
def get_rgb(color, testbw=True):
"""getRGB(color,[testbw])
Return a rgb value #000000 from a freecad color
"""Return an RRGGBB value #000000 from a FreeCAD color.
Parameters
----------
testwb : bool (default = True)
@@ -941,8 +958,8 @@ def get_rgb(color, testbw=True):
col = "#"+r+g+b
if testbw:
if col == "#ffffff":
#print(getParam('SvgLinesBlack'))
if getParam('SvgLinesBlack',True):
# print(getParam('SvgLinesBlack'))
if getParam('SvgLinesBlack', True):
col = "#000000"
return col
@@ -1000,9 +1017,9 @@ def get_DXF(obj,direction=None):
import Drawing
import DraftVecUtils
if not direction:
direction = FreeCAD.Vector(0,0,-1)
direction = App.Vector(0,0,-1)
if DraftVecUtils.isNull(direction):
direction = FreeCAD.Vector(0,0,-1)
direction = App.Vector(0,0,-1)
try:
d = Drawing.projectToDXF(obj.Shape,direction)
except:
@@ -1089,7 +1106,7 @@ def filter_objects_for_modifiers(objects, isCopied=False):
warningMessage = _tr("%s shares a base with %d other objects. Please check if you want to modify this.") % (obj.Name,len(parents) - 1)
App.Console.PrintError(warningMessage)
if App.GuiUp:
FreeCADGui.getMainWindow().showMessage(warningMessage, 0)
Gui.getMainWindow().showMessage(warningMessage, 0)
filteredObjects.append(obj.Base)
elif hasattr(obj,"Placement") and obj.getEditorMode("Placement") == ["ReadOnly"] and not isCopied:
App.Console.PrintError(_tr("%s cannot be modified because its placement is readonly.") % obj.Name)
@@ -1118,7 +1135,7 @@ def convert_draft_texts(textslist=[]):
if not isinstance(textslist,list):
textslist = [textslist]
if not textslist:
for o in FreeCAD.ActiveDocument.Objects:
for o in App.ActiveDocument.Objects:
if o.TypeId == "App::Annotation":
textslist.append(o)
todelete = []
@@ -1135,7 +1152,7 @@ def convert_draft_texts(textslist=[]):
g.append(obj)
p.Group = g
for n in todelete:
FreeCAD.ActiveDocument.removeObject(n)
App.ActiveDocument.removeObject(n)
convertDraftTexts = convert_draft_texts