Enlightenment CVS committal Author : devilhorns Project : e_modules Module : screenshot
Dir : e_modules/screenshot Modified Files: configure.in e_mod_config.c e_mod_main.c e_mod_main.h Log Message: Added an option to allow users to launch an image viewer after a screenshot is taken. (Note: Users will have to remove old module.screenshot.cfg to get this) Reworked config dialog a little bit. Better checks in configure.in for whether import or scrot is installed, and die if neither is installed. =================================================================== RCS file: /cvs/e/e_modules/screenshot/configure.in,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- configure.in 21 May 2006 04:01:33 -0000 1.16 +++ configure.in 21 May 2006 15:07:31 -0000 1.17 @@ -142,13 +142,15 @@ AC_PATH_PROG(IMPORT, import, "", $PATH) if test "x${PATH}" != "xNONE"; then AC_DEFINE_UNQUOTED(HAVE_IMPORT, 1, "You Have Import") - AC_DEFINE_UNQUOTED(IMPORT_PATH, "$IMPORT", "You Have Import") -fi - -AC_PATH_PROG(SCROT, scrot, "", $PATH) -if test "x${PATH}" != "xNONE"; then - AC_DEFINE_UNQUOTED(HAVE_SCROT, 1, "You Have Scrot") - AC_DEFINE_UNQUOTED(SCROT_PATH, "$SCROT", "You Have Scrot") + AC_DEFINE_UNQUOTED(IMPORT_PATH, "$IMPORT", "You Have Import") +else + AC_PATH_PROG(SCROT, scrot, "", $PATH) + if test "x${PATH}" != "xNONE"; then + AC_DEFINE_UNQUOTED(HAVE_SCROT, 1, "You Have Scrot") + AC_DEFINE_UNQUOTED(SCROT_PATH, "$SCROT", "You Have Scrot") + else + AC_MSG_ERROR("You do not have import or scrot installed.") + fi fi AC_PREFIX_DEFAULT(${HOME}/.e/e) =================================================================== RCS file: /cvs/e/e_modules/screenshot/e_mod_config.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- e_mod_config.c 20 May 2006 16:31:41 -0000 1.21 +++ e_mod_config.c 21 May 2006 15:07:31 -0000 1.22 @@ -24,6 +24,8 @@ int use_img_border; int use_thumb; } scrot; + int use_app; + char *app; }; /* Protos */ @@ -74,8 +76,13 @@ cfdata->filename = NULL; if (ci->filename != NULL) - cfdata->filename = strdup(ci->filename); + cfdata->filename = strdup(ci->filename); + cfdata->use_app = ci->use_app; + cfdata->app = NULL; + if (ci->app != NULL) + cfdata->app = strdup(ci->app); + cfdata->import.use_img_border = ci->import.use_img_border; cfdata->import.use_dither = ci->import.use_dither; cfdata->import.use_frame = ci->import.use_frame; @@ -113,44 +120,38 @@ E_Radio_Group *rg; o = e_widget_list_add(evas, 0, 0); - of = e_widget_framelist_add(evas, _("General Settings"), 0); + of = e_widget_frametable_add(evas, D_("General Settings"), 1); - ot = e_widget_table_add(evas, 0); if ((ecore_file_app_installed("import")) && (ecore_file_app_installed("scrot"))) { rg = e_widget_radio_group_new(&(cfdata->method)); ob = e_widget_radio_add(evas, D_("Use Import"), 0, rg); - e_widget_table_object_append(ot, ob, 0, 0, 1, 1, 1, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 1, 0); ob = e_widget_radio_add(evas, D_("Use Scrot"), 1, rg); - e_widget_table_object_append(ot, ob, 0, 1, 1, 1, 1, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 0, 0, 1, 0); } else if (ecore_file_app_installed("import")) cfdata->method = 0; else if (ecore_file_app_installed("scrot")) cfdata->method = 1; - + ob = e_widget_label_add(evas, D_("Delay Time:")); - e_widget_table_object_append(ot, ob, 0, 2, 1, 1, 0, 0, 1, 0); - ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), 0.0, 60.0, 1.0, 0, &(cfdata->delay_time), NULL, 200); - e_widget_table_object_append(ot, ob, 1, 2, 1, 1, 1, 0, 1, 0); - e_widget_framelist_object_append(of, ot); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 0, 0, 1, 0); + ob = e_widget_slider_add(evas, 1, 0, D_("%1.0f seconds"), 0.0, 60.0, 1.0, 0, &(cfdata->delay_time), NULL, 100); + e_widget_frametable_object_append(of, ob, 1, 1, 2, 1, 1, 0, 1, 0); e_widget_list_object_append(o, of, 1, 1, 0.5); - - of = e_widget_framelist_add(evas, D_("File Settings"), 0); - ot = e_widget_table_add(evas, 1); + + of = e_widget_frametable_add(evas, D_("File Settings"), 1); ob = e_widget_label_add(evas, D_("Save Directory:")); - e_widget_table_object_append(ot, ob, 0, 0, 1, 1, 0, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 1, 0); ob = e_widget_entry_add(evas, &cfdata->location); - e_widget_table_object_append(ot, ob, 1, 0, 1, 1, 1, 0, 1, 0); - ob = e_widget_label_add(evas, D_("Filename (minus extension):")); - e_widget_table_object_append(ot, ob, 0, 1, 1, 1, 0, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 1, 0, 2, 1, 1, 0, 1, 0); + ob = e_widget_label_add(evas, D_("Filename:")); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 0, 0, 1, 0); ob = e_widget_entry_add(evas, &cfdata->filename); - e_widget_table_object_append(ot, ob, 1, 1, 1, 1, 1, 0, 1, 0); - - e_widget_framelist_object_append(of, ot); + e_widget_frametable_object_append(of, ob, 1, 1, 2, 1, 1, 0, 1, 0); e_widget_list_object_append(o, of, 1, 1, 0.5); - return o; } @@ -209,17 +210,16 @@ ci = cfd->data; o = e_widget_list_add(evas, 0, 0); - of = e_widget_framelist_add(evas, _("General Settings"), 0); + of = e_widget_frametable_add(evas, D_("General Settings"), 1); - ot = e_widget_table_add(evas, 0); if ((ecore_file_app_installed("import")) && (ecore_file_app_installed("scrot"))) { rg = e_widget_radio_group_new(&(cfdata->method)); ob = e_widget_radio_add(evas, D_("Use Import"), 0, rg); - e_widget_table_object_append(ot, ob, 0, 0, 1, 1, 1, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 1, 0); ob = e_widget_radio_add(evas, D_("Use Scrot"), 1, rg); - e_widget_table_object_append(ot, ob, 0, 1, 1, 1, 1, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 0, 0, 1, 0); } else if (ecore_file_app_installed("import")) cfdata->method = 0; @@ -227,52 +227,57 @@ cfdata->method = 1; ob = e_widget_label_add(evas, D_("Delay Time:")); - e_widget_table_object_append(ot, ob, 0, 2, 1, 1, 0, 0, 1, 0); - ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), 0.0, 60.0, 1.0, 0, &(cfdata->delay_time), NULL, 200); - e_widget_table_object_append(ot, ob, 1, 2, 1, 1, 1, 0, 1, 0); - e_widget_framelist_object_append(of, ot); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 0, 0, 1, 0); + ob = e_widget_slider_add(evas, 1, 0, D_("%1.0f seconds"), 0.0, 60.0, 1.0, 0, &(cfdata->delay_time), NULL, 100); + e_widget_frametable_object_append(of, ob, 1, 1, 2, 1, 1, 0, 1, 0); e_widget_list_object_append(o, of, 1, 1, 0.5); - of = e_widget_framelist_add(evas, D_("File Settings"), 0); - ot = e_widget_table_add(evas, 1); + of = e_widget_frametable_add(evas, D_("Image Viewer Settings"), 1); + ob = e_widget_check_add(evas, D_("Launch Image Viewer After Screenshot"), &(cfdata->use_app)); + e_widget_frametable_object_append(of, ob, 0, 0, 2, 1, 1, 0, 1, 0); + ob = e_widget_entry_add(evas, &(cfdata->app)); + e_widget_frametable_object_append(of, ob, 0, 1, 2, 1, 1, 0, 1, 0); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + of = e_widget_frametable_add(evas, D_("File Settings"), 1); ob = e_widget_label_add(evas, D_("Save Directory:")); - e_widget_table_object_append(ot, ob, 0, 0, 1, 1, 0, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 1, 0); ob = e_widget_entry_add(evas, &cfdata->location); - e_widget_table_object_append(ot, ob, 1, 0, 1, 1, 1, 0, 1, 0); - ob = e_widget_label_add(evas, D_("Filename (minus extension):")); - e_widget_table_object_append(ot, ob, 0, 1, 1, 1, 0, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 1, 0, 2, 1, 1, 0, 1, 0); + ob = e_widget_label_add(evas, D_("Filename:")); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 0, 0, 1, 0); ob = e_widget_entry_add(evas, &cfdata->filename); - e_widget_table_object_append(ot, ob, 1, 1, 1, 1, 1, 0, 1, 0); - e_widget_framelist_object_append(of, ot); + e_widget_frametable_object_append(of, ob, 1, 1, 2, 1, 1, 0, 1, 0); e_widget_list_object_append(o, of, 1, 1, 0.5); + ot = e_widget_table_add(evas, 0); if (ecore_file_app_installed("import")) { - of = e_widget_framelist_add(evas, D_("Import Options"), 0); + of = e_widget_frametable_add(evas, D_("Import Settings"), 0); ob = e_widget_check_add(evas, D_("Include Image Border"), &(cfdata->import.use_img_border)); - e_widget_framelist_object_append(of, ob); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 1, 0); ob = e_widget_check_add(evas, D_("Use Image Dithering"), &(cfdata->import.use_dither)); - e_widget_framelist_object_append(of, ob); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 0, 0, 1, 0); ob = e_widget_check_add(evas, D_("Include Window Manager Frame"), &(cfdata->import.use_frame)); - e_widget_framelist_object_append(of, ob); + e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 0, 0, 1, 0); ob = e_widget_check_add(evas, D_("Choose Window To Grab"), &(cfdata->import.use_window)); - e_widget_framelist_object_append(of, ob); + e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 0, 0, 1, 0); ob = e_widget_check_add(evas, D_("Silent"), &(cfdata->import.use_silent)); - e_widget_framelist_object_append(of, ob); + e_widget_frametable_object_append(of, ob, 0, 4, 1, 1, 0, 0, 1, 0); ob = e_widget_check_add(evas, D_("Trim Edges"), &(cfdata->import.use_trim)); - e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 0, 0, 1, 0); + e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 1); } if (ecore_file_app_installed("scrot")) { - of = e_widget_framelist_add(evas, D_("Scrot Options"), 0); + of = e_widget_frametable_add(evas, D_("Scrot Settings"), 0); ob = e_widget_check_add(evas, D_("Include Image Border"), &(cfdata->scrot.use_img_border)); - e_widget_framelist_object_append(of, ob); + e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 1, 0); ob = e_widget_check_add(evas, D_("Generate Thumbnail"), &(cfdata->scrot.use_thumb)); - e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); + e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 0, 0, 1, 0); + e_widget_table_object_append(ot, of, 1, 0, 1, 1, 1, 1, 1, 1); } - + e_widget_list_object_append(o, ot, 1, 1, 0.5); return o; } @@ -284,6 +289,14 @@ ci = cfd->data; _basic_apply_data(cfd, cfdata); + ci->use_app = cfdata->use_app; + if (ci->app) + evas_stringshare_del(ci->app); + if (cfdata->app != NULL) + ci->app = evas_stringshare_add(cfdata->app); + else + ci->app = evas_stringshare_add(""); + ci->import.use_img_border = cfdata->import.use_img_border; ci->import.use_dither = cfdata->import.use_dither; ci->import.use_frame = cfdata->import.use_frame; =================================================================== RCS file: /cvs/e/e_modules/screenshot/e_mod_main.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- e_mod_main.c 21 May 2006 12:06:52 -0000 1.33 +++ e_mod_main.c 21 May 2006 15:07:31 -0000 1.34 @@ -21,6 +21,7 @@ Evas_Object *ss_obj; Screenshot *ss; Ecore_Exe *exe; + const char *filename; }; struct _Screenshot @@ -104,6 +105,7 @@ Instance *inst; inst = gcc->data; + if (inst->filename) evas_stringshare_del(inst->filename); ss_config->instances = evas_list_remove(ss_config->instances, inst); _ss_free(inst->ss); free(inst); @@ -239,6 +241,8 @@ ci->import.use_trim = 1; ci->scrot.use_img_border = 1; ci->scrot.use_thumb = 0; + ci->use_app = 0; + ci->app = evas_stringshare_add(""); ss_config->items = evas_list_append(ss_config->items, ci); return ci; @@ -276,6 +280,8 @@ E_CONFIG_VAL(D, T, import.use_trim, UCHAR); E_CONFIG_VAL(D, T, scrot.use_img_border, UCHAR); E_CONFIG_VAL(D, T, scrot.use_thumb, UCHAR); + E_CONFIG_VAL(D, T, use_app, INT); + E_CONFIG_VAL(D, T, app, STR); conf_edd = E_CONFIG_DD_NEW("Screenshot_Config", Config); #undef T @@ -323,6 +329,8 @@ ci->import.use_trim = 1; ci->scrot.use_img_border = 1; ci->scrot.use_thumb = 0; + ci->use_app = 0; + ci->app = evas_stringshare_add(""); ss_config->items = evas_list_append(ss_config->items, ci); } @@ -358,6 +366,7 @@ if (ci->id) evas_stringshare_del(ci->id); if (ci->location) evas_stringshare_del(ci->location); if (ci->filename) evas_stringshare_del(ci->filename); + if (ci->app) evas_stringshare_del(ci->app); ss_config->items = evas_list_remove_list(ss_config->items, ss_config->items); free(ci); } @@ -437,6 +446,9 @@ char buf[1024]; char *cmd, *opt, *f; Config_Item *ci; + + if (inst->exe) + return; ci = _ss_config_item_get(inst->gcc->id); @@ -462,12 +474,10 @@ snprintf(buf, sizeof(buf), "%s %s", cmd, opt); else snprintf(buf, sizeof(buf), "%s %s %s", cmd, opt, f); - - ss_config->exe_exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, - _ss_exe_cb_exit, NULL); - inst->exe = ecore_exe_run(buf, inst); - + inst->filename = evas_stringshare_add(f); + ss_config->exe_exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + _ss_exe_cb_exit, NULL); if (ci->delay_time > 0) { msg = malloc(sizeof(Edje_Message_Int_Set) + 1 * sizeof(int)); @@ -476,6 +486,7 @@ edje_object_message_send(inst->ss->ss_obj, EDJE_MESSAGE_INT_SET, 1, msg); free(msg); } + inst->exe = ecore_exe_run(buf, inst); } char * @@ -603,7 +614,9 @@ Instance *inst; Ecore_Exe_Event_Del *ev; Ecore_Exe *x; - + Config_Item *ci; + char buf[4096]; + ev = event; if (!ev->exe) return 1; x = ev->exe; @@ -612,8 +625,17 @@ inst = ecore_exe_data_get(x); x = NULL; inst->exe = NULL; - + if (inst->filename) + evas_stringshare_del(inst->filename); if (ss_config->exe_exit_handler) ecore_event_handler_del(ss_config->exe_exit_handler); + + ci = _ss_config_item_get(inst->gcc->id); + if ((ci->use_app) && (ci->app != NULL)) + { + snprintf(buf, sizeof(buf), "%s %s", ci->app, inst->filename); + x = ecore_exe_run(buf, NULL); + } + return 0; } =================================================================== RCS file: /cvs/e/e_modules/screenshot/e_mod_main.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- e_mod_main.h 20 May 2006 16:31:41 -0000 1.12 +++ e_mod_main.h 21 May 2006 15:07:31 -0000 1.13 @@ -25,6 +25,8 @@ unsigned char use_scrot; const char *location; const char *filename; + int use_app; + const char *app; struct { unsigned char use_img_border; ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs