forked from M-Labs/artiq
gui: basic MDI area
This commit is contained in:
parent
b9bce92bbb
commit
aa5f6a5aba
|
@ -93,6 +93,7 @@ def main():
|
||||||
status_bar = QtWidgets.QStatusBar()
|
status_bar = QtWidgets.QStatusBar()
|
||||||
status_bar.showMessage("Connected to {}".format(args.server))
|
status_bar.showMessage("Connected to {}".format(args.server))
|
||||||
main_window.setStatusBar(status_bar)
|
main_window.setStatusBar(status_bar)
|
||||||
|
main_window.setCentralWidget(QtWidgets.QMdiArea())
|
||||||
|
|
||||||
# create UI components
|
# create UI components
|
||||||
expmgr = experiments.ExperimentManager(main_window,
|
expmgr = experiments.ExperimentManager(main_window,
|
||||||
|
|
|
@ -5,8 +5,7 @@ from collections import OrderedDict
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
|
|
||||||
from artiq.gui.tools import (LayoutWidget, log_level_to_name,
|
from artiq.gui.tools import LayoutWidget, log_level_to_name
|
||||||
QDockWidgetCloseDetect)
|
|
||||||
from artiq.gui.entries import argty_to_entry
|
from artiq.gui.entries import argty_to_entry
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,11 +131,12 @@ class _ArgumentEditor(QtWidgets.QTreeWidget):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class _ExperimentDock(QDockWidgetCloseDetect):
|
class _ExperimentDock(QtWidgets.QMdiSubWindow):
|
||||||
|
sigClosed = QtCore.pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, manager, expurl):
|
def __init__(self, manager, expurl):
|
||||||
name = "Exp: " + expurl
|
QtWidgets.QMdiSubWindow.__init__(self)
|
||||||
QDockWidgetCloseDetect.__init__(self, name)
|
self.setWindowTitle(expurl)
|
||||||
self.setObjectName(name)
|
|
||||||
|
|
||||||
self.layout = QtWidgets.QGridLayout()
|
self.layout = QtWidgets.QGridLayout()
|
||||||
top_widget = QtWidgets.QWidget()
|
top_widget = QtWidgets.QWidget()
|
||||||
|
@ -294,6 +294,10 @@ class _ExperimentDock(QDockWidgetCloseDetect):
|
||||||
self.argeditor = _ArgumentEditor(self.manager, self, self.expurl)
|
self.argeditor = _ArgumentEditor(self.manager, self, self.expurl)
|
||||||
self.layout.addWidget(self.argeditor, 0, 0, 1, 5)
|
self.layout.addWidget(self.argeditor, 0, 0, 1, 5)
|
||||||
|
|
||||||
|
def closeEvent(self, event):
|
||||||
|
self.sigClosed.emit()
|
||||||
|
QtWidgets.QMdiSubWindow.closeEvent(self, event)
|
||||||
|
|
||||||
def save_state(self):
|
def save_state(self):
|
||||||
return self.argeditor.save_state()
|
return self.argeditor.save_state()
|
||||||
|
|
||||||
|
@ -389,12 +393,12 @@ class ExperimentManager:
|
||||||
def open_experiment(self, expurl):
|
def open_experiment(self, expurl):
|
||||||
if expurl in self.open_experiments:
|
if expurl in self.open_experiments:
|
||||||
dock = self.open_experiments[expurl]
|
dock = self.open_experiments[expurl]
|
||||||
dock.setFloating(True)
|
self.main_window.centralWidget().setActiveSubWindow(dock)
|
||||||
return dock
|
return dock
|
||||||
dock = _ExperimentDock(self, expurl)
|
dock = _ExperimentDock(self, expurl)
|
||||||
self.open_experiments[expurl] = dock
|
self.open_experiments[expurl] = dock
|
||||||
self.main_window.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock)
|
self.main_window.centralWidget().addSubWindow(dock)
|
||||||
dock.setFloating(True)
|
dock.show()
|
||||||
dock.sigClosed.connect(partial(self.on_dock_closed, expurl))
|
dock.sigClosed.connect(partial(self.on_dock_closed, expurl))
|
||||||
return dock
|
return dock
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue