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'))
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()
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'))
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()