Merge pull request #24764 from WandererFan/FillTemplate2

[TD]defend against deleted object error
This commit is contained in:
Chris Hennes
2025-11-02 14:49:34 -06:00
committed by GitHub
2 changed files with 47 additions and 39 deletions

View File

@@ -62,37 +62,39 @@ class CommandFillTemplateFields:
"""Return True when the command should be active
or False when it should be disabled (greyed)."""
if App.ActiveDocument:
objs = App.ActiveDocument.Objects
objs = App.ActiveDocument.findObjects(Type="TechDraw::DrawPage")
if not objs:
return false
for obj in objs:
if obj.TypeId == "TechDraw::DrawPage":
file_path = (
App.getResourceDir()
+ "Mod/TechDraw/CSVdata/FillTemplateFields.csv"
)
if os.path.exists(file_path):
listofkeys = [
"CreatedByChkLst",
"ScaleChkLst",
"LabelChkLst",
"CommentChkLst",
"CompanyChkLst",
"LicenseChkLst",
"CreatedDateChkLst",
"LastModifiedDateChkLst",
]
with codecs.open(file_path, encoding="utf-8") as fp:
reader = csv.DictReader(fp)
page = obj
texts = page.Template.EditableTexts
if (
texts
and os.path.exists(file_path)
and listofkeys == reader.fieldnames
and obj.Views != []
):
return True
else:
return False
file_path = (
App.getResourceDir()
+ "Mod/TechDraw/CSVdata/FillTemplateFields.csv"
)
if os.path.exists(file_path):
listofkeys = [
"CreatedByChkLst",
"ScaleChkLst",
"LabelChkLst",
"CommentChkLst",
"CompanyChkLst",
"LicenseChkLst",
"CreatedDateChkLst",
"LastModifiedDateChkLst",
]
with codecs.open(file_path, encoding="utf-8") as fp:
reader = csv.DictReader(fp)
page = obj
texts = page.Template.EditableTexts
if (
texts
and os.path.exists(file_path)
and listofkeys == reader.fieldnames
and obj.Views != []
):
return True
return false
#

View File

@@ -91,11 +91,11 @@ keyLst = []
class TaskFillTemplateFields:
def __init__(self):
objs = App.ActiveDocument.Objects
objs = App.ActiveDocument.findObjects(Type="TechDraw::DrawPage")
for obj in objs:
if (
obj.TypeId == "TechDraw::DrawPage"
and os.path.exists(file_path)
os.path.exists(file_path)
and listofkeys == reader.fieldnames
):
self.page = obj
@@ -117,10 +117,14 @@ class TaskFillTemplateFields:
projgrp_view = None
for pageObj in obj.Views:
if pageObj.isDerivedFrom("TechDraw::DrawViewPart"):
projgrp_view = self.page.Views[0]
elif pageObj.isDerivedFrom("TechDraw::DrawProjGroup"):
projgrp_view = self.page.Views[0]
if (
pageObj.isDerivedFrom("TechDraw::DrawViewPart")
or pageObj.isDerivedFrom("TechDraw::DrawProjGroup")
):
# use the scale from the first DVP or DPG encountered to fill the template's
# Scale editable text.
projgrp_view = pageObj
break
self.texts = self.page.Template.EditableTexts
@@ -429,7 +433,7 @@ class TaskFillTemplateFields:
self.dialog.show()
self.dialog.exec_()
App.setActiveTransaction("Fill template fields")
# App.setActiveTransaction("Fill template fields")
else:
msgBox = QtGui.QMessageBox()
msgTitle = QtCore.QT_TRANSLATE_NOOP(
@@ -520,17 +524,19 @@ class TaskFillTemplateFields:
self.button.setEnabled(False)
def proceed(self):
transactionName = QtCore.QT_TRANSLATE_NOOP("Techdraw_FillTemplateFields", "Fill template fields")
App.setActiveTransaction(transactionName)
i = 0
for cb in self.checkBoxList:
if cb.isChecked():
self.texts[keyLst[i]] = self.lineTextList[i].text()
i += 1
self.page.Template.EditableTexts = self.texts
App.closeActiveTransaction(False)
self.close()
App.closeActiveTransaction()
def close(self):
self.dialog.hide()
App.closeActiveTransaction(True)
return True