def value_widget(default, value, parent): d = default.decl t = d.py_type v = None if isinstance(t, enum.EnumMeta): widget = QtGui.QComboBox(parent) v = '' choices = t if default.children: choices = pkcollections.map_values( default.children, lambda x: x.value) for e in choices: n = rt_qt.i18n_text(e.display_name) widget.addItem(n, userData=e.value) if len(n) > len(v): v = n set_widget_value(d, value, widget) elif issubclass(t, bool): widget = QtGui.QCheckBox(parent) v = rt_qt.i18n_text(d.label) set_widget_value(d, value, widget) else: widget = QtGui.QLineEdit(parent) v = set_widget_value(d, value, widget) return (widget, v)
def _global_param(name): try: df = self._controller.defaults[name] except KeyError: return hb = QtGui.QHBoxLayout() label = rt_qt.set_id(QtGui.QLabel(param_widget), 'form_field') rt_qt.i18n_text(df.decl.label, label) hb.addWidget(label, alignment=QtCore.Qt.AlignRight) res = rt_popup.value_widget(df, df.value, param_widget) hb.addWidget(res[0]) param_vbox.addLayout(hb) self.global_params[name] = res[0] return res
def _add(name, label, desc): """Creates a stretchable TextEdit area with label above""" vbox = QtGui.QVBoxLayout() main.addLayout(vbox, stretch=1) qlabel = rt_qt.set_id(QtGui.QLabel(self), 'heading') for v in self.global_params.values(): qlabel.setMinimumHeight(v.sizeHint().height()) rt_qt.i18n_text(label, qlabel) vbox.addWidget(qlabel, alignment=QtCore.Qt.AlignCenter) text = QtGui.QTextEdit(self) rt_qt.i18n_text(desc, text) text.setReadOnly(True) vbox.addWidget(text) self._result_text[name] = text
def set_widget_value(decl, param, widget): """Sets parameter value accordingly on widget Args: decl (dict): decl for parameter param (dict): value widget (widget): what to set on Returns: str: value that was set """ t = decl.py_type if isinstance(t, enum.EnumMeta): widget.setCurrentIndex(list(t).index(param)) return rt_qt.i18n_text(param.display_name) if issubclass(t, bool): widget.setChecked(param) # Approximate size of checkbox return ' ' if decl.units: l = RbUtility.displayWithUnitsNumber(param, decl.units) else: l = str(param) widget.setText(l) return l
def _models(): self._wavefront_models = {} params = self._controller.params['simulation_kind'] first_sk = None sk_defaults = self._controller.defaults['simulation_kind'] for sk_name in sk_defaults: sk = srw_enums.SimulationKind.from_anything(sk_name) wf_defaults = sk_defaults[sk_name]['wavefront'] if not first_sk: first_sk = sk m = QtGui.QStandardItemModel(len(wf_defaults), 2); p = params[sk_name]['wavefront'] for (row, n) in enumerate(wf_defaults): d = wf_defaults[n] item = QtGui.QStandardItem() rt_qt.i18n_text(d.decl.label, item) m.setItem(row, 0, item) item = QtGui.QStandardItem() rt_popup.set_widget_value(d.decl, p[d.decl.name], item) m.setItem(row, 1, item) self._wavefront_models[sk_name] = m return self._wavefront_models[first_sk.name.lower()]
def _label(d): qlabel = QtGui.QLabel(self._frame) l = rt_qt.i18n_text(d.label, qlabel) if len(l) > res['max_label']: res['max_label'] = len(l) return qlabel
def __init__(self, defaults, params, file_prefix, parent=None): super(Window, self).__init__(parent) self.setWindowTitle(rt_qt.i18n_text(defaults.decl.label)) self.setStyleSheet(pkio.read_text(pkresource.filename(file_prefix + '_popup.css'))) self._form = Form(defaults, params, self)