bool Layer_list_model::import_from_bundle(Bundle& bundle) { unsigned n = bundle.size(); for (unsigned i = 0; i < n && i < layers.size(); i++) { unsigned layer_index = 0; QString layer_name = bundle.layer_name(i); QByteArray layer_state = bundle.layer_state(i); while (layer_index < layers.size() && layer_name != layers[layer_index]->get_name()) { layer_index++; } if (layer_index==layers.size()) continue; swap_in_layers(i, layer_index); #ifdef INVALIDATE_CACHE_AT_COLOR_CHANGE layers[i]->invalidate_cache();/// \todo why do I need this for colors? it should work without invalidating with the display lists #endif layers[i]->restoreState(bundle.layer_state(i)); } // deactivate for (unsigned i=0; i < layers.size(); i++) { bool found = false; QString name_from_layers = layers[i]->get_name(); for (int j=0; j<bundle.size(); j++) if (name_from_layers == bundle.layer_name(j)) found = true; if (!found) layers[i]->set_active(false); } filter_apply(filter_text, show_only_active); emit dataChanged(QModelIndex(), QModelIndex()); emit layers_reordered(); return true; }