Skip to content

Commit

Permalink
gui: reliable detection of dock close
Browse files Browse the repository at this point in the history
sbourdeauducq committed Feb 14, 2016
1 parent 3c12c13 commit 489f69f
Showing 4 changed files with 19 additions and 27 deletions.
11 changes: 3 additions & 8 deletions artiq/gui/applets.py
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@

from artiq.protocols.pipe_ipc import AsyncioParentComm
from artiq.protocols import pyon
from artiq.gui.tools import QDockWidgetCloseDetect


logger = logging.getLogger(__name__)
@@ -84,11 +85,9 @@ async def stop(self):
await asyncio.wait([self.server_task])


class AppletDock(QtWidgets.QDockWidget):
sigClosed = QtCore.pyqtSignal()

class AppletDock(QDockWidgetCloseDetect):
def __init__(self, datasets_sub, uid, name, command):
QtWidgets.QDockWidget.__init__(self, "Applet: " + name)
QDockWidgetCloseDetect.__init__(self, "Applet: " + name)
self.setObjectName("applet" + str(uid))

self.datasets_sub = datasets_sub
@@ -164,10 +163,6 @@ async def restart(self):
await self.terminate()
await self.start()

def closeEvent(self, event):
QtWidgets.QDockWidget.closeEvent(self, event)
self.sigClosed.emit()


_templates = [
("Big number", "{python} -m artiq.applets.big_number "
12 changes: 3 additions & 9 deletions artiq/gui/experiments.py
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@

from pyqtgraph import LayoutWidget

from artiq.gui.tools import log_level_to_name
from artiq.gui.tools import log_level_to_name, QDockWidgetCloseDetect
from artiq.gui.entries import argty_to_entry


@@ -133,12 +133,10 @@ def restore_state(self, state):
pass


class _ExperimentDock(QtWidgets.QDockWidget):
sigClosed = QtCore.pyqtSignal()

class _ExperimentDock(QDockWidgetCloseDetect):
def __init__(self, manager, expurl):
name = "Exp: " + expurl
QtWidgets.QDockWidget.__init__(self, name)
QDockWidgetCloseDetect.__init__(self, name)
self.setObjectName(name)

self.layout = QtWidgets.QGridLayout()
@@ -297,10 +295,6 @@ async def _recompute_arguments_task(self):
self.argeditor = _ArgumentEditor(self.manager, self, self.expurl)
self.layout.addWidget(self.argeditor, 0, 0, 1, 5)

def closeEvent(self, event):
QtWidgets.QDockWidget.closeEvent(self, event)
self.sigClosed.emit()

def save_state(self):
return self.argeditor.save_state()

12 changes: 3 additions & 9 deletions artiq/gui/log.py
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
from quamash import QtGui, QtCore, QtWidgets
from pyqtgraph import LayoutWidget

from artiq.gui.tools import log_level_to_name
from artiq.gui.tools import log_level_to_name, QDockWidgetCloseDetect


def _make_wrappable(row, width=30):
@@ -140,11 +140,9 @@ def set_freetext(self, freetext):
self.invalidateFilter()


class _LogDock(QtWidgets.QDockWidget):
sigClosed = QtCore.pyqtSignal()

class _LogDock(QDockWidgetCloseDetect):
def __init__(self, manager, name, log_sub):
QtWidgets.QDockWidget.__init__(self, "Log")
QDockWidgetCloseDetect.__init__(self, "Log")
self.setObjectName(name)

grid = LayoutWidget()
@@ -254,10 +252,6 @@ def set_model(self, model):
self.table_model_filter.rowsInserted.connect(self.rows_inserted_after)
self.table_model_filter.rowsRemoved.connect(self.rows_removed)

def closeEvent(self, event):
QtWidgets.QDockWidget.closeEvent(self, event)
self.sigClosed.emit()

def save_state(self):
return {
"min_level_idx": self.filter_level.currentIndex(),
11 changes: 10 additions & 1 deletion artiq/gui/tools.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import logging

from quamash import QtCore
from PyQt5 import QtCore, QtWidgets, QtGui


def log_level_to_name(level):
@@ -27,3 +27,12 @@ def eventFilter(self, obj, event):
def disable_scroll_wheel(widget):
widget.setFocusPolicy(QtCore.Qt.StrongFocus)
widget.installEventFilter(_WheelFilter(widget))


class QDockWidgetCloseDetect(QtWidgets.QDockWidget):
sigClosed = QtCore.pyqtSignal()

def event(self, event):
if isinstance(event, QtGui.QCloseEvent):
self.sigClosed.emit()
return QtWidgets.QDockWidget.event(self, event)

0 comments on commit 489f69f

Please sign in to comment.