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:
@ -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)
|
||||
|
Reference in New Issue
Block a user