[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44746] trunk/blender/source/blender: New operators for clip editor's curve view:

Sergey Sharybin sergey.vfx at gmail.com
Thu Mar 8 18:06:47 CET 2012


Revision: 44746
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44746
Author:   nazgul
Date:     2012-03-08 17:06:40 +0000 (Thu, 08 Mar 2012)
Log Message:
-----------
New operators for clip editor's curve view:
- Select All operator for selecting markers
- Disable selected markers operator

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_clip/clip_graph_ops.c
    trunk/blender/source/blender/editors/space_clip/clip_intern.h
    trunk/blender/source/blender/editors/space_clip/space_clip.c
    trunk/blender/source/blender/makesdna/DNA_tracking_types.h

Modified: trunk/blender/source/blender/editors/space_clip/clip_graph_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_graph_ops.c	2012-03-08 16:46:14 UTC (rev 44745)
+++ trunk/blender/source/blender/editors/space_clip/clip_graph_ops.c	2012-03-08 17:06:40 UTC (rev 44746)
@@ -42,6 +42,7 @@
 #include "BKE_context.h"
 #include "BKE_movieclip.h"
 #include "BKE_tracking.h"
+#include "BKE_depsgraph.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -83,13 +84,13 @@
 
 	switch(data->action) {
 		case SEL_SELECT:
-			marker->flag|= (MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y);
+			marker->flag|= MARKER_GRAPH_SEL;
 			break;
 		case SEL_DESELECT:
-			marker->flag&= ~(MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y);
+			marker->flag&= ~MARKER_GRAPH_SEL;
 			break;
 		case SEL_INVERT:
-			marker->flag^= (MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y);
+			marker->flag^= MARKER_GRAPH_SEL;
 			break;
 	}
 }
@@ -333,7 +334,7 @@
 		data->change = TRUE;
 	}
 	else if (!data->extend) {
-		marker->flag&= ~(MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y);
+		marker->flag&= ~MARKER_GRAPH_SEL;
 	}
 }
 
@@ -391,6 +392,72 @@
 	WM_operator_properties_gesture_border(ot, TRUE);
 }
 
+/********************** select all operator *********************/
+
+static int graph_select_all_markers_exec(bContext *C, wmOperator *op)
+{
+	SpaceClip *sc = CTX_wm_space_clip(C);
+	MovieClip *clip = ED_space_clip(sc);
+	MovieTracking *tracking = &clip->tracking;
+	MovieTrackingTrack *act_track= BKE_tracking_active_track(tracking);
+	MovieTrackingMarker *marker;
+	int action = RNA_enum_get(op->ptr, "action");
+	int a;
+
+	if (!act_track)
+		return OPERATOR_CANCELLED;
+
+	if (action == SEL_TOGGLE) {
+		action = SEL_SELECT;
+
+		for (a = 0; a < act_track->markersnr; a++) {
+			marker = &act_track->markers[a];
+
+			if (marker->flag & MARKER_GRAPH_SEL) {
+				action = SEL_DESELECT;
+				break;
+			}
+		}
+	}
+
+	for (a = 0; a < act_track->markersnr; a++) {
+		marker = &act_track->markers[a];
+
+		switch (action) {
+			case SEL_SELECT:
+				marker->flag |= MARKER_GRAPH_SEL;
+				break;
+			case SEL_DESELECT:
+				marker->flag &= ~MARKER_GRAPH_SEL;
+				break;
+			case SEL_INVERT:
+				marker->flag ^= MARKER_GRAPH_SEL;
+				break;
+		}
+	}
+
+	WM_event_add_notifier(C, NC_GEOM|ND_SELECT, NULL);
+
+	return OPERATOR_FINISHED;
+}
+
+void CLIP_OT_graph_select_all_markers(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Select or Deselect All Markers";
+	ot->description = "Change selection of all markers of active track";
+	ot->idname = "CLIP_OT_graph_select_all_markers";
+
+	/* api callbacks */
+	ot->exec = graph_select_all_markers_exec;
+	ot->poll = ED_space_clip_graph_poll;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	WM_operator_properties_select_all(ot);
+}
+
 /******************** delete curve operator ********************/
 
 static int delete_curve_exec(bContext *C, wmOperator *UNUSED(op))
@@ -439,7 +506,7 @@
 		while(a<act_track->markersnr) {
 			MovieTrackingMarker *marker= &act_track->markers[a];
 
-			if(marker->flag & (MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y))
+			if(marker->flag & MARKER_GRAPH_SEL)
 				clip_delete_marker(C, clip, tracksbase, act_track, marker);
 			else
 				a++;
@@ -567,3 +634,63 @@
 	ot->exec = center_current_frame_exec;
 	ot->poll = ED_space_clip_graph_poll;
 }
+
+/********************** disable markers operator *********************/
+
+static int graph_disable_markers_exec(bContext *C, wmOperator *op)
+{
+	SpaceClip *sc = CTX_wm_space_clip(C);
+	MovieClip *clip = ED_space_clip(sc);
+	MovieTracking *tracking = &clip->tracking;
+	MovieTrackingTrack *act_track = BKE_tracking_active_track(tracking);
+	MovieTrackingMarker *marker;
+	int action = RNA_enum_get(op->ptr, "action");
+	int a;
+
+	if (!act_track || (act_track->flag & TRACK_LOCKED))
+		return OPERATOR_CANCELLED;
+
+	for (a = 0; a < act_track->markersnr; a++) {
+		marker = &act_track->markers[a];
+
+		if (marker->flag & MARKER_GRAPH_SEL) {
+			if (action==0)
+				marker->flag |= MARKER_DISABLED;
+			else if(action==1)
+				marker->flag &= ~MARKER_DISABLED;
+			else
+				marker->flag ^= MARKER_DISABLED;
+		}
+	}
+
+	DAG_id_tag_update(&clip->id, 0);
+
+	WM_event_add_notifier(C, NC_MOVIECLIP|NA_EVALUATED, clip);
+
+	return OPERATOR_FINISHED;
+}
+
+void CLIP_OT_graph_disable_markers(wmOperatorType *ot)
+{
+	static EnumPropertyItem actions_items[] = {
+			{0, "DISABLE", 0, "Disable", "Disable selected markers"},
+			{1, "ENABLE", 0, "Enable", "Enable selected markers"},
+			{2, "TOGGLE", 0, "Toggle", "Toggle disabled flag for selected markers"},
+			{0, NULL, 0, NULL, NULL}
+	};
+
+	/* identifiers */
+	ot->name = "Disable Markers";
+	ot->description = "Disable/enable selected markers";
+	ot->idname = "CLIP_OT_graph_disable_markers";
+
+	/* api callbacks */
+	ot->exec = graph_disable_markers_exec;
+	ot->poll = ED_space_clip_graph_poll;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	/* properties */
+	RNA_def_enum(ot->srna, "action", actions_items, 0, "Action", "Disable action to execute");
+}

Modified: trunk/blender/source/blender/editors/space_clip/clip_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_intern.h	2012-03-08 16:46:14 UTC (rev 44745)
+++ trunk/blender/source/blender/editors/space_clip/clip_intern.h	2012-03-08 17:06:40 UTC (rev 44746)
@@ -59,10 +59,12 @@
 
 void CLIP_OT_graph_select(struct wmOperatorType *ot);
 void CLIP_OT_graph_select_border(struct wmOperatorType *ot);
+void CLIP_OT_graph_select_all_markers(struct wmOperatorType *ot);
 void CLIP_OT_graph_delete_curve(struct wmOperatorType *ot);
 void CLIP_OT_graph_delete_knot(struct wmOperatorType *ot);
 void CLIP_OT_graph_view_all(struct wmOperatorType *ot);
 void CLIP_OT_graph_center_current_frame(struct wmOperatorType *ot);
+void CLIP_OT_graph_disable_markers(struct wmOperatorType *ot);
 
 /* clip_ops.c */
 void CLIP_OT_open(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/space_clip/space_clip.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-03-08 16:46:14 UTC (rev 44745)
+++ trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-03-08 17:06:40 UTC (rev 44746)
@@ -368,21 +368,29 @@
 
 	WM_operatortype_append(CLIP_OT_clean_tracks);
 
+	/* object tracking */
+	WM_operatortype_append(CLIP_OT_tracking_object_new);
+	WM_operatortype_append(CLIP_OT_tracking_object_remove);
+
+	/* clipboard */
+	WM_operatortype_append(CLIP_OT_copy_tracks);
+	WM_operatortype_append(CLIP_OT_paste_tracks);
+
+	/* ** clip_graph_ops.c  ** */
+
 	/* graph editing */
+
+	/* selection */
 	WM_operatortype_append(CLIP_OT_graph_select);
 	WM_operatortype_append(CLIP_OT_graph_select_border);
+	WM_operatortype_append(CLIP_OT_graph_select_all_markers);
+
 	WM_operatortype_append(CLIP_OT_graph_delete_curve);
 	WM_operatortype_append(CLIP_OT_graph_delete_knot);
 	WM_operatortype_append(CLIP_OT_graph_view_all);
 	WM_operatortype_append(CLIP_OT_graph_center_current_frame);
 
-	/* object tracking */
-	WM_operatortype_append(CLIP_OT_tracking_object_new);
-	WM_operatortype_append(CLIP_OT_tracking_object_remove);
-
-	/* clipboard */
-	WM_operatortype_append(CLIP_OT_copy_tracks);
-	WM_operatortype_append(CLIP_OT_paste_tracks);
+	WM_operatortype_append(CLIP_OT_graph_disable_markers);
 }
 
 static void clip_keymap(struct wmKeyConfig *keyconf)
@@ -562,6 +570,11 @@
 	kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0);
 	RNA_boolean_set(kmi->ptr, "extend", TRUE);
 
+	kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select_all_markers", AKEY, KM_PRESS, 0, 0);
+	RNA_enum_set(kmi->ptr, "action", SEL_TOGGLE);
+	kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select_all_markers", IKEY, KM_PRESS, KM_CTRL, 0);
+	RNA_enum_set(kmi->ptr, "action", SEL_INVERT);
+
 	WM_keymap_add_item(keymap, "CLIP_OT_graph_select_border", BKEY, KM_PRESS, 0, 0);
 
 	/* delete */
@@ -589,6 +602,10 @@
 	RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_ALL);
 	RNA_boolean_set(kmi->ptr, "clear_active", TRUE);
 
+	/* tracks */
+	kmi= WM_keymap_add_item(keymap, "CLIP_OT_graph_disable_markers", DKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_enum_set(kmi->ptr, "action", 2);	/* toggle */
+
 	transform_keymap_for_space(keyconf, keymap, SPACE_CLIP);
 }
 

Modified: trunk/blender/source/blender/makesdna/DNA_tracking_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_tracking_types.h	2012-03-08 16:46:14 UTC (rev 44745)
+++ trunk/blender/source/blender/makesdna/DNA_tracking_types.h	2012-03-08 17:06:40 UTC (rev 44746)
@@ -218,6 +218,7 @@
 #define MARKER_TRACKED	(1<<1)
 #define MARKER_GRAPH_SEL_X (1<<2)
 #define MARKER_GRAPH_SEL_Y (1<<3)
+#define MARKER_GRAPH_SEL	(MARKER_GRAPH_SEL_X|MARKER_GRAPH_SEL_Y)
 
 /* MovieTrackingTrack->flag */
 #define TRACK_HAS_BUNDLE	(1<<1)




More information about the Bf-blender-cvs mailing list