Example #1
0
 def _fill_grid_layout(self, layout: QtGui.QGridLayout):
     """ Fill a QGridLayout with all MultiForms and Field, in the right order
     :param layout:
     :return:
     """
     all_components = []
     for multiform in self._multiforms.values():
         all_components.append(multiform)
     for field in self._fields.values():
         all_components.append(field)
     all_components.sort(key=self._sort_components)
     row_offset = layout.rowCount()
     for row_index, obj in enumerate(all_components):
         if isinstance(obj, MultiForm):  # a MultiForm already is a QWidget
             layout.addWidget(obj, row_offset + row_index, 0, 1, 2)
         elif isinstance(obj, SubForm):
             widget = QtGui.QGroupBox(str(obj.verbose_name), p(self))
             sub_layout = QtGui.QGridLayout(p(widget))
             obj._fill_grid_layout(sub_layout)
             widget.setLayout(sub_layout)
             layout.addWidget(widget, row_offset + row_index, 0, 1, 2)
         else:
             widget = obj.get_widget(self, self)
             self._widgets[obj.name] = widget
             obj.set_widget_value(widget, self._values[obj.name])
             if obj.label:
                 label = QtGui.QLabel(obj.label, p(self))
                 label.setDisabled(obj.disabled)
                 layout.addWidget(label, row_offset + row_index, 0)
             layout.addWidget(widget, row_offset + row_index, 1)