[Bf-blender-cvs] [ec2bbc90e7c] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Wed Oct 18 08:07:12 CEST 2017


Commit: ec2bbc90e7c6a7f21da253333a14d49ef1428319
Author: Campbell Barton
Date:   Wed Oct 18 17:09:41 2017 +1100
Branches: blender2.8
https://developer.blender.org/rBec2bbc90e7c6a7f21da253333a14d49ef1428319

Merge branch 'master' into blender2.8

===================================================================



===================================================================

diff --cc source/blender/editors/io/io_collada.c
index f9297c58cbb,39065606201..9e79ca5b0e3
--- a/source/blender/editors/io/io_collada.c
+++ b/source/blender/editors/io/io_collada.c
@@@ -321,10 -314,16 +321,10 @@@ void WM_OT_collada_export(wmOperatorTyp
  		{0, NULL, 0, NULL, NULL}
  	};
  
- 	static EnumPropertyItem prop_bc_export_transformation_type[] = {
+ 	static const EnumPropertyItem prop_bc_export_transformation_type[] = {
 -		{ BC_TRANSFORMATION_TYPE_MATRIX, "matrix", 0, "Matrix", "Use <matrix> to specify transformations" },
 -		{ BC_TRANSFORMATION_TYPE_TRANSROTLOC, "transrotloc", 0, "TransRotLoc", "Use <translate>, <rotate>, <scale> to specify transformations" },
 -		{ 0, NULL, 0, NULL, NULL }
 -	};
 -
 -	static const EnumPropertyItem prop_bc_export_texture_type[] = {
 -		{ BC_TEXTURE_TYPE_MAT, "mat", 0, "Materials", "Export Materials" },
 -		{ BC_TEXTURE_TYPE_UV, "uv", 0, "UV Textures", "Export UV Textures (Face textures) as materials" },
 -		{ 0, NULL, 0, NULL, NULL }
 +		{BC_TRANSFORMATION_TYPE_MATRIX, "matrix", 0, "Matrix", "Use <matrix> to specify transformations"},
 +		{BC_TRANSFORMATION_TYPE_TRANSROTLOC, "transrotloc", 0, "TransRotLoc", "Use <translate>, <rotate>, <scale> to specify transformations"},
 +		{0, NULL, 0, NULL, NULL}
  	};
  
  	ot->name = "Export COLLADA";
diff --cc source/blender/editors/object/object_data_transfer.c
index 3647533eb8f,89100125848..26af20ccf40
--- a/source/blender/editors/object/object_data_transfer.c
+++ b/source/blender/editors/object/object_data_transfer.c
@@@ -91,10 -90,9 +91,10 @@@ static const EnumPropertyItem DT_layer_
  };
  
  /* Note: rna_enum_dt_layers_select_src_items enum is from rna_modifier.c */
- static EnumPropertyItem *dt_layers_select_src_itemf(
+ static const EnumPropertyItem *dt_layers_select_src_itemf(
          bContext *C, PointerRNA *ptr, PropertyRNA *UNUSED(prop), bool *r_free)
  {
 +	EvaluationContext eval_ctx;
  	EnumPropertyItem *item = NULL, tmp_item = {0};
  	int totitem = 0;
  
diff --cc source/blender/editors/space_outliner/outliner_collections.c
index 092909cbcba,00000000000..45d632dc293
mode 100644,000000..100644
--- a/source/blender/editors/space_outliner/outliner_collections.c
+++ b/source/blender/editors/space_outliner/outliner_collections.c
@@@ -1,546 -1,0 +1,547 @@@
 +/*
 + * ***** BEGIN GPL LICENSE BLOCK *****
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
 + * as published by the Free Software Foundation; either version 2
 + * of the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software Foundation,
 + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 + *
 + * Contributor(s): Blender Foundation, Dalai Felinto
 + *
 + * ***** END GPL LICENSE BLOCK *****
 + */
 +
 +/** \file blender/editors/space_outliner/outliner_collections.c
 + *  \ingroup spoutliner
 + */
 +
 +#include "BKE_context.h"
 +#include "BKE_collection.h"
 +#include "BKE_layer.h"
 +#include "BKE_main.h"
 +#include "BKE_report.h"
 +
 +#include "DEG_depsgraph.h"
 +#include "DEG_depsgraph_build.h"
 +
 +#include "BLI_listbase.h"
 +
 +#include "ED_screen.h"
 +
 +#include "WM_api.h"
 +#include "WM_types.h"
 +
 +#include "RNA_access.h"
 +#include "RNA_define.h"
 +#include "RNA_enum_types.h"
 +
 +#include "UI_resources.h"
 +
 +#include "outliner_intern.h" /* own include */
 +
 +/* -------------------------------------------------------------------- */
 +
 +static LayerCollection *outliner_collection_active(bContext *C)
 +{
 +	TODO_LAYER_OPERATORS;
 +	/* consider that we may have overrides or objects active
 +	 * leading to no active collections */
 +	return CTX_data_layer_collection(C);
 +}
 +
 +SceneCollection *outliner_scene_collection_from_tree_element(TreeElement *te)
 +{
 +	TreeStoreElem *tselem = TREESTORE(te);
 +
 +	if (tselem->type == TSE_SCENE_COLLECTION) {
 +		return te->directdata;
 +	}
 +	else if (tselem->type == TSE_LAYER_COLLECTION) {
 +		LayerCollection *lc = te->directdata;
 +		return lc->scene_collection;
 +	}
 +
 +	return NULL;
 +}
 +
 +#if 0
 +static CollectionOverride *outliner_override_active(bContext *UNUSED(C))
 +{
 +	TODO_LAYER_OPERATORS;
 +	TODO_LAYER_OVERRIDE;
 +	return NULL;
 +}
 +#endif
 +
 +/* -------------------------------------------------------------------- */
 +/* collection manager operators */
 +
 +/**
 + * Recursively get the collection for a given index
 + */
 +static SceneCollection *scene_collection_from_index(ListBase *lb, const int number, int *i)
 +{
 +	for (SceneCollection *sc = lb->first; sc; sc = sc->next) {
 +		if (*i == number) {
 +			return sc;
 +		}
 +
 +		(*i)++;
 +
 +		SceneCollection *sc_nested = scene_collection_from_index(&sc->scene_collections, number, i);
 +		if (sc_nested) {
 +			return sc_nested;
 +		}
 +	}
 +	return NULL;
 +}
 +
 +static int collection_link_exec(bContext *C, wmOperator *op)
 +{
 +	Scene *scene = CTX_data_scene(C);
 +	SceneLayer *sl = CTX_data_scene_layer(C);
 +	SceneCollection *sc_master = BKE_collection_master(scene);
 +	SceneCollection *sc;
 +
 +	int scene_collection_index = RNA_enum_get(op->ptr, "scene_collection");
 +	if (scene_collection_index == 0) {
 +		sc = sc_master;
 +	}
 +	else {
 +		int index = 1;
 +		sc = scene_collection_from_index(&sc_master->scene_collections, scene_collection_index, &index);
 +		BLI_assert(sc);
 +	}
 +
 +	BKE_collection_link(sl, sc);
 +
 +	DEG_relations_tag_update(CTX_data_main(C));
 +
 +	/* TODO(sergey): Use proper flag for tagging here. */
 +	DEG_id_tag_update(&scene->id, 0);
 +
 +	WM_main_add_notifier(NC_SCENE | ND_LAYER, NULL);
 +	return OPERATOR_FINISHED;
 +}
 +
 +static int collection_link_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 +{
 +	if (BKE_collection_master(CTX_data_scene(C))->scene_collections.first == NULL) {
 +		RNA_enum_set(op->ptr, "scene_collection", 0);
 +		return collection_link_exec(C, op);
 +	}
 +	else {
 +		return WM_enum_search_invoke(C, op, event);
 +	}
 +}
 +
 +static void collection_scene_collection_itemf_recursive(
 +        EnumPropertyItem *tmp, EnumPropertyItem **item, int *totitem, int *value, SceneCollection *sc)
 +{
 +	tmp->value = *value;
 +	tmp->icon = ICON_COLLAPSEMENU;
 +	tmp->identifier = sc->name;
 +	tmp->name = sc->name;
 +	RNA_enum_item_add(item, totitem, tmp);
 +
 +	(*value)++;
 +
 +	for (SceneCollection *ncs = sc->scene_collections.first; ncs; ncs = ncs->next) {
 +		collection_scene_collection_itemf_recursive(tmp, item, totitem, value, ncs);
 +	}
 +}
 +
- static EnumPropertyItem *collection_scene_collection_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
++static const EnumPropertyItem *collection_scene_collection_itemf(
++        bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
 +{
 +	EnumPropertyItem tmp = {0, "", 0, "", ""};
 +	EnumPropertyItem *item = NULL;
 +	int value = 0, totitem = 0;
 +
 +	Scene *scene = CTX_data_scene(C);
 +	SceneCollection *sc = BKE_collection_master(scene);
 +
 +	collection_scene_collection_itemf_recursive(&tmp, &item, &totitem, &value, sc);
 +	RNA_enum_item_end(&item, &totitem);
 +	*r_free = true;
 +
 +	return item;
 +}
 +
 +void OUTLINER_OT_collection_link(wmOperatorType *ot)
 +{
 +	PropertyRNA *prop;
 +
 +	/* identifiers */
 +	ot->name = "Add Collection";
 +	ot->idname = "OUTLINER_OT_collection_link";
 +	ot->description = "Link a new collection to the active layer";
 +
 +	/* api callbacks */
 +	ot->exec = collection_link_exec;
 +	ot->invoke = collection_link_invoke;
 +
 +	/* flags */
 +	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 +
 +	prop = RNA_def_enum(ot->srna, "scene_collection", DummyRNA_NULL_items, 0, "Scene Collection", "");
 +	RNA_def_enum_funcs(prop, collection_scene_collection_itemf);
 +	RNA_def_property_flag(prop, PROP_ENUM_NO_TRANSLATE);
 +	ot->prop = prop;
 +}
 +
 +/**
 + * Returns true if selected element is a collection directly
 + * linked to the active SceneLayer (not a nested collection)
 + */
 +static int collection_unlink_poll(bContext *C)
 +{
 +	LayerCollection *lc = outliner_collection_active(C);
 +
 +	if (lc == NULL) {
 +		return 0;
 +	}
 +
 +	SceneLayer *sl = CTX_data_scene_layer(C);
 +	return BLI_findindex(&sl->layer_collections, lc) != -1 ? 1 : 0;
 +}
 +
 +static int collection_unlink_exec(bContext *C, wmOperator *op)
 +{
 +	LayerCollection *lc = outliner_collection_active(C);
 +	SpaceOops *soops = CTX_wm_space_outliner(C);
 +
 +	if (lc == NULL) {
 +		BKE_report(op->reports, RPT_ERROR, "Active element is not a collection");
 +		return OPERATOR_CANCELLED;
 +	}
 +
 +	SceneLayer *sl = CTX_data_scene_layer(C);
 +	BKE_collection_unlink(sl, lc);
 +
 +	if (soops) {
 +		outliner_cleanup_tree(soops);
 +	}
 +
 +	DEG_relations_tag_update(CTX_data_main(C));
 +
 +	/* TODO(sergey): Use proper flag for tagging here. */
 +	DEG_id_tag_update(&CTX_data_scene(C)->id, 0);
 +
 +	WM_main_add_notifier(NC_SCENE | ND_LAYER, NULL);
 +	return OPERATOR_FINISHED;
 +}
 +
 +void OUTLINER_OT_collection_unlink(wmOperatorType *ot)
 +{
 +	/* identifiers */
 +	ot->name = "Add Collection";
 +	ot->idname = "OUTLINER_OT_collection_unlink";
 +	ot->description = "Unlink collection from the active layer";
 +
 +	/* api callbacks */
 +	ot->exec = collection_unlink_exec;
 +	ot->poll = collection_unlink_poll;
 +
 +	/* flags */
 +	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 +}
 +
 +static int collection_new_exec(bContext *C, wmOperator *UNUSED(op))
 +{
 +	Scene *scene = CTX_data_scene(C);
 +	SceneLayer *sl = CTX_data_scene_layer(C);
 +
 +	SceneCollection *sc = BKE_collection_add(scene, NULL, NULL);
 +	BKE_collection_link(sl, sc);
 +
 +	DEG_relations_tag_update(CTX_data_main(C));
 +	WM_main_add_notifier(NC_SCENE | ND_LAYER, NULL);
 +	return OPERATOR_FINISHED;
 +}
 +
 +void OUTLINER_OT_collection_new(wmOperatorType *ot)
 +{
 +	/* identifiers */
 +	ot->name = "New Collecti

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list