From b4cd6e0dce3dab2dc899dc8ed59659f75ab7fcb0 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 19 Sep 2006 13:58:04 +0000 Subject: [PATCH] metric's first 2 patches - with 1 slight mod for xterm default cmd. SVN revision: 25976 --- src/bin/e_config.c | 2 ++ src/bin/e_config.h | 1 + src/bin/e_exebuf.c | 41 +++++++++++++++++++++++++++++++++ src/bin/e_fm.c | 43 ++++++++++++++++++++++++++++++++--- src/bin/e_int_config_exebuf.c | 22 ++++++++++++++++-- 5 files changed, 104 insertions(+), 5 deletions(-) diff --git a/src/bin/e_config.c b/src/bin/e_config.c index fd5b5ad6d..75c2ccbdb 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -457,6 +457,7 @@ e_config_init(void) E_CONFIG_VAL(D, T, exebuf_pos_min_h, INT); E_CONFIG_VAL(D, T, exebuf_pos_max_w, INT); E_CONFIG_VAL(D, T, exebuf_pos_max_h, INT); + E_CONFIG_VAL(D, T, exebuf_term_cmd, STR); E_CONFIG_LIST(D, T, color_classes, _e_config_color_class_edd); E_CONFIG_VAL(D, T, use_app_icon, INT); E_CONFIG_VAL(D, T, cfgdlg_auto_apply, INT); /**/ @@ -653,6 +654,7 @@ e_config_init(void) e_config->exebuf_pos_min_h = 160; e_config->exebuf_pos_max_w = 400; e_config->exebuf_pos_max_h = 320; + e_config->exebuf_term_cmd = evas_stringshare_add("xterm -hold -e"); e_config->color_classes = NULL; e_config->use_app_icon = 0; e_config->cfgdlg_auto_apply = 0; diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 2b8fe8df5..cb4b40773 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -209,6 +209,7 @@ struct _E_Config int exebuf_pos_min_h; // GUI int exebuf_pos_max_w; // GUI int exebuf_pos_max_h; // GUI + const char *exebuf_term_cmd; // GUI Evas_List *color_classes; int use_app_icon; // GUI int cfgdlg_auto_apply; // GUI diff --git a/src/bin/e_exebuf.c b/src/bin/e_exebuf.c index 32a698daf..d900c70bb 100644 --- a/src/bin/e_exebuf.c +++ b/src/bin/e_exebuf.c @@ -35,6 +35,7 @@ static int _e_exebuf_cb_sort_eap(void *data1, void *data2); static int _e_exebuf_cb_sort_exe(void *data1, void *data2); static void _e_exebuf_update(void); static void _e_exebuf_exec(void); +static void _e_exebuf_exec_term(void); static void _e_exebuf_exe_sel(E_Exebuf_Exe *exe); static void _e_exebuf_exe_desel(E_Exebuf_Exe *exe); static void _e_exebuf_exe_scroll_to(int i); @@ -427,6 +428,42 @@ _e_exebuf_exec(void) e_exebuf_hide(); } +static void +_e_exebuf_exec_term(void) +{ + char tmp[EXEBUFLEN]; + char *active_cmd; + + if (exe_sel) + { + if (exe_sel->app) + { + if (exe_sel->app->exe) + active_cmd = exe_sel->app->exe; + else + { + e_zone_app_exec(exebuf->zone, exe_sel->app); + e_exehist_add("exebuf", exe_sel->app->exe); + } + } + else + active_cmd = exe_sel->file; + } + else + active_cmd = cmd_buf; + + if (strlen(active_cmd) > 0) + { + /* Copy the terminal command to the start of the string... + * making sure it has a null terminator if greater than EXEBUFLEN */ + snprintf(tmp, EXEBUFLEN, "%s %s", e_config->exebuf_term_cmd, active_cmd); + e_zone_exec(exebuf->zone, tmp); + e_exehist_add("exebuf", tmp); + } + + e_exebuf_hide(); +} + static void _e_exebuf_exe_sel(E_Exebuf_Exe *exe) { @@ -984,8 +1021,12 @@ _e_exebuf_cb_key_down(void *data, int type, void *event) _e_exebuf_complete(); else if (!strcmp(ev->keysymbol, "Tab")) _e_exebuf_complete(); + else if (!strcmp(ev->keysymbol, "Return") && (ev->modifiers & ECORE_X_MODIFIER_CTRL)) + _e_exebuf_exec_term(); else if (!strcmp(ev->keysymbol, "Return")) _e_exebuf_exec(); + else if (!strcmp(ev->keysymbol, "KP_Enter") && (ev->modifiers & ECORE_X_MODIFIER_CTRL)) + _e_exebuf_exec_term(); else if (!strcmp(ev->keysymbol, "KP_Enter")) _e_exebuf_exec(); else if (!strcmp(ev->keysymbol, "Escape")) diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index 590e48fb0..af0087f7c 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -58,6 +58,7 @@ struct _E_Fm2_Smart_Data unsigned char iconlist_changed : 1; unsigned char order_file : 1; unsigned char typebuf_visible : 1; + unsigned char show_hidden_files : 1; E_Fm2_Config *config; @@ -200,6 +201,7 @@ static void _e_fm2_menu_post_cb(void *data, E_Menu *m); static void _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp); static void _e_fm2_icon_menu_post_cb(void *data, E_Menu *m); static void _e_fm2_refresh(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_fm2_toggle_hidden_files(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_fm2_new_directory(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_fm2_new_directory_delete_cb(void *obj); static void _e_fm2_new_directory_yes_cb(char *text, void *data); @@ -234,6 +236,7 @@ e_fm2_init(void) } else return 0; + _e_fm2_smart = evas_smart_new("e_fm", _e_fm2_smart_add, /* add */ _e_fm2_smart_del, /* del */ @@ -3190,10 +3193,10 @@ _e_fm2_cb_scan_idler(void *data) { dp = readdir(sd->dir); if (!dp) goto endscan; - /* no - you don't want the cuirrent and parent dir links listed */ + /* no - you don't want the current and parent dir links listed */ if ((!strcmp(dp->d_name, ".")) || (!strcmp(dp->d_name, ".."))) return 1; - /* skip dotfiles */ - if (dp->d_name[0] == '.') return 1; + /* skip dotfiles if we're not showing hidden files */ + if (dp->d_name[0] == '.' && !sd->show_hidden_files) return 1; _e_fm2_file_add(data, dp->d_name); } return 1; @@ -3511,6 +3514,16 @@ _e_fm2_menu(Evas_Object *obj, unsigned int timestamp) "e/fileman/button/refresh"); e_menu_item_callback_set(mi, _e_fm2_refresh, sd); + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Show Hidden Files")); + e_menu_item_icon_edje_set(mi, + e_theme_edje_file_get("base/theme/fileman", + "e/fileman/button/hidden_files"), + "e/fileman/button/hidden_files"); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, sd->show_hidden_files); + e_menu_item_callback_set(mi, _e_fm2_toggle_hidden_files, sd); + if (ecore_file_can_write(sd->realpath)) { mi = e_menu_item_new(mn); @@ -3592,6 +3605,16 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp) "e/fileman/button/refresh"); e_menu_item_callback_set(mi, _e_fm2_refresh, ic->sd); + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Show Hidden Files")); + e_menu_item_icon_edje_set(mi, + e_theme_edje_file_get("base/theme/fileman", + "e/fileman/button/hidden_files"), + "e/fileman/button/hidden_files"); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, sd->show_hidden_files); + e_menu_item_callback_set(mi, _e_fm2_toggle_hidden_files, sd); + if (ecore_file_can_write(sd->realpath)) { mi = e_menu_item_new(mn); @@ -3718,6 +3741,20 @@ _e_fm2_refresh(void *data, E_Menu *m, E_Menu_Item *mi) sd->refresh_job = ecore_job_add(_e_fm2_refresh_job_cb, sd->obj); } +static void +_e_fm2_toggle_hidden_files(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Fm2_Smart_Data *sd; + + sd = data; + if (sd->show_hidden_files) + sd->show_hidden_files = 0; + else + sd->show_hidden_files = 1; + + _e_fm2_refresh(data, m, mi); +} + static void _e_fm2_new_directory(void *data, E_Menu *m, E_Menu_Item *mi) { diff --git a/src/bin/e_int_config_exebuf.c b/src/bin/e_int_config_exebuf.c index d056249a0..257028b76 100644 --- a/src/bin/e_int_config_exebuf.c +++ b/src/bin/e_int_config_exebuf.c @@ -23,6 +23,7 @@ struct _E_Config_Dialog_Data int pos_min_h; int pos_max_w; int pos_max_h; + char * term_cmd; }; EAPI E_Config_Dialog * @@ -63,6 +64,9 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->pos_min_h = e_config->exebuf_pos_min_h; cfdata->pos_max_w = e_config->exebuf_pos_max_w; cfdata->pos_max_h = e_config->exebuf_pos_max_h; + if (e_config->exebuf_term_cmd) + cfdata->term_cmd = strdup(e_config->exebuf_term_cmd); + } static void * @@ -99,11 +103,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("General Settings"), 0); - ob = e_widget_label_add(evas, _("Maximum Number Of Matched Eaps To List")); + ob = e_widget_label_add(evas, _("Maximum Number of Matched Eaps to List")); e_widget_framelist_object_append(of, ob); ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 10, 50, 5, 0, NULL, &(cfdata->max_eap_list), 200); e_widget_framelist_object_append(of, ob); - ob = e_widget_label_add(evas, _("Maximum Number Of Matched Exes To List")); + ob = e_widget_label_add(evas, _("Maximum Number of Matched Exes to List")); e_widget_framelist_object_append(of, ob); ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 10, 50, 5, 0, NULL, &(cfdata->max_exe_list), 200); e_widget_framelist_object_append(of, ob); @@ -129,6 +133,13 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) e_config->exebuf_pos_min_h = cfdata->pos_min_h; e_config->exebuf_pos_max_w = cfdata->pos_max_w; e_config->exebuf_pos_max_h = cfdata->pos_max_h; + if (e_config->exebuf_term_cmd) + evas_stringshare_del(e_config->exebuf_term_cmd); + e_config->exebuf_term_cmd = NULL; + if (cfdata->term_cmd) + { + e_config->exebuf_term_cmd = evas_stringshare_add(cfdata->term_cmd); + } e_config_save_queue(); return 1; @@ -192,6 +203,13 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data e_widget_framelist_object_append(of, ob); e_widget_table_object_append(ot, of, 1, 0, 1, 2, 1, 0, 1, 0); + of = e_widget_framelist_add(evas, _("Terminal Settings"), 0); + ob = e_widget_label_add(evas, _("Terminal Command")); + e_widget_framelist_object_append(of, ob); + ob = e_widget_entry_add(evas, &(cfdata->term_cmd)); + e_widget_framelist_object_append(of, ob); + e_widget_table_object_append(ot, of, 1, 2, 1, 1, 1, 1, 1, 1); + e_widget_list_object_append(o, ot, 1, 1, 0.5); return o; }