[Bf-blender-cvs] [b37c589319e] custom-manipulators: Further changes to manipulator API's.
Campbell Barton
noreply at git.blender.org
Tue Jun 13 16:09:38 CEST 2017
Commit: b37c589319ecf8117fdb0ed7a14a3889beb108e3
Author: Campbell Barton
Date: Wed Jun 14 00:04:35 2017 +1000
Branches: custom-manipulators
https://developer.blender.org/rBb37c589319ecf8117fdb0ed7a14a3889beb108e3
Further changes to manipulator API's.
These changes are intended for operators to register their own
widget-types temporarily, so _every_ operator that uses manipulators
doesn't need to keep them continuously polling the view to check if the
operator is running.
- Register `wmManipulatorGroupType` globally (like all other RNA types).
- Add `wmManipulatorGroupTypeRef` for type-maps to reference groups.
- Remove `wmManipulatorMapType.idname` (spaceid & regionid are enough info).
- Add PERSISTENT flag for `wmManipulatorGroupType`
intended for use with operators so loading a new file for eg doesn't
keep the manipulator type around.
===================================================================
M source/blender/editors/space_image/space_image.c
M source/blender/editors/space_node/node_manipulators.c
M source/blender/editors/space_node/space_node.c
M source/blender/editors/space_view3d/space_view3d.c
M source/blender/editors/space_view3d/view3d_manipulators.c
M source/blender/editors/transform/transform_manipulator.c
M source/blender/makesrna/intern/rna_wm_api.c
M source/blender/makesrna/intern/rna_wm_manipulator.c
M source/blender/python/intern/bpy_manipulator_wrap.c
M source/blender/windowmanager/CMakeLists.txt
M source/blender/windowmanager/intern/wm_init_exit.c
M source/blender/windowmanager/manipulators/WM_manipulator_api.h
M source/blender/windowmanager/manipulators/WM_manipulator_types.h
M source/blender/windowmanager/manipulators/intern/wm_manipulator.c
M source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
M source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
A source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup_type.c
M source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c
M source/blender/windowmanager/manipulators/wm_manipulator_fn.h
M source/blender/windowmanager/manipulators/wm_manipulator_wmapi.h
M source/blenderplayer/bad_level_call_stubs/stubs.c
===================================================================
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index c17391d8a54..d54a62dc7a1 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -594,6 +594,8 @@ static void IMAGE_WGT_manipulator2d(wmManipulatorGroupType *wgt)
wgt->name = "UV Transform Manipulator";
wgt->idname = "IMAGE_WGT_manipulator2d";
+ wgt->flag |= WM_MANIPULATORGROUPTYPE_PERSISTENT;
+
wgt->poll = ED_widgetgroup_manipulator2d_poll;
wgt->setup = ED_widgetgroup_manipulator2d_setup;
wgt->refresh = ED_widgetgroup_manipulator2d_refresh;
@@ -602,13 +604,10 @@ static void IMAGE_WGT_manipulator2d(wmManipulatorGroupType *wgt)
static void image_widgets(void)
{
- const struct wmManipulatorMapType_Params wmap_params = {
- .idname = "Image_UV",
- .spaceid = SPACE_IMAGE, .regionid = RGN_TYPE_WINDOW
- };
- wmManipulatorMapType *wmaptype = WM_manipulatormaptype_ensure(&wmap_params);
+ wmManipulatorMapType *wmaptype = WM_manipulatormaptype_ensure(
+ &(const struct wmManipulatorMapType_Params){SPACE_IMAGE, RGN_TYPE_WINDOW});
- WM_manipulatorgrouptype_append(wmaptype, IMAGE_WGT_manipulator2d);
+ WM_manipulatorgrouptype_append_and_link(wmaptype, IMAGE_WGT_manipulator2d);
}
/************************** main region ***************************/
@@ -675,9 +674,12 @@ static void image_main_region_init(wmWindowManager *wm, ARegion *ar)
// UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
/* manipulators */
- if (!ar->manipulator_map) {
- ar->manipulator_map = WM_manipulatormap_new_from_type(&(const struct wmManipulatorMapType_Params) {
- "Image_UV", SPACE_IMAGE, RGN_TYPE_WINDOW});
+ if (ar->manipulator_map == NULL) {
+ const struct wmManipulatorMapType_Params wmap_params = {
+ .spaceid = SPACE_IMAGE,
+ .regionid = RGN_TYPE_WINDOW,
+ };
+ ar->manipulator_map = WM_manipulatormap_new_from_type(&wmap_params);
}
WM_manipulatormap_add_handlers(ar, ar->manipulator_map);
diff --git a/source/blender/editors/space_node/node_manipulators.c b/source/blender/editors/space_node/node_manipulators.c
index 6eb03a6eb26..3b590c0a59e 100644
--- a/source/blender/editors/space_node/node_manipulators.c
+++ b/source/blender/editors/space_node/node_manipulators.c
@@ -110,6 +110,8 @@ void NODE_WGT_backdrop_transform(wmManipulatorGroupType *wgt)
wgt->name = "Backdrop Transform Widgets";
wgt->idname = "NODE_WGT_backdrop_transform";
+ wgt->flag |= WM_MANIPULATORGROUPTYPE_PERSISTENT;
+
wgt->poll = WIDGETGROUP_node_transform_poll;
wgt->setup = WIDGETGROUP_node_transform_setup;
wgt->refresh = WIDGETGROUP_node_transform_refresh;
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 665808c500f..6a8a425f0d1 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -646,9 +646,9 @@ static void node_main_region_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy);
/* manipulators stay in the background for now - quick patchjob to make sure nodes themselves work */
- if (!ar->manipulator_map) {
- ar->manipulator_map = WM_manipulatormap_new_from_type(&(const struct wmManipulatorMapType_Params) {
- "Node_Canvas", SPACE_NODE, RGN_TYPE_WINDOW});
+ if (ar->manipulator_map == NULL) {
+ ar->manipulator_map = WM_manipulatormap_new_from_type(
+ &(const struct wmManipulatorMapType_Params){SPACE_NODE, RGN_TYPE_WINDOW});
}
WM_manipulatormap_add_handlers(ar, ar->manipulator_map);
@@ -859,9 +859,9 @@ static int node_context(const bContext *C, const char *member, bContextDataResul
static void node_widgets(void)
{
/* create the widgetmap for the area here */
- wmManipulatorMapType *wmaptype = WM_manipulatormaptype_ensure(&(const struct wmManipulatorMapType_Params) {
- "Node_Canvas", SPACE_NODE, RGN_TYPE_WINDOW});
- WM_manipulatorgrouptype_append(wmaptype, NODE_WGT_backdrop_transform);
+ wmManipulatorMapType *wmaptype = WM_manipulatormaptype_ensure(
+ &(const struct wmManipulatorMapType_Params){SPACE_NODE, RGN_TYPE_WINDOW});
+ WM_manipulatorgrouptype_append_and_link(wmaptype, NODE_WGT_backdrop_transform);
}
static void node_id_remap(ScrArea *UNUSED(sa), SpaceLink *slink, ID *old_id, ID *new_id)
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 0af2d54eaa2..002be9174ad 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -491,9 +491,9 @@ static void view3d_main_region_init(wmWindowManager *wm, ARegion *ar)
ListBase *lb;
wmKeyMap *keymap;
- if (!ar->manipulator_map) {
- ar->manipulator_map = WM_manipulatormap_new_from_type(&(const struct wmManipulatorMapType_Params) {
- "View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW});
+ if (ar->manipulator_map == NULL) {
+ ar->manipulator_map = WM_manipulatormap_new_from_type(
+ &(const struct wmManipulatorMapType_Params) {SPACE_VIEW3D, RGN_TYPE_WINDOW});
}
WM_manipulatormap_add_handlers(ar, ar->manipulator_map);
@@ -731,18 +731,15 @@ static void view3d_dropboxes(void)
static void view3d_widgets(void)
{
- const struct wmManipulatorMapType_Params wmap_params = {
- .idname = "View3D",
- .spaceid = SPACE_VIEW3D, .regionid = RGN_TYPE_WINDOW,
- };
- wmManipulatorMapType *wmaptype = WM_manipulatormaptype_ensure(&wmap_params);
-
- WM_manipulatorgrouptype_append(wmaptype, TRANSFORM_WGT_manipulator);
- WM_manipulatorgrouptype_append(wmaptype, VIEW3D_WGT_lamp);
- WM_manipulatorgrouptype_append(wmaptype, VIEW3D_WGT_force_field);
- WM_manipulatorgrouptype_append(wmaptype, VIEW3D_WGT_camera);
-
- WM_manipulatorgrouptype_append(wmaptype, VIEW3D_WGT_armature_facemaps);
+ wmManipulatorMapType *wmaptype = WM_manipulatormaptype_ensure(
+ &(const struct wmManipulatorMapType_Params){SPACE_VIEW3D, RGN_TYPE_WINDOW});
+
+ WM_manipulatorgrouptype_append_and_link(wmaptype, TRANSFORM_WGT_manipulator);
+ WM_manipulatorgrouptype_append_and_link(wmaptype, VIEW3D_WGT_lamp);
+ WM_manipulatorgrouptype_append_and_link(wmaptype, VIEW3D_WGT_force_field);
+ WM_manipulatorgrouptype_append_and_link(wmaptype, VIEW3D_WGT_camera);
+
+ WM_manipulatorgrouptype_append_and_link(wmaptype, VIEW3D_WGT_armature_facemaps);
}
diff --git a/source/blender/editors/space_view3d/view3d_manipulators.c b/source/blender/editors/space_view3d/view3d_manipulators.c
index 28d0c38d447..2a0ba6bc469 100644
--- a/source/blender/editors/space_view3d/view3d_manipulators.c
+++ b/source/blender/editors/space_view3d/view3d_manipulators.c
@@ -112,11 +112,13 @@ void VIEW3D_WGT_lamp(wmManipulatorGroupType *wgt)
wgt->name = "Lamp Widgets";
wgt->idname = "VIEW3D_WGT_lamp";
+ wgt->flag |= (WM_MANIPULATORGROUPTYPE_PERSISTENT |
+ WM_MANIPULATORGROUPTYPE_3D |
+ WM_MANIPULATORGROUPTYPE_SCALE_3D);
+
wgt->poll = WIDGETGROUP_lamp_poll;
wgt->setup = WIDGETGROUP_lamp_setup;
wgt->refresh = WIDGETGROUP_lamp_refresh;
-
- wgt->flag |= (WM_MANIPULATORGROUPTYPE_3D | WM_MANIPULATORGROUPTYPE_SCALE_3D);
}
/** \} */
@@ -284,11 +286,12 @@ void VIEW3D_WGT_camera(wmManipulatorGroupType *wgt)
wgt->name = "Camera Widgets";
wgt->idname = "VIEW3D_WGT_camera";
+ wgt->flag = (WM_MANIPULATORGROUPTYPE_PERSISTENT |
+ WM_MANIPULATORGROUPTYPE_3D);
+
wgt->poll = WIDGETGROUP_camera_poll;
wgt->setup = WIDGETGROUP_camera_setup;
wgt->refresh = WIDGETGROUP_camera_refresh;
-
- wgt->flag |= WM_MANIPULATORGROUPTYPE_3D;
}
/** \} */
@@ -352,11 +355,12 @@ void VIEW3D_WGT_force_field(wmManipulatorGroupType *wgt)
wgt->name = "Force Field Widgets";
wgt->idname = "VIEW3D_WGT_force_field";
+ wgt->flag |= (WM_MANIPULATORGROUPTYPE_PERSISTENT |
+ WM_MANIPULATORGROUPTYPE_3D);
+
wgt->poll = WIDGETGROUP_forcefield_poll;
wgt->setup = WIDGETGROUP_forcefield_init;
wgt->refresh = WIDGETGROUP_forcefield_refresh;
-
- wgt->flag |= WM_MANIPULATORGROUPTYPE_3D;
}
/** \} */
@@ -553,15 +557,16 @@ void VIEW3D_WGT_armature_facemaps(wmManipulatorGroupType *wgt)
wgt->name = "Face Map Widgets";
wgt->idname = "VIEW3D_WGT_armature_facemaps";
+ wgt->flag |= (WM_MANIPULATORGROUPTYPE_PERSISTENT |
+ WM_MANIPULATORGROUPTYPE_3D |
+ WM_MANIPULATORGROUPTYPE_SCALE_3D |
+ WM_MANIPULATORGROUPTYPE_SELECT);
+
wgt->poll = WIDGETGROUP_armature_facemaps_poll;
wgt->setup = WIDGETGROUP_armature_facemaps_init;
wgt->refresh = WIDGETGROUP_armature_facemaps_refresh;
- wgt->setup_keymap = WM_manipulatorgroup_keymap_common_sel;
-
- wgt->flag |= (WM_MANIPULATORGROUPTYPE_3D |
- WM_MANIPULATORGROUPTYPE_SCALE_3D |
- WM_MANIPULATORGROUPTYPE_SELECT);
+ wgt->setup_keymap = WM_manipulatorgroup_keymap_common_select;
}
/** \} */
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index eee9919efd4..b705320879a 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -1345,12 +1345,14 @@ void TRANSFORM_WGT_manipulator(wmManipulatorGroupType *wgt)
wgt->name = "Transform Manipulator";
wgt->idname = "TRANSFORM_WGT_manipulator";
+ wgt->flag |= (WM_MANIPULATORGROUPTYPE_PERSISTENT |
+ WM_MANIPULATORGROUPTYPE_3D |
+ WM_MANIPULATORGROUPTYPE_SCALE_3D);
+
wgt->poll = WIDGETGROUP_manipulator_poll;
wgt->setup = WIDGETGROUP_manipulator_init;
wgt->refresh = WIDGETGROUP_manipulator_refresh;
wgt->draw_prepare = WIDGETGROUP_manipulator_draw_prepare;
-
- wgt->flag |= (WM_MANIPULATORGROUPTYPE_3D | WM_MANIPULATORGROUPTYPE_SCALE_3D);
}
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index 677ea92aea1..9711de36ba3 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -426,6 +426,15 @@ void RNA_api_wm(StructRNA *srna)
parm = RNA_def_pointer(func, "timer", "Timer", "", "");
RNA_def_parameter_
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list