dock_widget_container.py
Go to the documentation of this file.
1 # Copyright (c) 2011, Dirk Thomas, Dorian Scholz, TU Darmstadt
2 # All rights reserved.
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 #
8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above
11 # copyright notice, this list of conditions and the following
12 # disclaimer in the documentation and/or other materials provided
13 # with the distribution.
14 # * Neither the name of the TU Darmstadt nor the names of its
15 # contributors may be used to endorse or promote products derived
16 # from this software without specific prior written permission.
17 #
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 # POSSIBILITY OF SUCH DAMAGE.
30 
31 from python_qt_binding.QtGui import QIcon
32 
33 from qt_gui.dock_widget import DockWidget
34 from qt_gui.dockable_main_window import DockableMainWindow
35 
36 
38  """`DockWidget` containing a main window acting as a container for other dock widgets."""
39 
40  def __init__(self, container_manager, serial_number):
41  super(DockWidgetContainer, self).__init__(container_manager)
42  self._serial_number = serial_number
43  self._settings = None
44 
46  self.setWidget(self.main_window)
47  self.setWindowIcon(QIcon.fromTheme('folder'))
48 
49  def serial_number(self):
50  return self._serial_number
51 
52  def setObjectName(self, name):
53  super(DockWidget, self).setObjectName(name)
54  self.main_window.setObjectName(name + '__MainWindow')
55 
56  def save_settings(self, settings):
57  mw_settings = settings.get_settings('mainwindow')
58  self._save_geometry(mw_settings)
59  self._save_state(mw_settings)
60  super(DockWidgetContainer, self).save_settings(settings)
61 
62  def _save_geometry(self, settings):
63  # unmaximizing widget before saveGeometry works around bug to restore dock-widgets
64  # still the non-maximized size can not correctly be restored
65  maximized = self.isMaximized()
66  if maximized:
67  self.showNormal()
68  settings.set_value('geometry', self.main_window.saveGeometry())
69  if maximized:
70  self.showMaximized()
71 
72  def _save_state(self, settings):
73  if self._settings is not None:
74  self._settings.set_value('state', self.main_window.saveState())
75 
76  def restore_settings(self, settings):
77  super(DockWidgetContainer, self).restore_settings(settings)
78  mw_settings = settings.get_settings('mainwindow')
79  self._settings = mw_settings
80  # only restore geometry, restoring state is triggered after PluginManager has been updated
81  self._restore_geometry(mw_settings)
82 
83  def _restore_geometry(self, settings):
84  if settings.contains('geometry'):
85  self.main_window.restoreGeometry(settings.value('geometry'))
86 
87  def restore_state(self):
88  if self._settings.contains('state'):
89  self.main_window.restoreState(self._settings.value('state'))
def __init__(self, container_manager, serial_number)


qt_gui
Author(s): Dirk Thomas
autogenerated on Tue Apr 13 2021 03:03:12