feat: added window mode to init args; added MDIWindowMode enum

This commit is contained in:
2023-01-18 16:47:32 +01:00
parent 4c8648df22
commit edffc6e556
3 changed files with 15 additions and 4 deletions

View File

@ -4,7 +4,7 @@ from PyQt5.QtWidgets import QMainWindow, QSplitter
from . import assets
from .dictlist import DictList
from .exampledata import exampledata
from .mdi import MDIArea, MDISubMultiPlot, MDISubPlot
from .mdi import MDIArea, MDISubMultiPlot, MDISubPlot, MDIWindowMode
from .menus import BarMenu
from .plotdesc import PlotDescription
from .rpc import RPCServerThread
@ -15,7 +15,7 @@ class MainWindow(QMainWindow):
sig_make_new_plot = pyqtSignal(str, PlotDescription)
def __init__(self, *args, title="grum", host="localhost", port=8000, add_examples=False, **kwargs):
def __init__(self, *args, title="grum", host="localhost", port=8000, add_examples=False, window_mode=MDIWindowMode.SINGLE, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle(title)
self.setWindowIcon(assets.icon())
@ -39,6 +39,7 @@ class MainWindow(QMainWindow):
menu.addCheckbox("Open new plots", state=True)
self.mdi = mdi = MDIArea(bar)
mdi.set_window_mode(window_mode)
splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(lst)

View File

@ -1,5 +1,5 @@
from .mdiarea import MDIArea
from .mdiarea import MDIArea, MDIWindowMode
from .mdisubplot import MDISubPlot, MDISubMultiPlot

View File

@ -1,10 +1,14 @@
from PyQt5.QtWidgets import QMdiArea, QAction
import enum
from PyQt5.QtWidgets import QMdiArea
from PyQt5.QtGui import QPainter
from .. import assets
from ..theme import MDI_BKG
from ..menus import BarMenu
class MDIWindowMode(str, enum.Enum):
SINGLE = "single"
MULTI = "multi"
class MDIArea(QMdiArea):
@ -29,6 +33,12 @@ class MDIArea(QMdiArea):
menu.addAction("Close all", self.closeAllSubWindows)
menu.addAction("Close inactive", self.closeInactiveSubWindows)
def _window_mode_to_menu(self, mode:MDIWindowMode) -> str:
return "Single window" if mode == MDIWindowMode.SINGLE else "Multiple windows"
def set_window_mode(self, mode:MDIWindowMode) -> None:
checkbox = self._window_mode_to_menu(mode)
self.menu.checkboxes[checkbox].setChecked(True)
def on_cascade(self):
self.menu.checkboxes["Multiple windows"].setChecked(True)