I might not have been clear when I sent this earlier. What I'm asking is if it could be applied to the main tree as I think it makes a useful addition to exebuf. If I'm out of line or not doing things the right way, I apologise.
metrics On Sun, Sep 17, 2006 at 05:58:30PM +1000, Metrics wrote: > Greetings, > > The following patch is to add a "Run in Terminal" feature to exebuf. > If you press Ctrl+Enter/KPEnter after entering in the command or > selecting it from the file list, the command is run in a terminal. You > can change the terminal settings in the Run Command configuration dialog > box. > > This is my first enlightenment code/patch, so if I've done things > drastically wrong, or mucked up some stuff let me know. > > metrics > > Index: src/bin/e_config.c > =================================================================== > RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.c,v > retrieving revision 1.203 > diff -u -r1.203 e_config.c > --- src/bin/e_config.c 16 Sep 2006 11:35:54 -0000 1.203 > +++ src/bin/e_config.c 17 Sep 2006 03:39:28 -0000 > @@ -457,6 +457,7 @@ > 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->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 -e"); > e_config->color_classes = NULL; > e_config->use_app_icon = 0; > e_config->cfgdlg_auto_apply = 0; > Index: src/bin/e_config.h > =================================================================== > RCS file: /var/cvs/e/e17/apps/e/src/bin/e_config.h,v > retrieving revision 1.120 > diff -u -r1.120 e_config.h > --- src/bin/e_config.h 16 Sep 2006 11:35:54 -0000 1.120 > +++ src/bin/e_config.h 17 Sep 2006 03:39:28 -0000 > @@ -209,6 +209,7 @@ > 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 > Index: src/bin/e_exebuf.c > =================================================================== > RCS file: /var/cvs/e/e17/apps/e/src/bin/e_exebuf.c,v > retrieving revision 1.22 > diff -u -r1.22 e_exebuf.c > --- src/bin/e_exebuf.c 23 Aug 2006 03:39:01 -0000 1.22 > +++ src/bin/e_exebuf.c 17 Sep 2006 03:39:29 -0000 > @@ -35,6 +35,7 @@ > 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); > @@ -428,6 +429,42 @@ > } > > 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) > { > edje_object_signal_emit(exe->bg_object, "e,state,selected", "e"); > @@ -984,8 +1021,12 @@ > _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")) > Index: src/bin/e_int_config_exebuf.c > =================================================================== > RCS file: /var/cvs/e/e17/apps/e/src/bin/e_int_config_exebuf.c,v > retrieving revision 1.4 > diff -u -r1.4 e_int_config_exebuf.c > --- src/bin/e_int_config_exebuf.c 14 Aug 2006 15:22:45 -0000 1.4 > +++ src/bin/e_int_config_exebuf.c 17 Sep 2006 03:39:30 -0000 > @@ -23,6 +23,7 @@ > int pos_min_h; > int pos_max_w; > int pos_max_h; > + char * term_cmd; > }; > > EAPI E_Config_Dialog * > @@ -63,6 +64,9 @@ > 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 @@ > 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 @@ > 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 @@ > 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; > } > > ------------------------------------------------------------------------- > 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-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > ------------------------------------------------------------------------- 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-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel