Merge pull request #7455 from mlampert/bugfix/setup-sheet-stepover
[PATH]: bugfix/setup-sheet-stepover
This commit is contained in:
@@ -65,9 +65,11 @@ class Property(object):
|
||||
def setupProperty(self, obj, name, category, value):
|
||||
created = False
|
||||
if not hasattr(obj, name):
|
||||
PathLog.track('add', obj.Name, name, self.propType)
|
||||
obj.addProperty(self.propType, name, category, self.info)
|
||||
self.initProperty(obj, name)
|
||||
created = True
|
||||
PathLog.track('set', obj.Name, name, value, type(value))
|
||||
setattr(obj, name, value)
|
||||
return created
|
||||
|
||||
@@ -120,11 +122,6 @@ class PropertyLength(PropertyQuantity):
|
||||
return "Length"
|
||||
|
||||
|
||||
class PropertyPercent(Property):
|
||||
def typeString(self):
|
||||
return "Percent"
|
||||
|
||||
|
||||
class PropertyFloat(Property):
|
||||
def typeString(self):
|
||||
return "Float"
|
||||
@@ -141,6 +138,11 @@ class PropertyInteger(Property):
|
||||
return int(string)
|
||||
|
||||
|
||||
class PropertyPercent(PropertyInteger):
|
||||
def typeString(self):
|
||||
return "Percent"
|
||||
|
||||
|
||||
class PropertyBool(Property):
|
||||
def typeString(self):
|
||||
return "Bool"
|
||||
|
||||
@@ -23,9 +23,11 @@
|
||||
import FreeCAD
|
||||
import PathScripts.PathSetupSheet as PathSetupSheet
|
||||
import PathScripts.PathLog as PathLog
|
||||
import json
|
||||
import sys
|
||||
|
||||
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
|
||||
#PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
|
||||
#PathLog.trackModule(PathLog.thisModule())
|
||||
|
||||
from PathTests.PathTestUtils import PathTestBase
|
||||
|
||||
@@ -33,6 +35,22 @@ from PathTests.PathTestUtils import PathTestBase
|
||||
def refstring(string):
|
||||
return string.replace(" u'", " '")
|
||||
|
||||
class SomeOp (object):
|
||||
def __init__(self, obj):
|
||||
PathLog.track(obj, type(obj))
|
||||
obj.addProperty('App::PropertyPercent', 'StepOver', 'Base', 'Some help you are')
|
||||
|
||||
@classmethod
|
||||
def SetupProperties(cls):
|
||||
return ['StepOver']
|
||||
|
||||
@classmethod
|
||||
def Create(cls, name, obj=None, parentJob=None):
|
||||
PathLog.track(name, obj)
|
||||
if obj is None:
|
||||
obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)
|
||||
obj.Proxy = SomeOp(obj)
|
||||
return obj
|
||||
|
||||
class TestPathSetupSheet(PathTestBase):
|
||||
def setUp(self):
|
||||
@@ -300,3 +318,32 @@ class TestPathSetupSheet(PathTestBase):
|
||||
dec = s2.decodeTemplateAttributes(encoded)
|
||||
# pick one
|
||||
self.assertEqual(dec["01"][0]["11"], "SetupSheet001.y")
|
||||
|
||||
def test20(self):
|
||||
"""Verify SetupSheet template op attributes roundtrip."""
|
||||
|
||||
opname = 'whoop'
|
||||
|
||||
o1 = PathSetupSheet.Create()
|
||||
|
||||
PathSetupSheet.RegisterOperation(opname, SomeOp.Create, SomeOp.SetupProperties)
|
||||
ptt = PathSetupSheet._RegisteredOps[opname].prototype('whoopsy')
|
||||
pptt = ptt.getProperty('StepOver')
|
||||
pptt.setupProperty(o1, PathSetupSheet.OpPropertyName(opname, pptt.name), PathSetupSheet.OpPropertyGroup(opname), 75)
|
||||
|
||||
# save setup sheet in json "file"
|
||||
attrs = o1.Proxy.templateAttributes(False, False, False, False, [opname])
|
||||
encdd = o1.Proxy.encodeTemplateAttributes(attrs)
|
||||
j1 = json.dumps({'SetupSheet' : encdd}, sort_keys=True, indent=2)
|
||||
|
||||
# restore setup sheet from json "file"
|
||||
j2 = json.loads(j1)
|
||||
|
||||
o2 = PathSetupSheet.Create()
|
||||
o2.Proxy.setFromTemplate(j2['SetupSheet'])
|
||||
|
||||
op = SomeOp.Create(opname)
|
||||
self.assertEqual(op.StepOver, 0)
|
||||
o2.Proxy.setOperationProperties(op, opname)
|
||||
self.assertEqual(op.StepOver, 75)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user