BIM: fix several dialog regressions (#24590)

* BIM: fix BIM_Classification dialog regression

* Fixed issues with more scenarios
This commit is contained in:
Roy-043
2025-10-20 05:23:05 +02:00
committed by GitHub
parent 5abf4da75e
commit f4bfbb47fa
5 changed files with 41 additions and 40 deletions

View File

@@ -159,7 +159,7 @@ class BIM_Classification:
self.form.buttonRename.clicked.connect(self.rename)
self.form.search.textEdited.connect(self.updateClasses)
self.form.buttonBox.accepted.connect(self.accept)
self.form.buttonBox.rejected.connect(self.reject)
self.form.rejected.connect(self.reject) # also triggered by self.form.buttonBox.rejected
self.form.groupMode.currentIndexChanged.connect(self.updateObjects)
self.form.treeClass.itemDoubleClicked.connect(self.apply)
self.form.search.up.connect(self.onUpArrow)
@@ -604,8 +604,7 @@ class BIM_Classification:
# Close the form if user has pressed Enter and did not
# select anything
if len(self.form.treeClass.selectedItems()) < 1:
self.form.close()
return
return self.reject()
code = self.form.treeClass.selectedItems()[0].text(0)
pl = self.isEditing.PropertiesList
@@ -630,7 +629,6 @@ class BIM_Classification:
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/BIM")
p.SetInt("BimClassificationDialogWidth", self.form.width())
p.SetInt("BimClassificationDialogHeight", self.form.height())
self.form.hide()
return self.reject()
def reject(self):

View File

@@ -102,7 +102,7 @@ class BIM_IfcElements:
else: # Qt version < 6.7.0
self.form.onlyVisible.stateChanged.connect(self.update)
self.form.buttonBox.accepted.connect(self.accept)
self.form.buttonBox.rejected.connect(self.reject)
self.form.rejected.connect(self.reject) # also triggered by self.form.buttonBox.rejected
self.form.globalMode.currentIndexChanged.connect(self.onObjectTypeChanged)
self.form.globalMaterial.currentIndexChanged.connect(self.onMaterialChanged)
@@ -442,41 +442,43 @@ class BIM_IfcElements:
import Draft
from PySide import QtCore, QtGui
if getattr(self, "form", None) is None:
return
if FreeCADGui.Control.activeDialog():
QtCore.QTimer.singleShot(500, self.checkMatChanged)
else:
mats = [
o.Name
for o in FreeCAD.ActiveDocument.Objects
if (o.isDerivedFrom("App::MaterialObject") or (Draft.getType(o) == "MultiMaterial"))
]
if len(mats) != len(self.materials):
newmats = [m for m in mats if not m in self.materials]
self.materials = mats
self.form.globalMaterial.clear()
self.form.globalMaterial.addItem(" ")
self.form.globalMaterial.addItem(translate("BIM", "Create new material"))
self.form.globalMaterial.addItem(translate("BIM", "Create new multi-material"))
for m in self.materials:
o = FreeCAD.ActiveDocument.getObject(m)
if o:
self.form.globalMaterial.addItem(
o.Label, QtGui.QIcon(":/icons/Arch_Material.svg")
)
changed = False
sel = self.form.tree.selectedIndexes()
for index in sel:
if index.column() == 2:
for mat in newmats:
mobj = FreeCAD.ActiveDocument.getObject(mat)
if mobj:
item = self.model.itemFromIndex(index)
if item.toolTip() != mat:
item.setText(mobj.Label)
item.setToolTip(mat)
changed = True
if changed:
self.update()
return
mats = [
o.Name
for o in FreeCAD.ActiveDocument.Objects
if (o.isDerivedFrom("App::MaterialObject") or (Draft.getType(o) == "MultiMaterial"))
]
if len(mats) != len(self.materials):
newmats = [m for m in mats if not m in self.materials]
self.materials = mats
self.form.globalMaterial.clear()
self.form.globalMaterial.addItem(" ")
self.form.globalMaterial.addItem(translate("BIM", "Create new material"))
self.form.globalMaterial.addItem(translate("BIM", "Create new multi-material"))
for m in self.materials:
o = FreeCAD.ActiveDocument.getObject(m)
if o:
self.form.globalMaterial.addItem(
o.Label, QtGui.QIcon(":/icons/Arch_Material.svg")
)
changed = False
sel = self.form.tree.selectedIndexes()
for index in sel:
if index.column() == 2:
for mat in newmats:
mobj = FreeCAD.ActiveDocument.getObject(mat)
if mobj:
item = self.model.itemFromIndex(index)
if item.toolTip() != mat:
item.setText(mobj.Label)
item.setToolTip(mat)
changed = True
if changed:
self.update()
def accept(self):
# get current state of tree

View File

@@ -146,7 +146,7 @@ class BIM_IfcProperties:
self.form.onlySelected.stateChanged.connect(self.onSelected)
self.form.onlyMatches.stateChanged.connect(self.update)
self.form.buttonBox.accepted.connect(self.accept)
self.form.buttonBox.rejected.connect(self.reject)
self.form.rejected.connect(self.reject) # also triggered by self.form.buttonBox.rejected
self.form.searchField.currentIndexChanged.connect(self.update)
self.form.searchField.editTextChanged.connect(self.update)
self.form.comboProperty.currentIndexChanged.connect(self.addProperty)

View File

@@ -125,7 +125,7 @@ class BIM_IfcQuantities:
self.form.quantities.setItemDelegate(QtGui.QStyledItemDelegate())
self.qmodel.dataChanged.connect(self.setChecked)
self.form.buttonBox.accepted.connect(self.accept)
self.form.buttonBox.rejected.connect(self.reject)
self.form.rejected.connect(self.reject) # also triggered by self.form.buttonBox.rejected
self.form.quantities.clicked.connect(self.onClickTree)
if hasattr(self.form.onlyVisible, "checkStateChanged"): # Qt version >= 6.7.0
self.form.onlyVisible.checkStateChanged.connect(self.update)

View File

@@ -75,6 +75,7 @@ class BIM_ProjectManager:
self.form.presets.currentIndexChanged.connect(self.getPreset)
self.form.buttonOK.clicked.connect(self.accept)
self.form.buttonCancel.clicked.connect(self.reject)
self.form.rejected.connect(self.reject)
self.fillPresets()
# Detect existing objects