Enlightenment CVS committal Author : devilhorns Project : e_modules Module : rain
Dir : e_modules/rain Modified Files: Makefile.am e_mod_main.c e_mod_main.h Added Files: e_mod_config.c e_mod_config.h Log Message: Config Dialog for Rain Module =================================================================== RCS file: /cvsroot/enlightenment/e_modules/rain/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 12 Dec 2005 05:12:13 -0000 1.1 +++ Makefile.am 12 Dec 2005 20:38:47 -0000 1.2 @@ -20,7 +20,9 @@ pkgdir = $(datadir)/$(MODULE_ARCH) pkg_LTLIBRARIES = module.la module_la_SOURCES = e_mod_main.c \ - e_mod_main.h + e_mod_main.h \ + e_mod_config.c \ + e_mod_config.h module_la_LIBADD = @e_libs@ -lm module_la_LDFLAGS = -module -avoid-version module_la_DEPENDENCIES = $(top_builddir)/config.h =================================================================== RCS file: /cvsroot/enlightenment/e_modules/rain/e_mod_main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_mod_main.c 12 Dec 2005 05:12:13 -0000 1.1 +++ e_mod_main.c 12 Dec 2005 20:38:47 -0000 1.2 @@ -1,6 +1,7 @@ #include "e.h" #include "config.h" #include "e_mod_main.h" +#include "e_mod_config.h" /* module private routines */ static Rain *_rain_init(E_Module *m); @@ -14,12 +15,13 @@ static void _rain_cb_density_medium(void *data, E_Menu *m, E_Menu_Item *i); static void _rain_cb_density_dense(void *data, E_Menu *m, E_Menu_Item *mi); static void _rain_cb_show_clouds(void *data, E_Menu *m, E_Menu_Item *mi); +static void _rain_menu_cb_configure(void *data, E_Menu *m, E_Menu_Item *mi); /* public module routines. all modules must have these */ E_Module_Api e_modapi = { E_MODULE_API_VERSION, - "Rain" + "Rain" }; void *e_modapi_init(E_Module *m) @@ -113,7 +115,7 @@ E_Container *con; con = l2->data; - rain->cons = evas_list_append(rain->cons, con); + rain->con = con; rain->canvas = con->bg_evas; } } @@ -159,13 +161,6 @@ { free(rain->conf); E_CONFIG_DD_FREE(rain->conf_edd); - while (rain->cons) - { - E_Container *con; - - con = rain->cons->data; - rain->cons = evas_list_remove_list(rain->cons, rain->cons); - } _rain_clouds_free(rain); _rain_drops_free(rain); if (rain->animator) @@ -181,34 +176,8 @@ mn = e_menu_new(); mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, "Sprinkle"); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (rain->conf->cloud_count == 5) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _rain_cb_density_sparse, rain); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, "Drizzle"); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (rain->conf->cloud_count == 10) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _rain_cb_density_medium, rain); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, "Downpour"); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (rain->conf->cloud_count == 20) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _rain_cb_density_dense, rain); - - mi = e_menu_item_new(mn); - e_menu_item_separator_set(mi, 1); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, "Show Clouds"); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, rain->conf->show_clouds); - e_menu_item_callback_set(mi, _rain_cb_show_clouds, rain); + e_menu_item_label_set(mi, "Config Dialog"); + e_menu_item_callback_set(mi, _rain_menu_cb_configure, rain); return mn; } @@ -224,46 +193,6 @@ _rain_drops_load('l', rain); } -static void _rain_cb_density_sparse(void *data, E_Menu *m, E_Menu_Item *mi) -{ - Rain *rain; - - rain = data; - rain->conf->cloud_count = 5; - rain->conf->drop_count = 20; - - _rain_canvas_reset(rain); -} - -static void _rain_cb_density_medium(void *data, E_Menu *m, E_Menu_Item *mi) -{ - Rain *rain; - - rain = data; - rain->conf->cloud_count = 10; - rain->conf->drop_count = 60; - _rain_canvas_reset(rain); -} - -static void _rain_cb_density_dense(void *data, E_Menu *m, E_Menu_Item *mi) -{ - Rain *rain; - - rain = data; - rain->conf->cloud_count = 20; - rain->conf->drop_count = 150; - _rain_canvas_reset(rain); -} - -static void _rain_cb_show_clouds(void *data, E_Menu *m, E_Menu_Item *mi) -{ - Rain *rain; - - rain = data; - rain->conf->show_clouds = e_menu_item_toggle_get(mi); - _rain_canvas_reset(rain); -} - static void _rain_clouds_load(Rain *rain) { Evas_Object *o; @@ -286,7 +215,7 @@ evas_object_image_fill_set(o, 0, 0, tw, th); tx = random() % (rain->width - tw); - ty = random() % (rain->height - th); + ty = random() % ((rain->height/3) - th); evas_object_move(o, tx, ty); evas_object_pass_events_set(o, 1); evas_object_show(o); @@ -323,8 +252,9 @@ evas_object_image_alpha_set(o, 1); evas_object_image_fill_set(o, 0, 0, tw, th); - tx = random() % ww; - ty = random() % hh; + tx = random() % (ww - tw); + ty = random() % (hh - th); + evas_object_move(o, tx, ty); evas_object_pass_events_set(o, 1); evas_object_show(o); @@ -343,7 +273,7 @@ break; } rain->drops = evas_list_append(rain->drops, drop); - } + } } static int _rain_cb_animator(void *data) @@ -371,3 +301,21 @@ } return 1; } + +static void _rain_menu_cb_configure(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Rain *r; + + r = (Rain *)data; + if (!r) return; + e_int_config_rain(r->con, r); +} + +void _rain_cb_config_updated(void *data) +{ + Rain *r; + + r = (Rain *)data; + if (!r) return; + _rain_canvas_reset(r); +} =================================================================== RCS file: /cvsroot/enlightenment/e_modules/rain/e_mod_main.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_mod_main.h 12 Dec 2005 05:12:13 -0000 1.1 +++ e_mod_main.h 12 Dec 2005 20:38:47 -0000 1.2 @@ -15,7 +15,7 @@ struct _Rain { E_Module *module; - Evas_List *cons; + E_Container *con; Evas *canvas; Ecore_Animator *animator; Evas_List *clouds; @@ -41,4 +41,6 @@ EAPI int e_modapi_info (E_Module *m); EAPI int e_modapi_about (E_Module *m); +EAPI void _rain_cb_config_updated(void *data); + #endif ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs