Enlightenment CVS committal

Author  : urandom
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_config.c e_config.h e_exebuf.c e_exehist.c e_exehist.h 
        e_int_config_exebuf.c 


Log Message:
the exebuf now has access to the exe history via the up arrow.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.209
retrieving revision 1.210
diff -u -3 -r1.209 -r1.210
--- e_config.c  14 Oct 2006 03:45:55 -0000      1.209
+++ e_config.c  14 Oct 2006 10:57:17 -0000      1.210
@@ -447,6 +447,7 @@
    E_CONFIG_LIST(D, T, path_append_messages, _e_config_path_append_edd); /**/
    E_CONFIG_VAL(D, T, exebuf_max_exe_list, INT);
    E_CONFIG_VAL(D, T, exebuf_max_eap_list, INT);
+   E_CONFIG_VAL(D, T, exebuf_max_hist_list, INT);
    E_CONFIG_VAL(D, T, exebuf_scroll_animate, INT);
    E_CONFIG_VAL(D, T, exebuf_scroll_speed, DOUBLE);
    E_CONFIG_VAL(D, T, exebuf_pos_align_x, DOUBLE);
@@ -646,6 +647,7 @@
    e_config->input_method = NULL;      
    e_config->exebuf_max_exe_list = 20;
    e_config->exebuf_max_eap_list = 20;
+   e_config->exebuf_max_hist_list = 20;
    e_config->exebuf_scroll_animate = 1;
    e_config->exebuf_scroll_speed = 0.1;
    e_config->exebuf_pos_align_x = 0.5;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -3 -r1.126 -r1.127
--- e_config.h  14 Oct 2006 03:45:55 -0000      1.126
+++ e_config.h  14 Oct 2006 10:57:18 -0000      1.127
@@ -199,6 +199,7 @@
    int         fullscreen_policy; // GUI
    int         exebuf_max_exe_list; // GUI
    int         exebuf_max_eap_list; // GUI
+   int         exebuf_max_hist_list; // GUI
    int         exebuf_scroll_animate; // GUI
    double      exebuf_scroll_speed; // GUI
    double      exebuf_pos_align_x; // GUI
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_exebuf.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_exebuf.c  22 Sep 2006 21:34:13 -0000      1.25
+++ e_exebuf.c  14 Oct 2006 10:57:18 -0000      1.26
@@ -45,6 +45,8 @@
 static void _e_exebuf_complete(void);
 static void _e_exebuf_backspace(void);
 static void _e_exebuf_matches_update(void);
+static void _e_exebuf_hist_update(void);
+static void _e_exebuf_hist_clear(void);
 static void _e_exebuf_cb_eap_item_mouse_in(void *data, Evas *evas,
       Evas_Object *obj, void *event_info);
 static void _e_exebuf_cb_exe_item_mouse_in(void *data, Evas *evas,
@@ -82,6 +84,7 @@
 #define NO_LIST 0
 #define EAP_LIST 1
 #define EXE_LIST 2
+#define HIST_LIST 3
 static int which_list = NO_LIST;
 static E_Exebuf_Exe *exe_sel = NULL;
 static int exe_scroll_to = 0;
@@ -609,6 +612,32 @@
                    }
               }
          }
+       else if (which_list == HIST_LIST)
+         {
+            if (exe_sel)
+              {
+                 for (i = 0, l = eaps; l; l = l->next, i++)
+                   {
+                      if (l->data == exe_sel)
+                        {
+                           _e_exebuf_exe_desel(exe_sel);
+                           if (l->prev)
+                             {
+                                exe_sel = l->prev->data;
+                                _e_exebuf_exe_sel(exe_sel);
+                                _e_exebuf_eap_scroll_to(i - 1);
+                             }
+                           else
+                             {
+                                exe_sel = NULL;
+                                which_list = NO_LIST;
+                                _e_exebuf_hist_clear();
+                             }
+                           break;
+                        }
+                   }
+              }
+         }
      }
 }
 
@@ -630,6 +659,17 @@
                  _e_exebuf_eap_scroll_to(0);
               }
          }
+       else
+         {
+            _e_exebuf_hist_update();
+            which_list = HIST_LIST;
+            exe_sel = eaps->data;
+            if (exe_sel)
+              {
+                 _e_exebuf_exe_sel(exe_sel);
+                 _e_exebuf_eap_scroll_to(0);
+              }
+         }
      }
    else
      {
@@ -678,6 +718,26 @@
                    }
               }
          }
+       else if (which_list == HIST_LIST)
+         {
+            if (exe_sel)
+              {
+                 for (i = 0, l = eaps; l; l = l->next, i++)
+                   {
+                      if (l->data == exe_sel)
+                        {
+                           if (l->next)
+                             {
+                                _e_exebuf_exe_desel(exe_sel);
+                                exe_sel = l->next->data;
+                                _e_exebuf_exe_sel(exe_sel);
+                                _e_exebuf_eap_scroll_to(i + 1);
+                             }
+                           break;
+                        }
+                   }
+              }
+         }
      }
 }
 
@@ -687,7 +747,10 @@
    char common[EXEBUFLEN], *exe = NULL;
    Evas_List *l;
    int orig_len = 0, common_len = 0, exe_len, next_char, val, pos, matches;
+   int clear_hist = 0;
    
+   if (!(strlen(cmd_buf)))
+     clear_hist = 1;
    if (exe_sel)
      {
        if (exe_sel->app)
@@ -745,6 +808,8 @@
        strncpy(cmd_buf, exe, common_len);
        cmd_buf[common_len] = 0;
      }
+   if (clear_hist)
+     _e_exebuf_hist_clear();
    _e_exebuf_update();
    _e_exebuf_matches_update();
 }
@@ -1017,6 +1082,66 @@
    evas_event_thaw(exebuf->evas);
 }
 
+static void
+_e_exebuf_hist_update(void)
+{
+   Evas_List *list = NULL, *l = NULL;
+
+   edje_object_signal_emit(bg_object, "e,action,show,history", "e");
+   list = evas_list_reverse(e_exehist_list_get());
+   for (l = list; l; l = l->next)
+     {
+       E_Exebuf_Exe *exe;
+       Evas_Coord mw, mh;
+       Evas_Object *o;
+       
+       exe = calloc(1, sizeof(E_Exebuf_Exe));
+       exe->file = l->data;
+        eaps = evas_list_prepend(eaps, exe);
+       o = edje_object_add(exebuf->evas);
+        exe->bg_object = o;
+       e_theme_edje_object_set(o, "base/theme/exebuf",
+                               "e/widgets/exebuf/item");
+       edje_object_part_text_set(o, "e.text.title", exe->file);
+       evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN,
+             _e_exebuf_cb_exe_item_mouse_in, exe);
+       evas_object_show(o);
+       edje_object_size_min_calc(exe->bg_object, &mw, &mh);
+       e_box_pack_end(eap_list_object, exe->bg_object);
+       e_box_pack_options_set(exe->bg_object,
+                              1, 1, /* fill */
+                              1, 0, /* expand */
+                              0.5, 0.5, /* align */
+                              mw, mh, /* min */
+                              9999, mh /* max */
+                              );
+     }
+   evas_list_free(list);
+}
+
+static void
+_e_exebuf_hist_clear(void)
+{
+   edje_object_signal_emit(bg_object, "e,action,hide,history", "e");
+   evas_event_freeze(exebuf->evas);
+   e_box_freeze(eap_list_object);
+   e_box_freeze(exe_list_object);
+   while (eaps)
+     {
+       _e_exebuf_exe_free((E_Exebuf_Exe *)(eaps->data));
+       eaps = evas_list_remove_list(eaps, eaps);
+     }
+   e_box_thaw(exe_list_object);
+   e_box_thaw(eap_list_object);
+   evas_event_thaw(exebuf->evas);
+   
+   e_box_align_set(eap_list_object, 0.5, 0.0);
+   e_box_align_set(exe_list_object, 0.5, 1.0);
+   exe_sel = NULL;
+   which_list = NO_LIST;
+
+}
+
 static void 
 _e_exebuf_cb_eap_item_mouse_in(void *data, Evas *evas, Evas_Object *obj, 
       void *event_info)
@@ -1033,7 +1158,8 @@
 {
    if (exe_sel) _e_exebuf_exe_desel(exe_sel);
    if (!(exe_sel = data)) return;
-   which_list = EXE_LIST;
+   if (which_list != HIST_LIST)
+     which_list = EXE_LIST;
    _e_exebuf_exe_sel(exe_sel);
 }
 
@@ -1078,6 +1204,8 @@
          {
             if ((strlen(cmd_buf) < (EXEBUFLEN - strlen(ev->key_compose))))
               {
+                 if (!(strlen(cmd_buf)) && exe_sel)
+                   _e_exebuf_hist_clear();
                  strcat(cmd_buf, ev->key_compose);
                  _e_exebuf_update();
                  _e_exebuf_matches_update();
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_exehist.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_exehist.c 2 Mar 2006 12:03:48 -0000       1.4
+++ e_exehist.c 14 Oct 2006 10:57:18 -0000      1.5
@@ -128,6 +128,43 @@
    return 0.0;
 }
 
+EAPI Evas_List *
+e_exehist_list_get(void)
+{
+   Evas_List *list = NULL, *l, *m;
+   int count = 1;
+   int max;
+
+   max = e_config->exebuf_max_hist_list;
+   if (!max) max = 20;
+   _e_exehist_load();
+   for (l = evas_list_last(_e_exehist->history); l; l = l->prev)
+     {
+       int bad = 0;
+       E_Exehist_Item *ei;
+       
+       ei = l->data;
+       if (!(ei->exe)) continue;
+       for (m = list; m; m = m->next) 
+         {
+            const char *exe;
+
+            if (!(exe = m->data)) continue;
+            if (!strcmp(exe, ei->exe))
+              {
+                 bad = 1;
+                 break;
+              }
+         }
+       if (!(bad)) {
+            list = evas_list_append(list, ei->exe);
+            count++;
+       }
+       if (count > max) break;
+     }
+   return list;
+}
+
 /* local subsystem functions */
 static void
 _e_exehist_unload_queue(void)
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_exehist.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_exehist.h 27 Dec 2005 17:16:57 -0000      1.1
+++ e_exehist.h 14 Oct 2006 10:57:18 -0000      1.2
@@ -14,6 +14,7 @@
 EAPI void e_exehist_clear(void);
 EAPI int e_exehist_popularity_get(const char *exe);
 EAPI double e_exehist_newest_run_get(const char *exe);
+EAPI Evas_List *e_exehist_list_get(void);
     /*
 EAPI double e_exehist_last_run_get(const char *exe);
 */
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_exebuf.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_int_config_exebuf.c       8 Oct 2006 08:04:17 -0000       1.7
+++ e_int_config_exebuf.c       14 Oct 2006 10:57:18 -0000      1.8
@@ -12,6 +12,7 @@
    /* Basic */
    int max_exe_list;
    int max_eap_list;
+   int max_hist_list;
    int scroll_animate;
    /* Advanced */
    double scroll_speed;
@@ -54,6 +55,7 @@
    /* Basic */
    cfdata->max_exe_list = e_config->exebuf_max_exe_list;
    cfdata->max_eap_list = e_config->exebuf_max_eap_list;
+   cfdata->max_hist_list = e_config->exebuf_max_hist_list;
    cfdata->scroll_animate = e_config->exebuf_scroll_animate;
    /* Advanced */
    cfdata->scroll_speed = e_config->exebuf_scroll_speed;
@@ -91,6 +93,7 @@
 {
    e_config->exebuf_max_exe_list = cfdata->max_exe_list;
    e_config->exebuf_max_eap_list = cfdata->max_eap_list;
+   e_config->exebuf_max_hist_list = cfdata->max_hist_list;
    e_config->exebuf_scroll_animate = cfdata->scroll_animate;
    e_config_save_queue();
    return 1;
@@ -112,6 +115,10 @@
    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);   
+   ob = e_widget_label_add(evas, _("Maximum History to List"));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 10, 200, 5, 0, NULL, 
&(cfdata->max_hist_list), 200);
+   e_widget_framelist_object_append(of, ob);   
    e_widget_list_object_append(o, of, 1, 1, 0.5);   
    
    of = e_widget_framelist_add(evas, _("Scroll Settings"), 0);
@@ -126,6 +133,7 @@
 {
    e_config->exebuf_max_exe_list = cfdata->max_exe_list;
    e_config->exebuf_max_eap_list = cfdata->max_eap_list;   
+   e_config->exebuf_max_hist_list = cfdata->max_hist_list;   
    e_config->exebuf_scroll_animate = cfdata->scroll_animate;   
    e_config->exebuf_scroll_speed = cfdata->scroll_speed;
    e_config->exebuf_pos_align_x = cfdata->pos_align_x;
@@ -163,6 +171,10 @@
    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);      
+   ob = e_widget_label_add(evas, _("Maximum History to List"));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 10, 200, 5, 0, NULL, 
&(cfdata->max_hist_list), 200);
+   e_widget_framelist_object_append(of, ob);   
    e_widget_table_object_append(ot, of, 0, 0, 1, 1, 1, 1, 1, 1);
 
    of = e_widget_framelist_add(evas, _("Scroll Settings"), 0);   
@@ -174,15 +186,11 @@
    e_widget_framelist_object_append(of, ob);   
    e_widget_table_object_append(ot, of, 0, 1, 1, 1, 1, 1, 1, 1);
 
-   of = e_widget_framelist_add(evas, _("Position Settings"), 0);   
-   ob = e_widget_label_add(evas, _("X-Axis Alignment"));
+   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_slider_add(evas, 1, 0, _("%1.2f"), 0.0, 1.0, 0.01, 0, 
&(cfdata->pos_align_x), NULL, 200);
-   e_widget_framelist_object_append(of, ob);   
-   ob = e_widget_label_add(evas, _("Y-Axis Alignment"));
+   ob = e_widget_entry_add(evas, &(cfdata->term_cmd));
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_slider_add(evas, 1, 0, _("%1.2f"), 0.0, 1.0, 0.01, 0, 
&(cfdata->pos_align_y), NULL, 200);
-   e_widget_framelist_object_append(of, ob);   
    e_widget_table_object_append(ot, of, 0, 2, 1, 1, 1, 1, 1, 1);
 
    of = e_widget_framelist_add(evas, _("Size Settings"), 0);      
@@ -204,11 +212,15 @@
    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"));
+   of = e_widget_framelist_add(evas, _("Position Settings"), 0);   
+   ob = e_widget_label_add(evas, _("X-Axis Alignment"));
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_entry_add(evas, &(cfdata->term_cmd));
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.2f"), 0.0, 1.0, 0.01, 0, 
&(cfdata->pos_align_x), NULL, 200);
+   e_widget_framelist_object_append(of, ob);   
+   ob = e_widget_label_add(evas, _("Y-Axis Alignment"));
    e_widget_framelist_object_append(of, ob);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.2f"), 0.0, 1.0, 0.01, 0, 
&(cfdata->pos_align_y), NULL, 200);
+   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);      



-------------------------------------------------------------------------
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

Reply via email to