Merge pull request #1 from Ondsel-Development/8892fixes

fix bugs
This commit is contained in:
Morgan 'ARR!' Allen
2023-06-30 08:22:56 -07:00
committed by GitHub

View File

@@ -45,6 +45,40 @@ translate = FreeCAD.Qt.translate
class ObjectCustom(PathOp.ObjectOp): class ObjectCustom(PathOp.ObjectOp):
@classmethod
def propertyEnumerations(self, dataType="data"):
"""customOpPropertyEnumerations(dataType="data")... return property enumeration lists of specified dataType.
Args:
dataType = 'data', 'raw', 'translated'
Notes:
'data' is list of internal string literals used in code
'raw' is list of (translated_text, data_string) tuples
'translated' is list of translated string literals
"""
# Enumeration lists for App::PropertyEnumeration properties
enums = {
"Source": [
(translate("PathCustom", "Text"), "Text"),
(translate("PathCustom", "File"), "File"),
],
}
if dataType == "raw":
return enums
data = list()
idx = 0 if dataType == "translated" else 1
Path.Log.debug(enums)
for k, v in enumerate(enums):
data.append((v, [tup[idx] for tup in enums[v]]))
Path.Log.debug(data)
return data
def opFeatures(self, obj): def opFeatures(self, obj):
return PathOp.FeatureTool | PathOp.FeatureCoolant return PathOp.FeatureTool | PathOp.FeatureCoolant
@@ -53,7 +87,7 @@ class ObjectCustom(PathOp.ObjectOp):
"App::PropertyEnumeration", "App::PropertyEnumeration",
"Source", "Source",
"Path", "Path",
"Source of gcode (text, file, ...)" "Source of gcode (text, file, ...)",
) )
obj.addProperty( obj.addProperty(
@@ -70,29 +104,38 @@ class ObjectCustom(PathOp.ObjectOp):
QT_TRANSLATE_NOOP("App::Property", "The G-code to be inserted"), QT_TRANSLATE_NOOP("App::Property", "The G-code to be inserted"),
) )
# populate the property enumerations
for n in self.propertyEnumerations():
setattr(obj, n[0], n[1])
obj.Proxy = self obj.Proxy = self
self.setEditorModes(obj) self.setEditorModes(obj)
def opPropertyEnumerations(self, dateType="data"):
enum = super().opPropertyEnumerations(dateType)
props = [
(translate("PathCustom", "Text"), "Text"),
(translate("PathCustom", "File"), "File")
]
if dateType == "raw":
enum["Source"] = props
return enum
enum.append(("Source", [ p[1][1] for p in enumerate(props) ]))
return enum
def onChanged(self, obj, prop): def onChanged(self, obj, prop):
if prop == "Source": if prop == "Source":
self.setEditorModes(obj) self.setEditorModes(obj)
def opOnDocumentRestored(self, obj):
if not hasattr(obj, "Source"):
obj.addProperty(
"App::PropertyEnumeration",
"Source",
"Path",
"Source of gcode (text, file, ...)",
)
if not hasattr(obj, "GcodeFile"):
obj.addProperty(
"App::PropertyFile",
"GcodeFile",
"Path",
"File containing gcode to be inserted",
)
# populate the property enumerations
for n in self.propertyEnumerations():
setattr(obj, n[0], n[1])
def onDocumentRestore(self, obj): def onDocumentRestore(self, obj):
self.setEditorModes(self, obj) self.setEditorModes(self, obj)
@@ -130,12 +173,21 @@ class ObjectCustom(PathOp.ObjectOp):
# could not determine the path # could not determine the path
if not gcode_file: if not gcode_file:
Path.Log.error(translate("PathCustom", "Custom file %s could not be found.") % obj.GcodeFile) Path.Log.error(
translate("PathCustom", "Custom file %s could not be found.")
% obj.GcodeFile
)
with open(gcode_file) as fd: with open(gcode_file) as fd:
for l in fd.readlines(): for l in fd.readlines():
try:
newcommand = Path.Command(str(l)) newcommand = Path.Command(str(l))
self.commandlist.append(newcommand) self.commandlist.append(newcommand)
except ValueError:
Path.Log.warning(
translate("PathCustom", "Invalid Gcode line: %s") % l
)
continue
self.commandlist.append(Path.Command("(End Custom)")) self.commandlist.append(Path.Command("(End Custom)"))