forked from IPKM/nmreval
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
|
from __future__ import annotations
|
||
|
|
||
|
from ..Qt import QtWidgets, QtCore
|
||
|
|
||
|
from nmreval.lib.logger import logger
|
||
|
from ..graphs.graphwindow import QGraphWindow
|
||
|
|
||
|
|
||
|
class MdiAreaTile(QtWidgets.QMdiArea):
|
||
|
def __init__(self, parent=None):
|
||
|
super().__init__(parent=parent)
|
||
|
|
||
|
def tileSubWindowsVertically(self):
|
||
|
window_list = self.subWindowList()
|
||
|
rect = QtCore.QRect(0, 0, self.width(), int(self.height() / len(window_list)))
|
||
|
pos = QtCore.QPoint(0, 0)
|
||
|
|
||
|
for win in window_list:
|
||
|
win.setGeometry(rect)
|
||
|
win.move(pos)
|
||
|
|
||
|
pos.setY(pos.y() + win.height())
|
||
|
|
||
|
def tileSubWindowsHorizontally(self):
|
||
|
window_list = self.subWindowList()
|
||
|
rect = QtCore.QRect(0, 0, int(self.width() / len(window_list)), self.height())
|
||
|
pos = QtCore.QPoint(0, 0)
|
||
|
|
||
|
for win in window_list:
|
||
|
win.setGeometry(rect)
|
||
|
win.move(pos)
|
||
|
|
||
|
pos.setX(pos.x() + win.width())
|
||
|
|
||
|
def addSubWindow(self, widget: QtWidgets.QWidget, flags: QtCore.Qt.WindowFlags = QtCore.Qt.WindowFlags()) -> QtWidgets.QMdiSubWindow | None:
|
||
|
subwindow = super().addSubWindow(widget)
|
||
|
subwindow.setOption(QtWidgets.QMdiSubWindow.RubberBandMove, True)
|
||
|
subwindow.setOption(QtWidgets.QMdiSubWindow.RubberBandResize, True)
|
||
|
subwindow.setMinimumHeight(240)
|
||
|
subwindow.setMinimumWidth(360)
|
||
|
|
||
|
return subwindow
|
||
|
|
||
|
def setActiveSubWidget(self, key: str):
|
||
|
for win in self.subWindowList():
|
||
|
wdgt = win.widget()
|
||
|
if isinstance(wdgt, QGraphWindow) and wdgt.id == key:
|
||
|
self.setActiveSubWindow(win)
|
||
|
break
|