[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35837] trunk/blender/source/blender/ makesrna: RNA functions for adding timer (needed for demo mode, also useful for python modal operators).
Campbell Barton
ideasman42 at gmail.com
Mon Mar 28 06:55:24 CEST 2011
Revision: 35837
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35837
Author: campbellbarton
Date: 2011-03-28 04:55:24 +0000 (Mon, 28 Mar 2011)
Log Message:
-----------
RNA functions for adding timer (needed for demo mode, also useful for python modal operators).
- timer = WindowManager.event_timer_add(time_step, window=None)
- WindowManager.event_timer_remove(timer)
Still TODO, is a way for python to check the timer identity.
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/RNA_access.h
trunk/blender/source/blender/makesrna/intern/rna_wm.c
trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h 2011-03-28 04:22:50 UTC (rev 35836)
+++ trunk/blender/source/blender/makesrna/RNA_access.h 2011-03-28 04:55:24 UTC (rev 35837)
@@ -532,6 +532,7 @@
extern StructRNA RNA_ThemeWidgetColors;
extern StructRNA RNA_ThemeWidgetStateColors;
extern StructRNA RNA_TimelineMarker;
+extern StructRNA RNA_Timer;
extern StructRNA RNA_ToolSettings;
extern StructRNA RNA_TouchSensor;
extern StructRNA RNA_TrackToConstraint;
Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c 2011-03-28 04:22:50 UTC (rev 35836)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c 2011-03-28 04:55:24 UTC (rev 35837)
@@ -1418,6 +1418,36 @@
RNA_define_verify_sdna(1); // not in sdna
}
+static void rna_def_timer(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "Timer", NULL);
+ RNA_def_struct_ui_text(srna, "Timer", "Window event timer");
+ RNA_def_struct_sdna(srna, "wmTimer");
+
+ RNA_define_verify_sdna(0); // not in sdna
+
+ /* could wrap more, for now this is enough */
+ prop= RNA_def_property(srna, "time_step", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "timestep");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Time Step", "");
+
+ prop= RNA_def_property(srna, "time_delta", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "delta");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Delta", "Time since last step in seconds");
+
+ prop= RNA_def_property(srna, "time_duration", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "duration");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Delta", "Time since last step in seconds");
+
+ RNA_define_verify_sdna(1); // not in sdna
+}
+
static void rna_def_window(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1801,6 +1831,7 @@
rna_def_macro_operator(brna);
rna_def_operator_type_macro(brna);
rna_def_event(brna);
+ rna_def_timer(brna);
rna_def_window(brna);
rna_def_windowmanager(brna);
rna_def_keyconfig(brna);
Modified: trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm_api.c 2011-03-28 04:22:50 UTC (rev 35836)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm_api.c 2011-03-28 04:55:24 UTC (rev 35837)
@@ -73,6 +73,17 @@
return WM_event_add_modal_handler(C, operator) != NULL;
}
+/* XXX, need a way for python to know event types, 0x0110 is hard coded */
+struct wmTimer *rna_event_timer_add(struct wmWindowManager *wm, float time_step, wmWindow *win)
+{
+ return WM_event_add_timer(wm, win, 0x0110, time_step);
+}
+
+void rna_event_timer_remove(struct wmWindowManager *wm, wmTimer *timer)
+{
+ return WM_event_remove_timer(wm, timer->win, timer);
+}
+
#else
#define WM_GEN_INVOKE_EVENT (1<<0)
@@ -118,6 +129,22 @@
RNA_def_property_flag(parm, PROP_REQUIRED);
RNA_def_function_return(func, RNA_def_boolean(func, "handle", 1, "", ""));
+
+ func= RNA_def_function(srna, "event_timer_add", "rna_event_timer_add");
+ parm= RNA_def_property(func, "time_step", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ RNA_def_property_range(parm, 0.0, FLT_MAX);
+ RNA_def_property_ui_text(parm, "Time Step", "Interval in seconds between timer events");
+ parm= RNA_def_pointer(func, "window", "Window", "", "Window to attach the timer to or None.");
+ parm= RNA_def_pointer(func, "result", "Timer", "", "");
+ RNA_def_function_return(func, parm);
+
+
+ func= RNA_def_function(srna, "event_timer_remove", "rna_event_timer_remove");
+ parm= RNA_def_pointer(func, "timer", "Timer", "", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL);
+
+
/* invoke functions, for use with python */
func= RNA_def_function(srna, "invoke_props_popup", "WM_operator_props_popup");
RNA_def_function_ui_description(func, "Operator popup invoke.");
More information about the Bf-blender-cvs
mailing list