void Save_grid_dialog::gridChanged(const QString & s) { SmartPtr<Named_interface> grid_ni = Root::instance()->interface( gridModels_manager + "/" + s.toStdString() ); Geostat_grid* grid = dynamic_cast<Geostat_grid*>( grid_ni.raw_ptr() ); appli_assert( grid ); std::list<std::string> pn = grid->property_list(); propList_->clear(); for (std::list<std::string>::iterator it = pn.begin(); it != pn.end(); ++it){ QListWidgetItem * nitem = new QListWidgetItem(it->c_str(), propList_); propList_->addItem(nitem); nitem->setSelected(true); } if (dynamic_cast<Reduced_grid*>(grid)) { masked_as_regular_frame_->setVisible(true); } else{ masked_as_regular_frame_->setVisible(false); } }
void Project_ItemModel::begin_add_item(std::string type_hierarchy,std::string type_name){ QStringList types = QString(type_hierarchy.c_str()).split("/"); QStringList names = QString(type_name.c_str()).split("/"); if(types.isEmpty() || names.isEmpty() || types.size() != names.size()) return; QModelIndex insert_parent_index; int position; // can either add a grid, a group, a property (in the all_group and/or in a specific group) or a region QModelIndex root_index = this->root_index(); if(types.size() == 1) { // Adding a grid, always at the end insert_parent_index = root_index; position = rootItem_->childCount(); } else { QString grid_name = names.at(0); Geostat_grid* grid = dynamic_cast<Geostat_grid*>( Root::instance()->interface( gridModels_manager + "/" + grid_name.toStdString() ).raw_ptr() ); if(grid == 0) return; GsTL_root_item *root_item = dynamic_cast<GsTL_root_item*>(rootItem_); GsTL_grid_item * grid_item = new GsTL_grid_item(root_item->project(), grid, grid_name, rootItem_ ); QModelIndex grid_index = root_index.child(grid_item->row(),0); if(types.size() == 2) { // adding a group or a property if(types.at(1) == "group") { insert_parent_index = grid_index; std::string new_group_name = names.at(1).toStdString(); std::list<std::string> group_names = grid->get_group_names(); std::list<std::string>::iterator it = group_names.begin(); for(int i=0 ; it != group_names.end() ; ++it) { if( *it > new_group_name ) { position = i; break; } } } else if(types.at(1) == "property") { insert_parent_index = grid_index.child(0,0); //Need to add it to the all property group and the specific group std::string new_prop_name = names.at(1).toStdString(); std::list<std::string> props = grid->property_list(); std::list<std::string>::const_iterator it_prop = props.begin(); for(int i=0;it_prop != props.end(); ++it_prop, ++i) { if(*it_prop > new_prop_name) { position = i; break; } } } } } this->beginInsertRows(insert_parent_index,position, position); }