set_window_mode uses the setter methods; added enable_multiple_windows_mode, made the logic symmetric for the different modes

This commit is contained in:
2023-01-20 18:04:55 +01:00
parent 011ce28feb
commit 47293a66ab

View File

@ -29,38 +29,44 @@ class MDIArea(QMdiArea):
menu.addAction("Tile", self.on_tile)
menu.addSeparator()
group = menu.addGroup()
group.addCheckbox("Multiple windows", triggered=self.enable_subwindow_view, state=True)
group.addCheckbox("Multiple windows", triggered=self.enable_multiple_windows_mode, state=True)
group.addCheckbox("Single window", triggered=self.enable_single_window_mode)
group.addCheckbox("Tabbed", triggered=self.enable_tabbed_view)
group.addCheckbox("Tabbed", triggered=self.enable_tabbed_mode)
menu.addSeparator()
menu.addAction("Close all", self.closeAllSubWindows)
menu.addAction("Close inactive", self.closeInactiveSubWindows)
def set_window_mode(self, mode:MDIWindowMode) -> None:
set_mode = self._window_mode_to_menu(mode)
set_mode()
def _window_mode_to_menu(self, mode:MDIWindowMode) -> str:
if mode == MDIWindowMode.SINGLE:
return "Single window"
return self.enable_single_window_mode
if mode == MDIWindowMode.MULTI:
return "Multiple windows"
return self.enable_multiple_windows_mode
if mode == MDIWindowMode.TABS:
return "Tabbed"
def set_window_mode(self, mode:MDIWindowMode) -> None:
checkbox = self._window_mode_to_menu(mode)
self.menu.checkboxes[checkbox].setChecked(True)
return self.enable_tabbed_mode
def on_cascade(self):
self.menu.checkboxes["Multiple windows"].setChecked(True)
self.enable_subwindow_view()
self.enable_multiple_windows_mode()
self.cascadeSubWindows()
def on_tile(self):
self.menu.checkboxes["Multiple windows"].setChecked(True)
self.enable_subwindow_view()
self.enable_multiple_windows_mode()
self.tileSubWindows()
def enable_multiple_windows_mode(self):
self.menu.checkboxes["Multiple windows"].setChecked(True)
self.enable_subwindow_view()
for sub in self.subWindowList():
sub.frame_on()
def enable_single_window_mode(self):
self.menu.checkboxes["Single window"].setChecked(True)
self.enable_subwindow_view()
self.closeInactiveSubWindows()
active = self.activeSubWindow()
@ -68,10 +74,13 @@ class MDIArea(QMdiArea):
active.showMaximized()
active.frame_off()
def enable_tabbed_mode(self):
self.menu.checkboxes["Tabbed"].setChecked(True)
self.enable_tabbed_view()
def enable_subwindow_view(self):
self.setViewMode(QMdiArea.SubWindowView)
for sub in self.subWindowList():
sub.frame_on()
def enable_tabbed_view(self):
self.setViewMode(QMdiArea.TabbedView)