Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 import os
00034 from python_qt_binding import loadUi
00035 from python_qt_binding.QtGui import QDialog, QLabel
00036 from python_qt_binding.QtCore import qWarning
00037 from exclusive_options_group import ExclusiveOptionGroup
00038
00039 class SimpleSettingsDialog(QDialog):
00040 """Simple dialog that can show multiple settings groups and returns their combined results."""
00041
00042 def __init__(self, title='Options', description=None):
00043 super(SimpleSettingsDialog, self).__init__()
00044 self.setObjectName('SimpleSettingsDialog')
00045
00046 ui_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'simple_settings_dialog.ui')
00047 loadUi(ui_file, self)
00048
00049 self.setWindowTitle(title)
00050 self._settings_groups = []
00051
00052 if description is not None:
00053 self.add_label(description)
00054
00055 def add_label(self, text):
00056 self.group_area.layout().addWidget(QLabel(text))
00057
00058 def add_exclusive_option_group(self, *args, **kwargs):
00059 """Convenience method to add an ExclusiveOptionGroup."""
00060 self.add_settings_group(ExclusiveOptionGroup(*args, **kwargs))
00061
00062 def add_settings_group(self, settings_group):
00063 """Adds a settings group, which is any widget with a get_settings method."""
00064 if not hasattr(settings_group, 'get_settings'):
00065 qWarning('add_settings_group(): this settings group has no get_settings method to collect the settings!')
00066 self._settings_groups.append(settings_group)
00067 self.group_area.layout().addWidget(settings_group)
00068
00069 def get_settings(self):
00070 """Returns the combined settings from all settings groups as a list."""
00071 if self.exec_() == QDialog.Accepted:
00072 results = []
00073 for settings_group in self._settings_groups:
00074 if hasattr(settings_group, 'get_settings'):
00075 results.append(settings_group.get_settings())
00076 else:
00077 results.append(None)
00078 return results
00079 return [None] * len(self._settings_groups)