[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60803] trunk/blender/source/blender/ editors/interface: Project Pampa request: copy-paste for curve mapping widgets

Sergey Sharybin sergey.vfx at gmail.com
Wed Oct 16 19:48:33 CEST 2013


Revision: 60803
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60803
Author:   nazgul
Date:     2013-10-16 17:48:33 +0000 (Wed, 16 Oct 2013)
Log Message:
-----------
Project Pampa request: copy-paste for curve mapping widgets

Use C-c for copy, C-v for paste over the widget.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_intern.h

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2013-10-16 14:44:53 UTC (rev 60802)
+++ trunk/blender/source/blender/editors/interface/interface.c	2013-10-16 17:48:33 UTC (rev 60803)
@@ -4186,5 +4186,6 @@
 void UI_exit(void)
 {
 	ui_resources_free();
+	ui_button_clipboard_free();
 }
 

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-10-16 14:44:53 UTC (rev 60802)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-10-16 17:48:33 UTC (rev 60803)
@@ -242,6 +242,11 @@
 static void ui_handle_button_activate(bContext *C, ARegion *ar, uiBut *but, uiButtonActivateType type);
 static void button_timers_tooltip_remove(bContext *C, uiBut *but);
 
+/* buttons clipboard */
+static ColorBand but_copypaste_coba = {0};
+static CurveMapping but_copypaste_curve = {0};
+static bool but_copypaste_curve_alive = false;
+
 /* ******************** menu navigation helpers ************** */
 
 /* assumes event type is MOUSEPAN */
@@ -1324,7 +1329,6 @@
 /* c = copy, v = paste */
 static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, char mode)
 {
-	static ColorBand but_copypaste_coba = {0};
 	char buf[UI_MAX_DRAW_STR + 1] = {0};
 
 	if (mode == 'v' && but->lock  == TRUE) {
@@ -1458,6 +1462,28 @@
 			button_activate_state(C, but, BUTTON_STATE_EXIT);
 		}
 	}
+	else if (but->type == BUT_CURVE) {
+		if (mode == 'c') {
+			if (but->poin == NULL)
+				return;
+
+			but_copypaste_curve_alive = true;
+			curvemapping_free_data(&but_copypaste_curve);
+			curvemapping_copy_data(&but_copypaste_curve, (CurveMapping *) but->poin);
+		}
+		else {
+			if (!but_copypaste_curve_alive)
+				return;
+
+			if (!but->poin)
+				but->poin = MEM_callocN(sizeof(CurveMapping), "curvemapping");
+
+			button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
+			curvemapping_free_data((CurveMapping *) but->poin);
+			curvemapping_copy_data((CurveMapping *) but->poin, &but_copypaste_curve);
+			button_activate_state(C, but, BUTTON_STATE_EXIT);
+		}
+	}
 	/* operator button (any type) */
 	else if (but->optype) {
 		if (mode == 'c') {
@@ -7851,3 +7877,7 @@
 	}
 }
 
+void ui_button_clipboard_free(void)
+{
+	curvemapping_free_data(&but_copypaste_curve);
+}

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h	2013-10-16 14:44:53 UTC (rev 60802)
+++ trunk/blender/source/blender/editors/interface/interface_intern.h	2013-10-16 17:48:33 UTC (rev 60803)
@@ -523,6 +523,7 @@
 extern bool ui_button_is_active(struct ARegion *ar);
 extern int ui_button_open_menu_direction(uiBut *but);
 extern void ui_button_text_password_hide(char password_str[UI_MAX_DRAW_STR], uiBut *but, int restore);
+void ui_button_clipboard_free(void);
 
 /* interface_widgets.c */
 void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3);




More information about the Bf-blender-cvs mailing list