def create_structure_node(self, structure_type):
     ''' create and insert a new tag of structure_type (<nest> or <equation>).
     Accepted values for structure_type are "nest" and "equation" '''
     if structure_type not in ['nest', 'equation']:
         raise ValueError(
             "Don't know how to create a structure node for '%s'" %
             structure_type)
     # get a unique name for the structure node
     taken_names = [
         node.get('name')
         for node in self._root_node.findall(structure_type)
     ]
     name = get_unique_name('new %s' % structure_type, taken_names)
     # create the node with a <variable_list> child node
     attrib = {'name': name, '%s_id' % structure_type: '-2'}
     structure_node = etree.SubElement(self._root_node, structure_type,
                                       attrib)
     item = SubmodelStructureItem(structure_node,
                                  editable=True,
                                  parent_widget=self)
     if structure_type == 'equation':
         etree.SubElement(structure_node, 'variable_list',
                          {'type': 'variable_list'})
     # and insert the item
     self.addTopLevelItem(item)
     self.emit(QtCore.SIGNAL('structure_changed'))
Example #2
0
    def _add_variable(self, base_on_variable = None):
        var = create_empty_variable()
        if base_on_variable is not None:
            for key in VariablesTableModel.VARIABLE_NON_METADATA_KEYS:
                var[key] = base_on_variable[key]
            name, dataset = var['name'], var['dataset']
            var['name'] = get_unique_name(name, self.model.get_variable_names_in_dataset(dataset))

        self.editor.init_for_variable(var, self.validator, self.model.get_variables())
        if self.editor.exec_() == self.editor.Accepted:
            new_variable = self.editor.variable
            self.model.add_variable(new_variable)
            self._update_apply_button()
 def addModel(self, models_to_run_list_index, model_name):
     '''
     Add a model to a models_to_run list.
     @param scenario_index (QModelIndex): index of the list to insert under
     @param models_name (String): name of model to add
     '''
     unique_name = get_unique_name(model_name, get_model_names(self.project))
     attribs = {'type': 'selectable', 'return_value': model_name, 'name': unique_name}
     model_node = Element('selectable', attribs)
     model_node.text = 'True'
     last_row_num = self.model.rowCount(models_to_run_list_index)
     self.model.insertRow(last_row_num, models_to_run_list_index, model_node)
     # Validate models to run
     update_models_to_run_lists()
    def _add_variable(self, base_on_variable=None):
        var = create_empty_variable()
        if base_on_variable is not None:
            for key in VariablesTableModel.VARIABLE_NON_METADATA_KEYS:
                var[key] = base_on_variable[key]
            name, dataset = var['name'], var['dataset']
            var['name'] = get_unique_name(
                name, self.model.get_variable_names_in_dataset(dataset))

        self.editor.init_for_variable(var, self.validator,
                                      self.model.get_variables())
        if self.editor.exec_() == self.editor.Accepted:
            new_variable = self.editor.variable
            self.model.add_variable(new_variable)
            self._update_apply_button()
Example #5
0
 def create_structure_node(self, structure_type):
     ''' create and insert a new tag of structure_type (<nest> or <equation>).
     Accepted values for structure_type are "nest" and "equation" '''
     if structure_type not in ['nest', 'equation']:
         raise ValueError("Don't know how to create a structure node for '%s'" %structure_type)
     # get a unique name for the structure node
     taken_names = [node.get('name') for node in self._root_node.findall(structure_type)]
     name = get_unique_name('new %s' % structure_type, taken_names)
     # create the node with a <variable_list> child node
     attrib = {'name': name, '%s_id' % structure_type: '-2'}
     structure_node = etree.SubElement(self._root_node, structure_type, attrib)
     item = SubmodelStructureItem(structure_node, editable=True, parent_widget=self)
     if structure_type == 'equation':
         etree.SubElement(structure_node, 'variable_list', {'type': 'variable_list'})
     # and insert the item
     self.addTopLevelItem(item)
     self.emit(QtCore.SIGNAL('structure_changed'))
Example #6
0
 def addModel(self, models_to_run_list_index, model_name):
     '''
     Add a model to a models_to_run list.
     @param scenario_index (QModelIndex): index of the list to insert under
     @param models_name (String): name of model to add
     '''
     unique_name = get_unique_name(model_name,
                                   get_model_names(self.project))
     attribs = {
         'type': 'selectable',
         'return_value': model_name,
         'name': unique_name
     }
     model_node = Element('selectable', attribs)
     model_node.text = 'True'
     last_row_num = self.model.rowCount(models_to_run_list_index)
     self.model.insertRow(last_row_num, models_to_run_list_index,
                          model_node)
     # Validate models to run
     update_models_to_run_lists()