feat: added window mode to init args; added MDIWindowMode enum
This commit is contained in:
@ -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)
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
from .mdiarea import MDIArea
|
||||
from .mdiarea import MDIArea, MDIWindowMode
|
||||
from .mdisubplot import MDISubPlot, MDISubMultiPlot
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user