Merge branch 'close_signal_upon_dock_close' of https://github.com/lidstrom83/pyqtgraph into lidstrom83-close_signal_upon_dock_close

This commit is contained in:
Luke Campagnola 2015-03-17 23:01:56 -04:00
commit ddc7f45b9b
2 changed files with 17 additions and 4 deletions

View File

@ -7,6 +7,7 @@ from ..python2_3 import asUnicode
class Dock(QtGui.QWidget, DockDrop): class Dock(QtGui.QWidget, DockDrop):
sigStretchChanged = QtCore.Signal() sigStretchChanged = QtCore.Signal()
sigClosed = QtCore.Signal(object)
def __init__(self, name, area=None, size=(10, 10), widget=None, hideTitle=False, autoOrientation=True, closable=False): def __init__(self, name, area=None, size=(10, 10), widget=None, hideTitle=False, autoOrientation=True, closable=False):
QtGui.QWidget.__init__(self) QtGui.QWidget.__init__(self)
@ -237,6 +238,7 @@ class Dock(QtGui.QWidget, DockDrop):
self.label.setParent(None) self.label.setParent(None)
self._container.apoptose() self._container.apoptose()
self._container = None self._container = None
self.sigClosed.emit(self)
def __repr__(self): def __repr__(self):
return "<Dock %s %s>" % (self.name(), self.stretch()) return "<Dock %s %s>" % (self.name(), self.stretch())

View File

@ -172,8 +172,7 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
if self.home is None: if self.home is None:
area = DockArea(temporary=True, home=self) area = DockArea(temporary=True, home=self)
self.tempAreas.append(area) self.tempAreas.append(area)
win = QtGui.QMainWindow() win = TempAreaWindow(area)
win.setCentralWidget(area)
area.win = win area.win = win
win.show() win.show()
else: else:
@ -310,6 +309,11 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
self.home.removeTempArea(self) self.home.removeTempArea(self)
#self.close() #self.close()
def clear(self):
docks = self.findAll()[1]
for dock in docks.values():
dock.close()
## PySide bug: We need to explicitly redefine these methods ## PySide bug: We need to explicitly redefine these methods
## or else drag/drop events will not be delivered. ## or else drag/drop events will not be delivered.
def dragEnterEvent(self, *args): def dragEnterEvent(self, *args):
@ -325,4 +329,11 @@ class DockArea(Container, QtGui.QWidget, DockDrop):
DockDrop.dropEvent(self, *args) DockDrop.dropEvent(self, *args)
class TempAreaWindow(QtGui.QMainWindow):
def __init__(self, area, **kwargs):
QtGui.QMainWindow.__init__(self, **kwargs)
self.setCentralWidget(area)
def closeEvent(self, *args, **kwargs):
self.centralWidget().clear()
QtGui.QMainWindow.closeEvent(self, *args, **kwargs)