Operation settings support for both engrave ops

This commit is contained in:
Markus Lampert
2018-08-25 20:10:04 -07:00
parent bf04fa29de
commit cf4d108389
6 changed files with 43 additions and 8 deletions

View File

@@ -119,9 +119,16 @@ class ObjectChamfer(PathEngraveBase.ObjectOp):
obj.ExtraDepth = '0.1 mm'
obj.Join = 'Round'
def Create(name):
def SetupProperties():
setup = []
setup.append('Width')
setup.append('ExtraDepth')
return setup
def Create(name, obj = None):
'''Create(name) ... Creates and returns a Chamfer operation.'''
obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)
if obj is None:
obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)
proxy = ObjectChamfer(obj, name)
return obj

View File

@@ -104,7 +104,8 @@ Command = PathOpGui.SetupOperation('Chamfer',
TaskPanelOpPage,
'Path-Chamfer',
QtCore.QT_TRANSLATE_NOOP("PathChamfer", "Chamfer"),
QtCore.QT_TRANSLATE_NOOP("PathChamfer", "Creates a Chamfer Path along Edges or around Faces"))
QtCore.QT_TRANSLATE_NOOP("PathChamfer", "Creates a Chamfer Path along Edges or around Faces"),
PathChamfer.SetupProperties)
FreeCAD.Console.PrintLog("Loading PathChamferGui... done\n")

View File

@@ -150,9 +150,13 @@ class ObjectEngrave(PathEngraveBase.ObjectOp):
job = PathUtils.findParentJob(obj)
self.opSetDefaultValues(obj, job)
def Create(name):
def SetupProperties():
return [ "StartVertex" ]
def Create(name, obj = None):
'''Create(name) ... Creates and returns an Engrave operation.'''
obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)
if obj is None:
obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)
proxy = ObjectEngrave(obj, name)
return obj

View File

@@ -133,6 +133,7 @@ Command = PathOpGui.SetupOperation('Engrave',
TaskPanelOpPage,
'Path-Engrave',
QtCore.QT_TRANSLATE_NOOP("PathEngrave", "Engrave"),
QtCore.QT_TRANSLATE_NOOP("PathEngrave", "Creates an Engraving Path around a Draft ShapeString"))
QtCore.QT_TRANSLATE_NOOP("PathEngrave", "Creates an Engraving Path around a Draft ShapeString"),
PathEngrave.SetupProperties)
FreeCAD.Console.PrintLog("Loading PathEngraveGui... done\n")

View File

@@ -122,6 +122,10 @@ class PropertyFloat(Property):
def typeString(self):
return "Float"
class PropertyInteger(Property):
def typeString(self):
return "Integer"
class PropertyBool(Property):
def typeString(self):
return "Bool"
@@ -137,8 +141,10 @@ class OpPrototype(object):
'App::PropertyDistance': PropertyDistance,
'App::PropertyEnumeration': PropertyEnumeration,
'App::PropertyFloat': PropertyFloat,
'App::PropertyInteger': PropertyInteger,
'App::PropertyLength': PropertyLength,
'App::PropertyLink': Property,
'App::PropertyLinkList': Property,
'App::PropertyLinkSubListGlobal': Property,
'App::PropertyPercent': PropertyPercent,
'App::PropertyString': PropertyString,
@@ -149,13 +155,13 @@ class OpPrototype(object):
}
def __init__(self, name):
self.name = name
self.Label = name
self.properties = {}
self.DoNotSetDefaultValues = True
self.Proxy = None
def __setattr__(self, name, val):
if name in ['name', 'DoNotSetDefaultValues', 'properties', 'Proxy']:
if name in ['Label', 'DoNotSetDefaultValues', 'properties', 'Proxy']:
if name == 'Proxy':
val = None # make sure the proxy is never set
return super(self.__class__, self).__setattr__(name, val)

View File

@@ -110,6 +110,7 @@ class _PropertyLengthEditor(_PropertyEditor):
self.prop.setValue(FreeCAD.Units.Quantity(widget.text()))
class _PropertyPercentEditor(_PropertyEditor):
def widget(self, parent):
return QtGui.QSpinBox(parent)
@@ -123,6 +124,20 @@ class _PropertyPercentEditor(_PropertyEditor):
def setModelData(self, widget):
self.prop.setValue(widget.value())
class _PropertyIntegerEditor(_PropertyEditor):
def widget(self, parent):
return QtGui.QSpinBox(parent)
def setEditorData(self, widget):
value = self.prop.getValue()
if value is None:
value = 0
widget.setValue(value)
def setModelData(self, widget):
self.prop.setValue(widget.value())
class _PropertyFloatEditor(_PropertyEditor):
def widget(self, parent):
@@ -143,6 +158,7 @@ _EditorFactory = {
PathSetupSheetOpPrototype.PropertyDistance: _PropertyLengthEditor,
PathSetupSheetOpPrototype.PropertyEnumeration: _PropertyEnumEditor,
PathSetupSheetOpPrototype.PropertyFloat: _PropertyFloatEditor,
PathSetupSheetOpPrototype.PropertyInteger: _PropertyIntegerEditor,
PathSetupSheetOpPrototype.PropertyLength: _PropertyLengthEditor,
PathSetupSheetOpPrototype.PropertyPercent: _PropertyPercentEditor,
PathSetupSheetOpPrototype.PropertyString: _PropertyStringEditor,