BIM: Revise close panel on doc close solution (#21302)

* BIM: Revise close panel on doc close solution

Use built-in feature to close the task panels. See #21253.

* Keep self.doc
This commit is contained in:
Roy-043
2025-05-23 11:49:55 +02:00
committed by GitHub
parent 41dad48e5c
commit 5cb88a63d0
2 changed files with 13 additions and 12 deletions

View File

@@ -288,7 +288,7 @@ class BIMWorkbench(Workbench):
FreeCADGui.addCommand("BIM_Create2DViews", BIM_Create2DViews(self.create_2dviews))
insert_at_index = self.annotationtools.index("BIM_TDPage")
self.annotationtools.insert(insert_at_index, "BIM_Create2DViews")
# load rebar tools (Reinforcement addon)
try:
@@ -507,7 +507,6 @@ class BIMWorkbench(Workbench):
import BimStatus
from nativeifc import ifc_observer
from draftutils import grid_observer
from draftutils import doc_observer
PARAMS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/BIM")
@@ -517,7 +516,6 @@ class BIMWorkbench(Workbench):
FreeCADGui.Snapper.show()
WorkingPlane._view_observer_start()
grid_observer._view_observer_setup()
doc_observer._doc_observer_start()
if PARAMS.GetBool("FirstTime", True) and (not hasattr(FreeCAD, "TestEnvironment")):
todo.ToDo.delay(FreeCADGui.runCommand, "BIM_Welcome")
@@ -588,7 +586,6 @@ class BIMWorkbench(Workbench):
import WorkingPlane
from nativeifc import ifc_observer
from draftutils import grid_observer
from draftutils import doc_observer
PARAMS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/BIM")
@@ -602,7 +599,6 @@ class BIMWorkbench(Workbench):
FreeCADGui.Snapper.hide()
WorkingPlane._view_observer_stop()
grid_observer._view_observer_setup()
doc_observer._doc_observer_stop()
# print("Deactivating status icon")
todo.ToDo.delay(BimStatus.setStatusIcons, False)

View File

@@ -615,18 +615,23 @@ class DraftToolBar:
# Interface modes
#---------------------------------------------------------------------------
def taskUi(self,title="Draft",extra=None,icon="Draft_Draft"):
def _show_dialog(self, panel):
task = FreeCADGui.Control.showDialog(panel)
task.setDocumentName(FreeCADGui.ActiveDocument.Document.Name)
task.setAutoCloseOnDeletedDocument(True)
def taskUi(self,title="Draft", extra=None, icon="Draft_Draft"):
# reset InputField values
self.reset_ui_values()
self.isTaskOn = True
todo.delay(FreeCADGui.Control.closeDialog,None)
todo.delay(FreeCADGui.Control.closeDialog, None)
self.baseWidget = DraftBaseWidget()
self.layout = QtWidgets.QVBoxLayout(self.baseWidget)
self.setupToolBar(task=True)
self.retranslateUi(self.baseWidget)
self.panel = DraftTaskPanel(self.baseWidget,extra)
todo.delay(FreeCADGui.Control.showDialog,self.panel)
self.setTitle(title,icon)
self.panel = DraftTaskPanel(self.baseWidget, extra)
todo.delay(self._show_dialog, self.panel)
self.setTitle(title, icon)
def redraw(self):
"""utility function that is performed after each clicked point"""
@@ -922,9 +927,9 @@ class DraftToolBar:
if self.callback:
self.callback()
return True
todo.delay(FreeCADGui.Control.closeDialog,None)
todo.delay(FreeCADGui.Control.closeDialog, None)
panel = TaskPanel(extra, on_close_call)
todo.delay(FreeCADGui.Control.showDialog,panel)
todo.delay(self._show_dialog, panel)
#---------------------------------------------------------------------------