コード例 #1
0
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;
}