1 """This module provides a singleton workspace that can be used by views
2 and widget to create new windows or raise existing ones"""
3
4 from PyQt4 import QtGui, QtCore
5
6 import logging
7
8 from camelot.view.model_thread import gui_function
9
10 logger = logging.getLogger('camelot.view.workspace')
13
14 @gui_function
16 QtGui.QMdiArea.__init__(self, *args)
17 self.setOption(QtGui.QMdiArea.DontMaximizeSubWindowOnActivation)
18 self.setBackground(QtGui.QBrush(QtGui.QColor('white')))
19 self.setActivationOrder(QtGui.QMdiArea.ActivationHistoryOrder)
20
21 @gui_function
23 from camelot.view.controls.view import AbstractView
24 subwindow = QtGui.QMdiArea.addSubWindow(self, widget, *args)
25 if hasattr(widget, 'closeAfterValidation'):
26 subwindow.connect(widget, widget.closeAfterValidation, subwindow, QtCore.SLOT("close()"))
27
28 def create_set_window_title(subwindow):
29
30 def set_window_title(new_title):
31 subwindow.setWindowTitle(new_title)
32
33 return set_window_title
34
35 self.connect(widget, AbstractView.title_changed_signal, create_set_window_title(subwindow))
36 return subwindow
37
40 QtCore.QObject.__init__(self)
41 self._windowlist = []
42
43 @gui_function
45 self.widget = widget
46 self.widget.setParent(None)
47 self.widget.show()
48 self._windowlist.append(self.widget)
49 self.connect(widget, QtCore.SIGNAL('WidgetClosed()'), self.removeWidgetFromWorkspace)
50
51 @gui_function
53 return self._windowlist
54
55 @gui_function
58
59 _workspace_ = []
65
70
74
78