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
00035 from python_qt_binding import loadUi
00036 from python_qt_binding.QtCore import qWarning
00037 from python_qt_binding.QtGui import QDialog, QLabel
00038 from rospkg.rospack import RosPack
00039
00040 from .exclusive_options_group import ExclusiveOptionGroup
00041 from .checkbox_group import CheckBoxGroup
00042
00043
00044 class SimpleSettingsDialog(QDialog):
00045 """Simple dialog that can show multiple settings groups and returns their combined results."""
00046
00047 def __init__(self, title='Options', description=None):
00048 super(SimpleSettingsDialog, self).__init__()
00049 self.setObjectName('SimpleSettingsDialog')
00050
00051 rp = RosPack()
00052 ui_file = os.path.join(rp.get_path('qt_gui_py_common'), 'resource', 'simple_settings_dialog.ui')
00053 loadUi(ui_file, self)
00054
00055 self.setWindowTitle(title)
00056 self._settings_groups = []
00057
00058 if description is not None:
00059 self.add_label(description)
00060
00061 def add_label(self, text):
00062 self.group_area.layout().addWidget(QLabel(text))
00063
00064 def add_exclusive_option_group(self, *args, **kwargs):
00065 """Convenience method to add an ExclusiveOptionGroup."""
00066 self.add_settings_group(ExclusiveOptionGroup(*args, **kwargs))
00067
00068 def add_checkbox_group(self, *args, **kwargs):
00069 """Convenience method to add an CheckBoxGroup."""
00070 self.add_settings_group(CheckBoxGroup(*args, **kwargs))
00071
00072 def add_settings_group(self, settings_group):
00073 """Adds a settings group, which is any widget with a get_settings method."""
00074 if not hasattr(settings_group, 'get_settings'):
00075 qWarning('add_settings_group(): this settings group has no get_settings method to collect the settings!')
00076 self._settings_groups.append(settings_group)
00077 self.group_area.layout().addWidget(settings_group)
00078
00079 def get_settings(self):
00080 """Returns the combined settings from all settings groups as a list."""
00081 if self.exec_() == QDialog.Accepted:
00082 results = []
00083 for settings_group in self._settings_groups:
00084 if hasattr(settings_group, 'get_settings'):
00085 results.append(settings_group.get_settings())
00086 else:
00087 results.append(None)
00088 return results
00089 return [None] * len(self._settings_groups)