[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34116] trunk/blender/source/blender/ editors: Markers Todo: Adding back "Rename Marker" operator (Ctrl M).

Joshua Leung aligorith at gmail.com
Thu Jan 6 04:10:43 CET 2011


Revision: 34116
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=34116
Author:   aligorith
Date:     2011-01-06 04:10:41 +0100 (Thu, 06 Jan 2011)

Log Message:
-----------
Markers Todo: Adding back "Rename Marker" operator (Ctrl M).

As we don't have any dedicated text-input boxes anymore, this is a bit
more clunky than it should optimally be.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/anim_markers.c
    trunk/blender/source/blender/editors/include/ED_markers.h

Modified: trunk/blender/source/blender/editors/animation/anim_markers.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_markers.c	2011-01-06 02:35:12 UTC (rev 34115)
+++ trunk/blender/source/blender/editors/animation/anim_markers.c	2011-01-06 03:10:41 UTC (rev 34116)
@@ -224,19 +224,19 @@
 
 /* --------------------------------- */
 
-/* This function checks if there are any markers selected at all */
-short ED_markers_has_selected(ListBase *markers)
+/* Get the first selected marker */
+TimeMarker *ED_markers_get_first_selected(ListBase *markers)
 {
 	TimeMarker *marker;
 	
 	if (markers) {
 		for (marker = markers->first; marker; marker = marker->next) {
 			if (marker->flag & SELECT)
-				return 1;
+				return marker;
 		}
 	}
 	
-	return 0;
+	return NULL;
 }
 
 /* ************* Marker Drawing ************ */
@@ -376,7 +376,7 @@
 		return 0;
 		
 	/* check if some marker is selected */
-	return ED_markers_has_selected(markers);
+	return ED_markers_get_first_selected(markers) != NULL;
 }
  
 /* ------------------------ */ 
@@ -1094,7 +1094,7 @@
 		return OPERATOR_CANCELLED;
 
 	if (action == SEL_TOGGLE) {
-		action = (ED_markers_has_selected(markers)) ? SEL_DESELECT : SEL_SELECT;
+		action = (ED_markers_get_first_selected(markers) != NULL) ? SEL_DESELECT : SEL_SELECT;
 	}
 	
 	for(marker= markers->first; marker; marker= marker->next) {
@@ -1136,7 +1136,7 @@
 	WM_operator_properties_select_all(ot);
 }
 
-/* ******************************* remove marker ***************** */
+/* ***************** remove marker *********************** */
 
 /* remove selected TimeMarkers */
 static int ed_marker_delete_exec(bContext *C, wmOperator *UNUSED(op))
@@ -1183,10 +1183,71 @@
 	ot->poll= ed_markers_poll_selected_markers;
 	
 	/* flags */
-	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;	
+}
+
+
+/* **************** rename marker ***************** */
+
+/* rename first selected TimeMarker */
+static int ed_marker_rename_exec(bContext *C, wmOperator *op)
+{
+	ListBase *markers= context_get_markers(C);
+	TimeMarker *marker;
+	short changed= 0;
 	
+	if (markers == NULL)
+		return OPERATOR_CANCELLED;
+	
+	for (marker= markers->first; marker; marker= marker->next) {
+		if (marker->flag & SELECT) {
+			/* directly get new name */
+			RNA_string_get(op->ptr, "name", marker->name);
+			
+			changed= 1;
+			break;
+		}
+	}
+	
+	if (changed) {
+		WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
+		WM_event_add_notifier(C, NC_ANIMATION|ND_MARKERS, NULL);
+	}
+	
+	return OPERATOR_FINISHED;
 }
 
+static int ed_marker_rename_invoke_wrapper(bContext *C, wmOperator *op, wmEvent *evt)
+{
+	/* must initialise the marker name first if there is a marker selected */
+	TimeMarker *marker = ED_markers_get_first_selected(context_get_markers(C));
+	if (marker)
+		RNA_string_set(op->ptr, "name", marker->name);
+	
+	/* now see if the operator is usable */
+	return ed_markers_opwrap_invoke_custom(C, op, evt, WM_operator_props_popup);
+}
+
+static void MARKER_OT_rename(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Rename Marker";
+	ot->description= "Rename first selected time marker";
+	ot->idname= "MARKER_OT_rename";
+	
+	/* api callbacks */
+	ot->invoke= ed_marker_rename_invoke_wrapper;
+	ot->exec= ed_marker_rename_exec;
+	ot->poll= ed_markers_poll_selected_markers;
+	
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;	
+	
+	/* properties */
+	ot->prop = RNA_def_string(ot->srna, "name", "RenamedMarker", 64, "Name", "New name for marker");
+	//RNA_def_boolean(ot->srna, "ensure_unique", 0, "Ensure Unique", "Ensure that new name is unique within collection of markers");
+}
+
 /* **************** make links to scene ***************** */
 
 static int ed_marker_make_links_scene_exec(bContext *C, wmOperator *op)
@@ -1299,6 +1360,7 @@
 	WM_operatortype_append(MARKER_OT_select_border);
 	WM_operatortype_append(MARKER_OT_select_all);
 	WM_operatortype_append(MARKER_OT_delete);
+	WM_operatortype_append(MARKER_OT_rename);
 	WM_operatortype_append(MARKER_OT_make_links_scene);
 #ifdef DURIAN_CAMERA_SWITCH
 	WM_operatortype_append(MARKER_OT_camera_bind);
@@ -1330,6 +1392,7 @@
 	WM_keymap_verify_item(keymap, "MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0);
 	WM_keymap_verify_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0);
 	WM_keymap_verify_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0);
+	WM_keymap_verify_item(keymap, "MARKER_OT_rename", MKEY, KM_PRESS, KM_CTRL, 0);
 	
 	WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0);
 #ifdef DURIAN_CAMERA_SWITCH

Modified: trunk/blender/source/blender/editors/include/ED_markers.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_markers.h	2011-01-06 02:35:12 UTC (rev 34115)
+++ trunk/blender/source/blender/editors/include/ED_markers.h	2011-01-06 03:10:41 UTC (rev 34116)
@@ -51,7 +51,7 @@
 
 void ED_markers_make_cfra_list(ListBase *markers, ListBase *lb, short sel);
 
-short ED_markers_has_selected(ListBase *markers);
+struct TimeMarker *ED_markers_get_first_selected(ListBase *markers);
 
 /* Operators ------------------------------ */
 





More information about the Bf-blender-cvs mailing list