creatumlibre.ui.dialogs.dialog_manager

 1from PyQt6.QtWidgets import QDialog
 2
 3
 4class DialogManager:
 5    """handle the open dialogs"""
 6
 7    def __init__(self):
 8        self.dialog_list = []
 9
10    def add_dialog(self, dialog: QDialog):
11        """add a dialog so, it keeps showing"""
12        self.dialog_list.append(dialog)
13
14    def remove_dialog(self, dialog: QDialog):
15        """remove the doalog from the open list"""
16        self.dialog_list.remove(dialog)
17
18    def show(self, dialog: QDialog):
19        """show or raise modeless, depending on already open"""
20        if dialog not in self.dialog_list:
21            self.add_dialog(dialog)
22            dialog.show()
23        else:
24            dialog.raise_()
25            dialog.activateWindow()
26
27    def exec(self, dialog: QDialog):
28        """Executes the dialog modally if not already shown."""
29        if dialog not in self.dialog_list:
30            self.add_dialog(dialog)
31            dialog.exec()
32        else:
33            dialog.raise_()
34            dialog.activateWindow()
35
36    def update(self, dialog_type: type):
37        """update the selcted dialog"""
38        for dialog in self.dialog_list:
39            if isinstance(dialog, dialog_type):
40                if hasattr(dialog, "refresh"):
41                    dialog.refresh()
class DialogManager:
 5class DialogManager:
 6    """handle the open dialogs"""
 7
 8    def __init__(self):
 9        self.dialog_list = []
10
11    def add_dialog(self, dialog: QDialog):
12        """add a dialog so, it keeps showing"""
13        self.dialog_list.append(dialog)
14
15    def remove_dialog(self, dialog: QDialog):
16        """remove the doalog from the open list"""
17        self.dialog_list.remove(dialog)
18
19    def show(self, dialog: QDialog):
20        """show or raise modeless, depending on already open"""
21        if dialog not in self.dialog_list:
22            self.add_dialog(dialog)
23            dialog.show()
24        else:
25            dialog.raise_()
26            dialog.activateWindow()
27
28    def exec(self, dialog: QDialog):
29        """Executes the dialog modally if not already shown."""
30        if dialog not in self.dialog_list:
31            self.add_dialog(dialog)
32            dialog.exec()
33        else:
34            dialog.raise_()
35            dialog.activateWindow()
36
37    def update(self, dialog_type: type):
38        """update the selcted dialog"""
39        for dialog in self.dialog_list:
40            if isinstance(dialog, dialog_type):
41                if hasattr(dialog, "refresh"):
42                    dialog.refresh()

handle the open dialogs

dialog_list
def add_dialog(self, dialog: PyQt6.QtWidgets.QDialog):
11    def add_dialog(self, dialog: QDialog):
12        """add a dialog so, it keeps showing"""
13        self.dialog_list.append(dialog)

add a dialog so, it keeps showing

def remove_dialog(self, dialog: PyQt6.QtWidgets.QDialog):
15    def remove_dialog(self, dialog: QDialog):
16        """remove the doalog from the open list"""
17        self.dialog_list.remove(dialog)

remove the doalog from the open list

def show(self, dialog: PyQt6.QtWidgets.QDialog):
19    def show(self, dialog: QDialog):
20        """show or raise modeless, depending on already open"""
21        if dialog not in self.dialog_list:
22            self.add_dialog(dialog)
23            dialog.show()
24        else:
25            dialog.raise_()
26            dialog.activateWindow()

show or raise modeless, depending on already open

def exec(self, dialog: PyQt6.QtWidgets.QDialog):
28    def exec(self, dialog: QDialog):
29        """Executes the dialog modally if not already shown."""
30        if dialog not in self.dialog_list:
31            self.add_dialog(dialog)
32            dialog.exec()
33        else:
34            dialog.raise_()
35            dialog.activateWindow()

Executes the dialog modally if not already shown.

def update(self, dialog_type: type):
37    def update(self, dialog_type: type):
38        """update the selcted dialog"""
39        for dialog in self.dialog_list:
40            if isinstance(dialog, dialog_type):
41                if hasattr(dialog, "refresh"):
42                    dialog.refresh()

update the selcted dialog