code: def rebuild(self):
          table = self.tableType()
          form  = nativestring(self.filterFormat())
          if not table and form:
              if self.layout().count() == 0:
                  self.layout().addWidget(QLabel(form, self))
              else:
                  self.layout().itemAt(0).widget().setText(form)
              return
          elif not form:
              return
          for child in self.findChildren(QWidget):
              child.close()
              child.setParent(None)
              child.deleteLater()
          self.setUpdatesEnabled(False)
          schema = table.schema()
          vlayout = self.layout()
          for i in range(vlayout.count()):
              vlayout.takeAt(0)
          self._plugins = []
          for line in form.split('\n'):
              row = QHBoxLayout()
              row.setContentsMargins(0, 0, 0, 0)
              row.setSpacing(0)
              for label, lookup in FORMAT_SPLITTER.findall(line):
                  lbl = QLabel(label, self)
                  row.addWidget(lbl)
                  opts = lookup.split(':')
                  if len(opts) == 1:
                      opts.append('is')
                  column = schema.column(opts[0])
                  if not column:
                      continue
                  plugin = self.pluginFactory().plugin(column)
                  if not plugin:
                      continue
                  editor = plugin.createEditor(self, column, opts[1], None)
                  if editor:
                      editor.setObjectName(opts[0])
                      row.addWidget(editor)
                      self._plugins.append((opts[0], opts[1], plugin, editor))
              row.addStretch(1)
              vlayout.addLayout(row)
          self.setUpdatesEnabled(True)
          self.adjustSize()