Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_exebuf.c 


Log Message:


cleaning up exebuf a bit

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_exebuf.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_exebuf.c  14 Dec 2005 15:54:51 -0000      1.3
+++ e_exebuf.c  15 Dec 2005 03:27:42 -0000      1.4
@@ -16,9 +16,14 @@
    char        *file;
 };
 
+static void _e_exebuf_exe_free(E_Exebuf_Exe *exe);
 static void _e_exebuf_matches_clear(void);
 static void _e_exebuf_update(void);
 static void _e_exebuf_exec(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);
+static void _e_exebuf_eap_scroll_to(int i);
 static void _e_exebuf_next(void);
 static void _e_exebuf_prev(void);
 static void _e_exebuf_complete(void);
@@ -183,8 +188,8 @@
 {
    if (!exebuf) return;
    
-   _e_exebuf_matches_clear();
    evas_event_freeze(exebuf->evas);
+   _e_exebuf_matches_clear();
    e_popup_hide(exebuf);
    if (exe_scroll_timer) ecore_timer_del(exe_scroll_timer);
    exe_scroll_timer = NULL;
@@ -192,12 +197,20 @@
    eap_scroll_timer = NULL;
    if (animator) ecore_animator_del(animator);
    animator = NULL;
+   exe_scroll_to = 0;
+   exe_scroll_align_to = 0.0;
+   exe_scroll_align = 0.0;
+   eap_scroll_to = 0;
+   eap_scroll_align_to = 0.0;
+   eap_scroll_align = 0.0;
    evas_object_del(eap_list_object);
    eap_list_object = NULL;
    evas_object_del(exe_list_object);
    exe_list_object = NULL;
    evas_object_del(bg_object);
    bg_object = NULL;
+   if (icon_object) evas_object_del(icon_object);
+   icon_object = NULL;
    evas_event_thaw(exebuf->evas);
    e_object_del(E_OBJECT(exebuf));
    exebuf = NULL;
@@ -223,6 +236,15 @@
 /* local subsystem functions */
 
 static void
+_e_exebuf_exe_free(E_Exebuf_Exe *exe)
+{
+   if (exe->app) e_object_unref(E_OBJECT(exe->app));
+   evas_object_del(exe->bg_object);
+   if (exe->icon_object) evas_object_del(exe->icon_object);
+   free(exe);
+}
+
+static void
 _e_exebuf_matches_clear(void)
 {
    while (eap_matches)
@@ -236,34 +258,19 @@
        exe_matches = evas_list_remove_list(exe_matches, exe_matches);
      }
    
+   e_box_freeze(eap_list_object);
    e_box_freeze(exe_list_object);
    while (exes)
      {
-        E_Exebuf_Exe *exe;
-       
-       exe = exes->data;
-       if (exe->app) e_object_unref(E_OBJECT(exe->app));
-       evas_object_del(exe->bg_object);
-       if (exe->icon_object)
-         evas_object_del(exe->icon_object);
-       free(exe);
+       _e_exebuf_exe_free((E_Exebuf_Exe *)(exes->data));
        exes = evas_list_remove_list(exes, exes);
      }
-   e_box_thaw(exe_list_object);
-   
-   e_box_freeze(eap_list_object);
    while (eaps)
      {
-        E_Exebuf_Exe *exe;
-       
-       exe = eaps->data;
-       if (exe->app) e_object_unref(E_OBJECT(exe->app));
-       evas_object_del(exe->bg_object);
-       if (exe->icon_object)
-         evas_object_del(exe->icon_object);
-       free(exe);
+       _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);
    
    e_box_align_set(eap_list_object, 0.5, 0.0);
@@ -311,11 +318,81 @@
 }
 
 static void
+_e_exebuf_exe_sel(E_Exebuf_Exe *exe)
+{
+   edje_object_signal_emit(exe->bg_object, "active", "");
+   if (exe->icon_object)
+     edje_object_signal_emit(exe->icon_object, "active", "");
+}
+
+static void
+_e_exebuf_exe_desel(E_Exebuf_Exe *exe)
+{
+   edje_object_signal_emit(exe->bg_object, "passive", "");
+   if (exe->icon_object)
+     edje_object_signal_emit(exe->icon_object, "passive", "");
+}
+
+static void
+_e_exebuf_exe_scroll_to(int i)
+{
+   int n;
+   
+   n = evas_list_count(exes);
+   if (n > 1)
+     {
+       exe_scroll_align_to = (double)i / (double)(n - 1);
+       if (e_config->winlist_scroll_animate)
+         {     
+            exe_scroll_to = 1;
+            if (!exe_scroll_timer)
+              exe_scroll_timer = ecore_timer_add(0.01, 
_e_exebuf_exe_scroll_timer, NULL);
+            if (!animator)
+              animator = ecore_animator_add(_e_exebuf_animator, NULL);
+         }
+       else
+         {
+            exe_scroll_align = exe_scroll_align_to;
+            e_box_align_set(exe_list_object, 0.5, 1.0 - exe_scroll_align);
+         }
+     }
+   else
+     e_box_align_set(exe_list_object, 0.5, 1.0);
+}
+
+static void
+_e_exebuf_eap_scroll_to(int i)
+{
+   int n;
+   
+   n = evas_list_count(eaps);
+   if (n > 1)
+     {
+       eap_scroll_align_to = (double)i / (double)(n - 1);
+       if (e_config->winlist_scroll_animate)
+         {     
+            eap_scroll_to = 1;
+            if (!eap_scroll_timer)
+              eap_scroll_timer = ecore_timer_add(0.01, 
_e_exebuf_eap_scroll_timer, NULL);
+            if (!animator)
+              animator = ecore_animator_add(_e_exebuf_animator, NULL);
+         }
+       else
+         {
+            eap_scroll_align = eap_scroll_align_to;
+            e_box_align_set(eap_list_object, 0.5, eap_scroll_align);
+         }
+     }
+   else
+     e_box_align_set(eap_list_object, 0.5, 0.0);
+}
+
+static void
 _e_exebuf_next(void)
 {
    E_Exebuf_Exe *exe;
    Evas_List *l;
-   int i, n;
+   int i;
    
    if (which_list == NO_LIST)
      {
@@ -325,10 +402,8 @@
             which_list = EXE_LIST;
             if (exe_sel)
               {
-                 edje_object_signal_emit(exe_sel->bg_object, "active", "");
-                 if (exe_sel->icon_object)
-                   edje_object_signal_emit(exe_sel->icon_object, "active", "");
-                 e_box_align_set(exe_list_object, 0.5, 1.0);
+                 _e_exebuf_exe_sel(exe_sel);
+                 _e_exebuf_exe_scroll_to(0);
               }
          }
      }
@@ -338,37 +413,16 @@
          {
             if (exe_sel)
               {
-                 n = evas_list_count(exes);
                  for (i = 0, l = exes; l; l = l->next, i++)
                    {
                       if (l->data == exe_sel)
                         {
                            if (l->next)
                              {
-                                edje_object_signal_emit(exe_sel->bg_object, 
"passive", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "passive", "");
+                                _e_exebuf_exe_desel(exe_sel);
                                 exe_sel = l->next->data;
-                                edje_object_signal_emit(exe_sel->bg_object, 
"active", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "active", "");
-                                if (n > 1)
-                                  {
-                                     exe_scroll_align_to = (double)(i + 1) / 
(double)(n - 1);
-                                     if (e_config->winlist_scroll_animate)
-                                       {       
-                                          exe_scroll_to = 1;
-                                          if (!exe_scroll_timer)
-                                            exe_scroll_timer = 
ecore_timer_add(0.01, _e_exebuf_exe_scroll_timer, NULL);
-                                          if (!animator)
-                                            animator = 
ecore_animator_add(_e_exebuf_animator, NULL);
-                                       }
-                                     else
-                                       {
-                                          exe_scroll_align = 
exe_scroll_align_to;
-                                          e_box_align_set(exe_list_object, 
0.5, exe_scroll_align);
-                                       }
-                                  }
+                                _e_exebuf_exe_sel(exe_sel);
+                                _e_exebuf_exe_scroll_to(i + 1);
                              }
                            break;
                         }
@@ -379,37 +433,21 @@
          {
             if (exe_sel)
               {
-                 n = evas_list_count(eaps);
                  for (i = 0, l = eaps; l; l = l->next, i++)
                    {
                       if (l->data == exe_sel)
                         {
+                           _e_exebuf_exe_desel(exe_sel);
                            if (l->prev)
                              {
-                                edje_object_signal_emit(exe_sel->bg_object, 
"passive", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "passive", "");
                                 exe_sel = l->prev->data;
-                                edje_object_signal_emit(exe_sel->bg_object, 
"active", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "active", "");
-                                if (n > 1)
-                                  {
-                                     eap_scroll_align_to = (double)(i - 1) / 
(double)(n - 1);
-                                     if (e_config->winlist_scroll_animate)
-                                       {       
-                                          eap_scroll_to = 1;
-                                          if (!eap_scroll_timer)
-                                            eap_scroll_timer = 
ecore_timer_add(0.01, _e_exebuf_eap_scroll_timer, NULL);
-                                          if (!animator)
-                                            animator = 
ecore_animator_add(_e_exebuf_animator, NULL);
-                                       }
-                                     else
-                                       {
-                                          eap_scroll_align = 
eap_scroll_align_to;
-                                          e_box_align_set(eap_list_object, 
0.5, eap_scroll_align);
-                                       }
-                                  }
+                                _e_exebuf_exe_sel(exe_sel);
+                                _e_exebuf_eap_scroll_to(i - 1);
+                             }
+                           else
+                             {
+                                exe_sel = NULL;
+                                which_list = NO_LIST;
                              }
                            break;
                         }
@@ -424,7 +462,7 @@
 {
    E_Exebuf_Exe *exe;
    Evas_List *l;
-   int i, n;
+   int i;
 
    if (which_list == NO_LIST)
      {
@@ -434,10 +472,8 @@
             which_list = EAP_LIST;
             if (exe_sel)
               {
-                 edje_object_signal_emit(exe_sel->bg_object, "active", "");
-                 if (exe_sel->icon_object)
-                   edje_object_signal_emit(exe_sel->icon_object, "active", "");
-                 e_box_align_set(eap_list_object, 0.5, 0.0);
+                 _e_exebuf_exe_sel(exe_sel);
+                 _e_exebuf_eap_scroll_to(0);
               }
          }
      }
@@ -447,37 +483,21 @@
          {
             if (exe_sel)
               {
-                 n = evas_list_count(exes);
                  for (i = 0, l = exes; l; l = l->next, i++)
                    {
                       if (l->data == exe_sel)
                         {
+                           _e_exebuf_exe_desel(exe_sel);
                            if (l->prev)
                              {
-                                edje_object_signal_emit(exe_sel->bg_object, 
"passive", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "passive", "");
                                 exe_sel = l->prev->data;
-                                edje_object_signal_emit(exe_sel->bg_object, 
"active", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "active", "");
-                                if (n > 1)
-                                  {
-                                     exe_scroll_align_to = (double)(i - 1) / 
(double)(n - 1);
-                                     if (e_config->winlist_scroll_animate)
-                                       {       
-                                          exe_scroll_to = 1;
-                                          if (!exe_scroll_timer)
-                                            exe_scroll_timer = 
ecore_timer_add(0.01, _e_exebuf_exe_scroll_timer, NULL);
-                                          if (!animator)
-                                            animator = 
ecore_animator_add(_e_exebuf_animator, NULL);
-                                       }
-                                     else
-                                       {
-                                          exe_scroll_align = 
exe_scroll_align_to;
-                                          e_box_align_set(exe_list_object, 
0.5, exe_scroll_align);
-                                       }
-                                  }
+                                _e_exebuf_exe_sel(exe_sel);
+                                _e_exebuf_exe_scroll_to(i - 1);
+                             }
+                           else
+                             {
+                                exe_sel = NULL;
+                                which_list = NO_LIST;
                              }
                            break;
                         }
@@ -488,37 +508,16 @@
          {
             if (exe_sel)
               {
-                 n = evas_list_count(eaps);
                  for (i = 0, l = eaps; l; l = l->next, i++)
                    {
                       if (l->data == exe_sel)
                         {
                            if (l->next)
                              {
-                                edje_object_signal_emit(exe_sel->bg_object, 
"passive", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "passive", "");
+                                _e_exebuf_exe_desel(exe_sel);
                                 exe_sel = l->next->data;
-                                edje_object_signal_emit(exe_sel->bg_object, 
"active", "");
-                                if (exe_sel->icon_object)
-                                  
edje_object_signal_emit(exe_sel->icon_object, "active", "");
-                                if (n > 1)
-                                  {
-                                     eap_scroll_align_to = (double)(i + 1) / 
(double)(n - 1);
-                                     if (e_config->winlist_scroll_animate)
-                                       {       
-                                          eap_scroll_to = 1;
-                                          if (!eap_scroll_timer)
-                                            eap_scroll_timer = 
ecore_timer_add(0.01, _e_exebuf_eap_scroll_timer, NULL);
-                                          if (!animator)
-                                            animator = 
ecore_animator_add(_e_exebuf_animator, NULL);
-                                       }
-                                     else
-                                       {
-                                          eap_scroll_align = 
eap_scroll_align_to;
-                                          e_box_align_set(eap_list_object, 
0.5, eap_scroll_align);
-                                       }
-                                  }
+                                _e_exebuf_exe_sel(exe_sel);
+                                _e_exebuf_eap_scroll_to(i + 1);
                              }
                            break;
                         }
@@ -618,17 +617,6 @@
    Evas_List *l, *list;
    int i, max;
    
-   /* how to match:
-    * 
-    * eap_matches (above the exebuf)
-    * match cmd_buf* for all eap->exe fields
-    * match cmd_buf* for all eap->name fields
-    * match *cmd_buf* for all eap->generic fields
-    * match *cmd_buf* for all eap->comment fields
-    * 
-    * exe_matches (below the exebuf)
-    * match cmd_buf* for all executables in $PATH (exclude duplicates in 
eap_matches)
-    */
    _e_exebuf_matches_clear();
    if (strlen(cmd_buf) == 0) return;
    
@@ -728,7 +716,10 @@
      }
    if (added) evas_hash_free(added);
    added = NULL;
-   
+
+   /* FIXME: sort eap matches with most recently selected matches at the
+    * start and then from shortest to longest string
+    */
    max = 20;
    e_box_freeze(eap_list_object);
    for (i = 0, l = eap_matches; l && (i < max); l = l->next, i++)
@@ -768,8 +759,9 @@
                               );
      }
    e_box_thaw(eap_list_object);
-   /* FIXME: sort exe_matches and eap_matches in order of most recently used
-    * first, then shortest completions first
+   
+   /* FIXME: sort eap matches with most recently selected matches at the
+    * start and then from shortest to longest string
     */
    max = 20;
    e_box_freeze(exe_list_object);




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

Reply via email to