code: def fill_tree(self, tree, input_dict):
          
  
          def add_element(item, key, value):
              child_name = QtGui.QStandardItem(key)
              child_name.setDragEnabled(False)
              child_name.setSelectable(False)
              child_name.setEditable(False)
  
              if isinstance(value, dict):
                  for ket_child, value_child in value.items():
                      add_element(child_name, ket_child, value_child)
                  child_value = QtGui.QStandardItem('')
              else:
                  child_value = QtGui.QStandardItem(str(value))
                  child_value.setData(value)
  
              child_value.setDragEnabled(False)
              child_value.setSelectable(False)
              child_value.setEditable(False)
              item.appendRow([child_name, child_value])
  
          for index, (loaded_item, loaded_item_settings) in enumerate(input_dict.items()):
              # print(index, loaded_item, loaded_item_settings)
              item = QtGui.QStandardItem(loaded_item)
  
              for key, value in loaded_item_settings['settings'].items():
                  add_element(item, key, value)
  
              value = QtGui.QStandardItem('')
              tree.model().appendRow([item, value])
  
              if tree == self.tree_loaded:
                  item.setEditable(False)
              tree.setFirstColumnSpanned(index, self.tree_infile.rootIndex(), True)
docs: fills a tree with nested parameters
          Args:
              tree: QtGui.QTreeView
              parameters: dictionary or Parameter object
  
          Returns: