Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_eap_editor.c e_eap_editor.h e_fileman_icon.c 
        e_fileman_smart.c e_fileman_smart.h e_icon_layout.c 
        e_scrollbar.c e_int_menus.c 
Added Files:
        e_widget_fileman.c e_widget_fileman.h e_widget_iconsel.c 
        e_widget_iconsel.h 


Log Message:
- more work on eap editor (currently broken)
- fix efm (some features currently broken)
- change scrollbar so completely (currently broken)


===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -3 -r1.69 -r1.70
--- Makefile.am 24 Oct 2005 23:08:20 -0000      1.69
+++ Makefile.am 27 Oct 2005 10:19:43 -0000      1.70
@@ -103,7 +103,9 @@
 e_int_border_locks.h \
 e_thumb.h \
 e_int_border_remember.h \
-e_eap_editor.h
+e_eap_editor.h \
+e_widget_iconsel.h \
+e_widget_fileman.h
 
 enlightenment_src = \
 e_user.c \
@@ -188,6 +190,8 @@
 e_thumb.c \
 e_int_border_remember.c \
 e_eap_editor.c \
+e_widget_iconsel.c \
+e_widget_fileman.c \
 $(ENLIGHTENMENTHEADERS)
 
 enlightenment_SOURCES = \
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_eap_editor.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_eap_editor.c      26 Oct 2005 01:05:56 -0000      1.5
+++ e_eap_editor.c      27 Oct 2005 10:19:43 -0000      1.6
@@ -1,285 +1,370 @@
 #include "e.h"
 
+typedef struct _E_App_Edit E_App_Edit;
+typedef struct _E_App_Edit_CFData E_App_Edit_CFData;
+
+struct _E_App_Edit
+{      
+   E_App       *eap;
+
+   Evas_Object *img;
+   Evas_Object *img_widget;
+   
+   E_App_Edit_CFData *cfdata;
+};
+
+struct _E_App_Edit_CFData
+{
+   /*- BASIC -*/
+   char *name;
+   char *exe;
+   /*- ADVANCED -*/
+   char *generic;
+   char *comment;
+   char *wname;
+   char *wclass;
+   char *wtitle;
+   char *wrole;
+   char *iclass;
+   char *path;
+   int   startup_notify;
+   int   wait_exit;
+   /*- common -*/
+   char *image;
+   E_App_Edit *editor;
+};
+
 /* local subsystem functions */
 
-static void _e_eap_edit_save_cb(void *data, E_Dialog *dia);
-static void _e_eap_edit_cancel_cb(void *data, E_Dialog *dia);
-static void _e_eap_edit_browse_cb(void *data1, void *data2);
-static void _e_eap_edit_free(E_App_Edit *app);
-static void _e_eap_edit_selector_cb(E_Fileman *fileman, char *file, void 
*data);
-  
+static void           _e_eap_edit_save_cb(void *data, E_Dialog *dia);
+static void           _e_eap_edit_cancel_cb(void *data, E_Dialog *dia);
+static void           _e_eap_edit_browse_cb(void *data1, void *data2);
+static void           _e_eap_edit_free(E_App_Edit *app);
+static void           _e_eap_edit_selector_cb(E_Fileman *fileman, char *file, 
void *data);
+static void           _e_eap_edit_fill_data(E_App_Edit_CFData *cdfata);
+static void          *_e_eap_edit_create_data(E_Config_Dialog *cfd);
+static void           _e_eap_edit_free_data(E_Config_Dialog *cfd, void *data);
+static int            _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, void 
*data);
+static int            _e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, 
void *data);
+static Evas_Object   *_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, 
Evas *evas, void *data);
+static Evas_Object   *_e_eap_edit_advanced_create_widgets(E_Config_Dialog 
*cfd, Evas *evas, void *data);
+    
+
 #define IFDUP(src, dst) if(src) dst = strdup(src); else dst = NULL
 
 /* externally accessible functions */
-E_App_Edit *
+
+void
 e_eap_edit_show(E_Container *con, E_App *a)
 {
-   E_Manager *man;
-   E_App_Edit *app;
+   E_Config_Dialog *cfd;
+   E_Config_Dialog_View v;   
+   E_App_Edit *editor;
    Evas_Object *o, *ol;
-   
-   app = E_OBJECT_ALLOC(E_App_Edit, E_EAP_EDIT_TYPE, _e_eap_edit_free);
-   if (!app) return NULL;
-   app->dia = e_dialog_new(con);
-   if (!app->dia)
-     {
-       free(app);
-       return NULL;
-     }
-   
-   app->con = con;
-   e_dialog_title_set(app->dia, _("Eap Editor"));
-   app->evas = e_win_evas_get(app->dia->win);
-
-   app->eap = a;
-   
-   ol = e_widget_list_add(app->evas, 0, 0);
-   o = e_widget_table_add(app->evas, _("Eap Info"), 0);   
-   
-   IFDUP(a->name, app->data.name);
-   IFDUP(a->generic, app->data.generic);
-   IFDUP(a->comment, app->data.comment);
-   IFDUP(a->exe, app->data.exe);
-   IFDUP(a->win_name, app->data.wname);
-   IFDUP(a->win_class, app->data.wclass);
-   IFDUP(a->win_title, app->data.wtitle);
-   IFDUP(a->win_role, app->data.wrole);
-   IFDUP(a->path, app->data.path);
-   
-   if(a->path)
-     {
-       app->img = edje_object_add(app->evas);  
-       edje_object_file_set(app->img, a->path, "icon");
-       
-     }
-   else
-     {
-       app->img = edje_object_add(app->evas);
-       e_theme_edje_object_set(app->img, "base/theme/icons/enlightenment/e", 
"icons/enlightenment/e");
-     }
 
-   app->img_widget = e_widget_image_add_from_object(app->evas, app->img, 48, 
48);
-   e_widget_table_object_append(o, app->img_widget,
-                               0, 0, 1, 1,
-                               1, 1, 1, 1);
-   
-   e_widget_table_object_append(o, e_widget_button_add(app->evas, "Set Icon",
-                                                      NULL, 
_e_eap_edit_browse_cb,
-                                                      app, NULL),
-                               1, 0, 1, 1,
-                               0, 0, 0, 0);
-   
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "App name"),
-                                    0, 1, 1, 1,
-                                    1, 1, 1, 1);
-     {
-       Evas_Object *entry;
-       entry = e_widget_entry_add(app->evas, &(app->data.name));
-       e_widget_min_size_set(entry, 100, 1);
-       e_widget_table_object_append(o, entry,
-                                    1, 1, 1, 1,
-                                    1, 1, 1, 1);
-     }
-   
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Generic 
Info"),
-                                    0, 2, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.generic)),
-                                    1, 2, 1, 1,
-                                    1, 1, 1, 1);
-   
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Comment"),
-                                    0, 3, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.comment)),
-                                    1, 3, 1, 1,
-                                    1, 1, 1, 1);
-   
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Executable"),
-                                    0, 4, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.exe)),
-                                    1, 4, 1, 1,
-                                    1, 1, 1, 1);
-   
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window 
Name"),
-                                    0, 5, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.wname)),
-                                    1, 5, 1, 1,
-                                    1, 1, 1, 1);   
+   if(!con)
+     return;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window 
Class"),
-                                    0, 6, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.wclass)),
-                                    1, 6, 1, 1,
-                                    1, 1, 1, 1);
+   editor = E_NEW(E_App_Edit, 1);
+   if (!editor) return;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window 
Title"),
-                                    0, 7, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.wtitle)),
-                                    1, 7, 1, 1,
-                                    1, 1, 1, 1);
+   editor->eap = a;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Window 
Role"),
-                                    0, 8, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.wrole)),
-                                    1, 8, 1, 1,
-                                    1, 1, 1, 1);   
+   /* methods */
+   v.create_cfdata           = _e_eap_edit_create_data;
+   v.free_cfdata             = _e_eap_edit_free_data;
+   v.basic.apply_cfdata      = _e_eap_edit_basic_apply_data;
+   v.basic.create_widgets    = _e_eap_edit_basic_create_widgets;
+   v.advanced.apply_cfdata   = _e_eap_edit_advanced_apply_data;
+   v.advanced.create_widgets = _e_eap_edit_advanced_create_widgets;
+   /* create config diaolg for NULL object/data */
+   cfd = e_config_dialog_new(con, _("Eap Editor"), NULL, 0, &v, editor);
+}
+
+/* local subsystem functions */
+
+static void 
+_e_eap_edit_fill_data(E_App_Edit_CFData *cfdata)
+{
+   /*- BASIC -*/
+   IFDUP(cfdata->editor->eap->name, cfdata->name);
+   IFDUP(cfdata->editor->eap->exe, cfdata->exe);
+   /*- ADVANCED -*/
+   IFDUP(cfdata->editor->eap->generic, cfdata->generic);
+   IFDUP(cfdata->editor->eap->comment, cfdata->comment);
+   IFDUP(cfdata->editor->eap->win_name, cfdata->wname);
+   IFDUP(cfdata->editor->eap->win_class, cfdata->wclass);
+   IFDUP(cfdata->editor->eap->win_title, cfdata->wtitle);
+   IFDUP(cfdata->editor->eap->win_role, cfdata->wrole);
+   IFDUP(cfdata->editor->eap->path, cfdata->path);
+}
+
+static void *
+_e_eap_edit_create_data(E_Config_Dialog *cfd)
+{
+   E_App_Edit_CFData *cfdata;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Icon Class"),
-                                    0, 9, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.iclass)),
-                                    1, 9, 1, 1,
-                                    1, 1, 1, 1);   
+   cfdata = E_NEW(E_App_Edit_CFData, 1);
+   if (!cfdata) return NULL;
+   cfdata->editor = cfd->data;
+   _e_eap_edit_fill_data(cfdata);
+   return cfdata;
+}
+
+static void
+_e_eap_edit_free_data(E_Config_Dialog *cfd, void *data)
+{    
+   free(data);
+}
+
+static int
+_e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, void *data)
+{
+   E_App_Edit *editor;
+   E_App *eap;
+   E_App_Edit_CFData *cfdata;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Path"),
-                                    0, 10, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_entry_add(app->evas, 
&(app->data.path)),
-                                    1, 10, 1, 1,
-                                    1, 1, 1, 1);   
+   cfdata = data;
+   editor = cfdata->editor;
+   eap = editor->eap;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Startup 
notify"),
-                                    0, 11, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_check_add(app->evas, "", 
&(app->data.startup_notify)),
-                                    1, 11, 1, 1,
-                                    1, 1, 1, 1);
+   if(!(cfdata->path))
+     return -1;
    
-   e_widget_table_object_append(o, e_widget_label_add(app->evas, "Wait exit"),
-                                    0, 12, 1, 1,
-                                    1, 1, 1, 1);
-   e_widget_table_object_append(o, e_widget_check_add(app->evas, "", 
&(app->data.wait_exit)),
-                                    1, 12, 1, 1,
-                                    1, 1, 1, 1);
+   E_FREE(eap->name);
+   E_FREE(eap->exe);
+   E_FREE(eap->image);
    
-   e_widget_list_object_append(ol, o, 1, 1, 0.5);
+   IFDUP(cfdata->name, eap->name);
+   IFDUP(cfdata->exe, eap->exe);
+   IFDUP(cfdata->image, eap->image);
    
-     {
-       Evas_Coord minw, minh;
-       e_widget_min_size_get(ol, &minw, &minh);
-       e_dialog_content_set(app->dia, ol, minw, minh);
-     }
-
-   e_dialog_button_add(app->dia, _("Cancel"), NULL, _e_eap_edit_cancel_cb, 
app);
-   e_dialog_button_add(app->dia, _("Save"), NULL, _e_eap_edit_save_cb, app);
+   e_app_fields_save(eap);
    
-   e_dialog_show(app->dia);
+    return -1;
 }
 
-/* local subsystem functions */
-
-static void 
-_e_eap_edit_save_cb(void *data, E_Dialog *dia)
+static int
+_e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, void *data)
 {
    E_App_Edit *editor;
    E_App *eap;
+   E_App_Edit_CFData *cfdata;
    
-   editor = data;
+   cfdata = data;
+   editor = cfdata->editor;
    eap = editor->eap;
    
-   if(!(editor->data.path))
-     return;
+   if(!(cfdata->path))
+     return -1;
 
-   printf("path : %s\n", editor->data.path);
-   
-   E_FREE(eap->name);
    E_FREE(eap->generic);
    E_FREE(eap->comment);
-   E_FREE(eap->exe);
    E_FREE(eap->win_name);
    E_FREE(eap->win_class);   
    E_FREE(eap->win_title);
    E_FREE(eap->win_role);
    E_FREE(eap->icon_class);
    E_FREE(eap->path);
-   E_FREE(eap->image);
-   if(editor->data.startup_notify)
+
+   if(cfdata->startup_notify)
      eap->startup_notify = 1;   
-   if(editor->data.wait_exit)
+   if(cfdata->wait_exit)
      eap->wait_exit = 1;
-   
-   IFDUP(editor->data.name, eap->name);
-   IFDUP(editor->data.generic, eap->generic);
-   IFDUP(editor->data.comment, eap->comment);
-   IFDUP(editor->data.exe, eap->exe);
-   IFDUP(editor->data.wname, eap->win_name);
-   IFDUP(editor->data.wclass, eap->win_class);
-   IFDUP(editor->data.wtitle, eap->win_title);
-   IFDUP(editor->data.wrole, eap->win_role);
-   IFDUP(editor->data.iclass, eap->icon_class);
-   IFDUP(editor->data.path, eap->path);
-   IFDUP(editor->data.image, eap->image);
-   
-   printf("image is: %s\n", eap->image);
-
-   printf("eap path: %s\n", eap->path);
-   
+      
+   IFDUP(cfdata->generic, eap->generic);
+   IFDUP(cfdata->comment, eap->comment);
+   IFDUP(cfdata->wname, eap->win_name);
+   IFDUP(cfdata->wclass, eap->win_class);
+   IFDUP(cfdata->wtitle, eap->win_title);
+   IFDUP(cfdata->wrole, eap->win_role);
+   IFDUP(cfdata->iclass, eap->icon_class);
+   IFDUP(cfdata->path, eap->path);
+      
    e_app_fields_save(eap);
    
-   _e_eap_edit_free(editor);
+   return 1;
 }
 
-static void 
-_e_eap_edit_cancel_cb(void *data, E_Dialog *dia)
-{
-   _e_eap_edit_free(data);
-}
 
-static void 
-_e_eap_edit_browse_cb(void *data1, void *data2)
+static Evas_Object *
+_e_eap_edit_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, void *data)
 {
-   E_Fileman *fileman;
+   E_App_Edit_CFData *cfdata;
    E_App_Edit *editor;
+   E_App *eap;
+   Evas_Object *ol, *o;
+   Evas_Object *entry;   
+   
+   cfdata = data;
+   editor = cfdata->editor;
+   eap = editor->eap;
+   
+   ol = e_widget_list_add(evas, 0, 1);
+   o = e_widget_frametable_add(evas, _("Icon"), 0);
+   
+   if(eap->path)
+     {      
+       editor->img = e_icon_add(evas);
+       e_icon_file_key_set(editor->img, eap->path, "images/0");
+       e_icon_fill_inside_set(editor->img, 1); 
+     }
+   else
+     {
+       editor->img = edje_object_add(evas);
+       e_theme_edje_object_set(editor->img, 
"base/theme/icons/enlightenment/e", "icons/enlightenment/e");
+     }
+   
+   editor->img_widget = e_widget_iconsel_add(evas, editor->img,
+                                            48, 48, &cfdata->image);
+
+   e_widget_frametable_object_append(o, editor->img_widget,
+                               0, 0, 1, 1,
+                               1, 1, 1, 1);
+   
+  
+   e_widget_list_object_append(ol, o, 1, 1, 0.5);
    
-   editor = data1;
-   fileman = e_fileman_new (editor->dia->win->container);
-   e_fileman_selector_enable(fileman, _e_eap_edit_selector_cb, editor);
-   e_win_resize(fileman->win, 640, 300);
-   e_fileman_show (fileman);
+   o = e_widget_frametable_add(evas, _("Basic Info"), 0);
+      
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "App name"),
+                                    0, 0, 1, 1,
+                                    1, 1, 1, 1);
+    
+   entry = e_widget_entry_add(evas, &(cfdata->name));
+   e_widget_min_size_set(entry, 100, 1);
+   e_widget_frametable_object_append(o, entry,
+                                    1, 0, 1, 1,
+                                    1, 1, 1, 1);
+
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Executable"),
+                                    0, 1, 1, 1,
+                                    1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, 
&(cfdata->exe)),
+                                    1, 1, 1, 1,
+                                    1, 1, 1, 1);   
+   
+   e_widget_list_object_append(ol, o, 1, 1, 0.5);
+   
+   return ol;
 }
 
-/* need to make sure we can load the image */
-static void 
-_e_eap_edit_selector_cb(E_Fileman *fileman, char *file, void *data)
+static Evas_Object *
+_e_eap_edit_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, void 
*data)
 {
+   E_App_Edit_CFData *cfdata;
    E_App_Edit *editor;
-   char *ext;
-   Evas_Object *img;
+   E_App *eap;
+   Evas_Object *ol, *o;
+   Evas_Object *entry;   
    
-   ext = strrchr(file, '.');
-   if(!ext)
-     return;
-   if(strcasecmp(ext, ".png") && strcasecmp(ext, ".jpg") &&
-      strcasecmp(ext, ".jpeg"))
-     return;
+   cfdata = data;
+   editor = cfdata->editor;
+   eap = editor->eap;
+   
+   ol = e_widget_table_add(evas, _("Advanced"), 0);
+   
+   o = e_widget_frametable_add(evas, _("General"), 0);
 
-   editor = data;
-   E_FREE(editor->eap->image);
-   editor->data.image = strdup(file);
-   e_widget_sub_object_del(editor->img_widget, editor->img);
-   evas_object_del(editor->img);
-   editor->img = evas_object_image_add(editor->evas);
-   evas_object_image_file_set(editor->img, file, NULL);
-   evas_object_resize(editor->img, 48, 48);
-   evas_object_image_fill_set(editor->img, 0, 0, 48, 48);
-   evas_object_show(editor->img);
-   e_widget_resize_object_set(editor->img_widget, editor->img);
-   e_widget_sub_object_add(editor->img_widget, editor->img);
-   e_widget_min_size_set(editor->img_widget, 48, 48);
-   evas_object_resize(editor->img, 48, 48); //temp hack
+   /*- general info -*/
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Generic 
Info"),
+                               0, 0, 1, 1,
+                               1, 1, 1, 1);
+   entry = e_widget_entry_add(evas, &(cfdata->generic));
+   e_widget_min_size_set(entry, 100, 1);   
+   e_widget_frametable_object_append(o, entry,
+                               1, 0, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Comment"),
+                               0, 1, 1, 1,
+                               1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, 
&(cfdata->comment)),
+                               1, 1, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_table_object_append(ol, o, 0, 0, 1, 1, 1 ,1, 1, 1);
+   
+   
+   /*- window info -*/
+   
+   o = e_widget_frametable_add(evas, _("Window"), 0);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window 
Name"),
+                               0, 0, 1, 1,
+                               1, 1, 1, 1);
+   entry = e_widget_entry_add(evas, &(cfdata->wname));
+   e_widget_min_size_set(entry, 100, 1);      
+   e_widget_frametable_object_append(o, entry,
+                               1, 0, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window 
Class"),
+                               0, 1, 1, 1,
+                               1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, 
&(cfdata->wclass)),
+                               1, 1, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window 
Title"),
+                               0, 2, 1, 1,
+                               1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, 
&(cfdata->wtitle)),
+                               1, 2, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Window 
Role"),
+                               0, 3, 1, 1,
+                               1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, 
&(cfdata->wrole)),
+                               1, 3, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_table_object_append(ol, o, 0, 1, 1, 1, 1 ,1, 1, 1);
+   
+   /*- icon info -*/
+   
+   o = e_widget_frametable_add(evas, _("Icon"), 0);
       
-   e_object_del(fileman);
-}
-
-static void _e_eap_edit_free(E_App_Edit *app)
-{
-   e_object_del(E_OBJECT(app->eap));
-   e_object_del(E_OBJECT(app->dia));
-   E_FREE(app);
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Icon Class"),
+                               0, 0, 1, 1,
+                               1, 1, 1, 1);
+   entry = e_widget_entry_add(evas, &(cfdata->iclass));
+   e_widget_min_size_set(entry, 100, 1);   
+   e_widget_frametable_object_append(o, entry,
+                               1, 0, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Path"),
+                               0, 1, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_entry_add(evas, 
&(cfdata->path)),
+                               1, 1, 1, 1,
+                               1, 1, 1, 1);   
+      
+   e_widget_table_object_append(ol, o, 1, 0, 1, 1, 1 ,1, 1, 1);
+   
+   
+   /*- misc info -*/
+   
+   o = e_widget_frametable_add(evas, _("Misc"), 0);     
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Startup 
notify"),
+                               0, 0, 1, 1,
+                               1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_check_add(evas, "", 
&(cfdata->startup_notify)),
+                               1, 0, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_frametable_object_append(o, e_widget_label_add(evas, "Wait exit"),
+                               0, 1, 1, 1,
+                               1, 1, 1, 1);
+   e_widget_frametable_object_append(o, e_widget_check_add(evas, "", 
&(cfdata->wait_exit)),
+                               1, 1, 1, 1,
+                               1, 1, 1, 1);
+   
+   e_widget_table_object_append(ol, o, 1, 1, 1, 1, 1 ,1, 1, 1);
+      
+   return ol;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_eap_editor.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_eap_editor.h      26 Oct 2005 00:19:51 -0000      1.4
+++ e_eap_editor.h      27 Oct 2005 10:19:43 -0000      1.5
@@ -1,45 +1,9 @@
 #ifdef E_TYPEDEFS
-
-typedef struct _E_App_Edit E_App_Edit;
-
 #else
 #ifndef E_EAP_EDIT_H
 #define E_EAP_EDIT_H
 
-#define E_EAP_EDIT_TYPE 0xE0b01019
-
-struct _E_App_Edit
-{
-   E_Object             e_obj_inherit;
-   
-   E_Container *con;
-   E_Win       *win;
-   Evas        *evas;
-   E_Dialog    *dia;
-   
-   E_App       *eap;
-
-   Evas_Object *img;
-   Evas_Object *img_widget;
-   
-   struct {
-      char *image;
-      char *name;
-      char *generic;
-      char *comment;
-      char *exe;
-      char *wname;
-      char *wclass;
-      char *wtitle;
-      char *wrole;
-      char *iclass;
-      char *path;
-      int   startup_notify;
-      int   wait_exit;
-   } data;
-};
-
-E_App_Edit *e_eap_edit_show(E_Container *con, E_App *a);
+EAPI void e_eap_edit_show(E_Container *con, E_App *a);
 
 #endif
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_icon.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_fileman_icon.c    27 Oct 2005 02:44:36 -0000      1.8
+++ e_fileman_icon.c    27 Oct 2005 10:19:43 -0000      1.9
@@ -30,8 +30,6 @@
 static void _e_fm_icon_smart_del         (Evas_Object *obj);
 static void _e_fm_icon_smart_move        (Evas_Object *obj, Evas_Coord x, 
Evas_Coord y);
 static void _e_fm_icon_smart_resize      (Evas_Object *obj, Evas_Coord w, 
Evas_Coord h);
-static void _e_fm_icon_smart_show        (Evas_Object *obj);
-static void _e_fm_icon_smart_hide        (Evas_Object *obj);
 static void _e_fm_icon_smart_clip_set    (Evas_Object *obj, Evas_Object *clip);
 static void _e_fm_icon_smart_clip_unset  (Evas_Object *obj);
 
@@ -86,8 +84,8 @@
                                 NULL, NULL, NULL, NULL, NULL,
                                 _e_fm_icon_smart_move,
                                 _e_fm_icon_smart_resize,
-                                _e_fm_icon_smart_show,
-                                _e_fm_icon_smart_hide,
+                                NULL,
+                                NULL,
                                 NULL,
                                 _e_fm_icon_smart_clip_set,
                                 _e_fm_icon_smart_clip_unset,
@@ -109,6 +107,39 @@
    e_object_ref(E_OBJECT(file));
    sd->file = file;
    file->icon_object = obj;
+   
+   if (e_fm_file_can_preview(sd->file))
+     {
+       sd->thumb_path = e_thumb_file_get(sd->file->path);
+       if (e_thumb_exists(sd->file->path))
+         sd->image_object = e_thumb_evas_object_get(sd->file->path,
+                                                    sd->evas,
+                                                    sd->w,
+                                                    sd->h);
+       else
+         {
+            thumb_files = evas_list_append(thumb_files, sd);
+            if (pid == -1) _e_fm_icon_thumb_generate();
+            _e_fm_icon_icon_mime_get(sd);
+         }
+     }
+   else
+     {
+       _e_fm_icon_icon_mime_get(sd);
+     }
+   
+   if (sd->image_object)
+     {
+       edje_object_part_swallow(sd->icon_object, "icon_swallow", 
sd->image_object);
+       evas_object_smart_member_add(sd->image_object, obj);
+       evas_object_show(sd->image_object);
+     }
+   
+   if(sd->saved_title)
+     edje_object_part_text_set(sd->icon_object, "icon_title", sd->saved_title);
+   else
+     edje_object_part_text_set(sd->icon_object, "icon_title", sd->file->name);
+   
 }
 
 void
@@ -178,8 +209,25 @@
    sd->event_object = evas_object_rectangle_add(sd->evas);
    evas_object_color_set(sd->event_object, 0, 0, 0, 0);
    evas_object_smart_member_add(sd->event_object, obj);
-
+   evas_object_show(sd->event_object);
    evas_object_smart_data_set(obj, sd);
+     
+   sd->visible = 1;
+   sd->icon_object = edje_object_add(sd->evas);
+   e_theme_edje_object_set(sd->icon_object, "base/theme/fileman",
+                           "fileman/icon");
+   evas_object_smart_member_add(sd->icon_object, obj);
+   
+   evas_object_show(sd->icon_object);
+   evas_object_show(sd->event_object);
+   
+    {
+       Evas_Coord icon_w, icon_h;
+       edje_object_size_min_calc(sd->icon_object, &icon_w, &icon_h);
+       evas_object_resize(sd->icon_object, icon_w, icon_h);
+       evas_object_resize(sd->event_object, icon_w, icon_h);
+       evas_object_resize(sd->obj, icon_w, icon_h);       
+    }
 }
 
 
@@ -246,90 +294,6 @@
 }
 
 static void
-_e_fm_icon_smart_show(Evas_Object *obj)
-{
-   E_Smart_Data *sd;
-
-   sd = evas_object_smart_data_get(obj);
-   if ((!sd) && (!sd->file)) return;
-   if (sd->visible) return;
-
-   evas_object_show(sd->event_object);
-   sd->visible = 1;
-   sd->icon_object = edje_object_add(sd->evas);
-   e_theme_edje_object_set(sd->icon_object, "base/theme/fileman",
-                           "fileman/icon");
-   evas_object_smart_member_add(sd->icon_object, obj);
-
-   if (e_fm_file_can_preview(sd->file))
-     {
-       sd->thumb_path = e_thumb_file_get(sd->file->path);
-       if (e_thumb_exists(sd->file->path))
-         sd->image_object = e_thumb_evas_object_get(sd->file->path,
-                                                    sd->evas,
-                                                    sd->w,
-                                                    sd->h);
-       else
-         {
-            thumb_files = evas_list_append(thumb_files, sd);
-            if (pid == -1) _e_fm_icon_thumb_generate();
-            _e_fm_icon_icon_mime_get(sd);
-         }
-     }
-   else
-     {
-       _e_fm_icon_icon_mime_get(sd);
-     }
-
-   if (sd->image_object)
-     {
-       edje_object_part_swallow(sd->icon_object, "icon_swallow", 
sd->image_object);
-       evas_object_smart_member_add(sd->image_object, obj);
-     }
-   if(sd->saved_title)
-     edje_object_part_text_set(sd->icon_object, "icon_title", sd->saved_title);
-   else
-     edje_object_part_text_set(sd->icon_object, "icon_title", sd->file->name);
-   
-   evas_object_show(sd->icon_object);
-   
-    {
-       Evas_Coord icon_w, icon_h;
-       edje_object_size_min_calc(sd->icon_object, &icon_w, &icon_h);
-       evas_object_resize(sd->icon_object, icon_w, icon_h);
-       evas_object_resize(sd->event_object, icon_w, icon_h);
-       evas_object_resize(sd->obj, icon_w, icon_h);       
-    }       
-}
-
-static void
-_e_fm_icon_smart_hide(Evas_Object *obj)
-{
-   E_Smart_Data *sd;
-
-   sd = evas_object_smart_data_get(obj);
-   if (!sd) return;
-   if (!sd->visible) return;
-
-   evas_object_hide(sd->event_object);
-   sd->visible = 0;
-   if (sd->icon_object)
-     {
-       evas_object_smart_member_del(sd->icon_object);
-               evas_object_del(sd->icon_object);
-     }
-   sd->icon_object = NULL;
-   if (sd->image_object)
-     {
-       evas_object_smart_member_del(sd->image_object);
-               evas_object_del(sd->image_object);
-     }
-   sd->image_object = NULL;
-   if (sd->thumb_path) free(sd->thumb_path);
-   sd->thumb_path = NULL;
-}
-
-static void
 _e_fm_icon_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
 {
    E_Smart_Data *sd;
@@ -338,6 +302,7 @@
    if (!sd) return;
 
    evas_object_clip_set(sd->event_object, clip);
+   evas_object_clip_set(sd->icon_object, clip);   
 }
 
 static void
@@ -359,7 +324,7 @@
    if (sd->file->type ==  E_FM_FILE_TYPE_DIRECTORY)
      {
        e_theme_edje_object_set(sd->image_object, "base/theme/fileman",
-                               "fileman/icons/folder");
+                               "icons/fileman/folder");
      }
    else
      {
@@ -376,15 +341,15 @@
             for (; *ext2; ext2++)
               *ext2 = tolower(*ext2);
 
-            snprintf(part, PATH_MAX, "fileman/icons/%s", (ext + 1));
+            snprintf(part, PATH_MAX, "icons/fileman/%s", (ext + 1));
 
             if (!e_theme_edje_object_set(sd->image_object, 
"base/theme/fileman", part))
-              e_theme_edje_object_set(sd->image_object, "base/theme/fileman", 
"fileman/icons/file");
+              e_theme_edje_object_set(sd->image_object, "base/theme/fileman", 
"icons/fileman/file");
 
             free(ext);                      
          }
        else
-         e_theme_edje_object_set(sd->image_object, "base/theme/fileman", 
"fileman/icons/file");
+         e_theme_edje_object_set(sd->image_object, "base/theme/fileman", 
"icons/fileman/file");
      }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_smart.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -3 -r1.62 -r1.63
--- e_fileman_smart.c   27 Oct 2005 02:44:36 -0000      1.62
+++ e_fileman_smart.c   27 Oct 2005 10:19:43 -0000      1.63
@@ -183,8 +183,6 @@
 static void                _e_fm_smart_del(Evas_Object *object);
 static void                _e_fm_smart_move(Evas_Object *object, Evas_Coord x, 
Evas_Coord y);
 static void                _e_fm_smart_resize(Evas_Object *object, Evas_Coord 
w, Evas_Coord h);
-static void                _e_fm_smart_show(Evas_Object *object);
-static void                _e_fm_smart_hide(Evas_Object *object);
 
 static void                _e_fm_redraw(E_Fm_Smart_Data *sd);
 
@@ -254,8 +252,8 @@
                               NULL, NULL, NULL, NULL, NULL,
                               _e_fm_smart_move, /* move */
                               _e_fm_smart_resize, /* resize */
-                              _e_fm_smart_show, /* show */
-                              _e_fm_smart_hide, /* hide */
+                              NULL,/* show */
+                              NULL,/* hide */
                               NULL, /* color_set */
                               NULL, /* clip_set */
                               NULL, /* clip_unset */
@@ -432,6 +430,17 @@
    sd->selector_data = data;
 }
 
+void
+e_fm_background_set(Evas_Object *object, Evas_Object *bg)
+{  
+   E_Fm_Smart_Data *sd;
+   
+   if ((!object) || !(sd = evas_object_smart_data_get(object)))
+     return;
+   
+   sd->bg = bg;
+}
+
 /* local subsystem functions */
 
 static void
@@ -452,25 +461,29 @@
    sd->evas = evas_object_evas_get(object);
    sd->frozen = 0;
    sd->is_selector = 0;
-   sd->bg = evas_object_rectangle_add(sd->evas); // this should become an edje
-   evas_object_color_set(sd->bg, 0, 0, 0, 0);
-   evas_object_show(sd->bg);
-
+   sd->bg = edje_object_add(sd->evas);
+   evas_object_smart_member_add(sd->bg, object); 
+   evas_object_show(sd->bg);   
+   e_theme_edje_object_set(sd->selection.band.obj,
+                          "base/theme/fileman/background",
+                          "fileman/background");
    evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_DOWN,
                                  _e_fm_mouse_down_cb, sd);
    evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_UP,
                                  _e_fm_mouse_up_cb, sd);
    evas_object_event_callback_add(sd->bg, EVAS_CALLBACK_MOUSE_MOVE,
                                  _e_fm_mouse_move_cb, sd);
-   evas_object_smart_member_add(sd->bg, object);
+
 
    sd->layout = e_icon_layout_add(sd->evas);
+   evas_object_smart_member_add(sd->layout, object);   
    e_icon_layout_spacing_set(sd->layout, sd->icon_info.x_space, 
sd->icon_info.y_space);
    evas_object_stack_above(sd->layout, sd->bg);
    evas_object_show(sd->layout);
 
    sd->clip = evas_object_rectangle_add(sd->evas);
    evas_object_smart_member_add(sd->clip, object);
+   evas_object_show(sd->clip);
    evas_object_move(sd->clip, -100000, -100000);
    evas_object_resize(sd->clip, 200000, 200000);
    evas_object_color_set(sd->clip, 255, 255, 255, 255);
@@ -479,6 +492,7 @@
    evas_object_clip_set(sd->layout, sd->clip);
 
    sd->selection.band.obj = edje_object_add(sd->evas);
+   evas_object_smart_member_add(sd->selection.band.obj, object);
    e_theme_edje_object_set(sd->selection.band.obj,
                           "base/theme/fileman/rubberband",
                           "fileman/rubberband");
@@ -630,28 +644,6 @@
 }
 
 static void
-_e_fm_smart_show(Evas_Object *object)
-{
-   E_Fm_Smart_Data *sd;
-
-   sd = evas_object_smart_data_get(object);
-   if (!sd) return;
-
-   evas_object_show(sd->clip);
-}
-
-static void
-_e_fm_smart_hide(Evas_Object *object)
-{
-   E_Fm_Smart_Data *sd;
-
-   sd = evas_object_smart_data_get(object);
-   if (!sd) return;
-
-   evas_object_hide(sd->clip);
-}
-
-static void
 _e_fm_redraw(E_Fm_Smart_Data *sd)
 {
    E_Event_Fm_Reconfigure *ev;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_fileman_smart.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_fileman_smart.h   26 Oct 2005 00:19:52 -0000      1.9
+++ e_fileman_smart.h   27 Oct 2005 10:19:43 -0000      1.10
@@ -38,6 +38,7 @@
 EAPI int                   e_fm_freeze(Evas_Object *freeze);
 EAPI int                   e_fm_thaw(Evas_Object *freeze);
 EAPI void                  e_fm_selector_enable(Evas_Object *object, void 
(*func)(Evas_Object *object, char *file, void *data), void *data);
+EAPI void                  e_fm_background_set(Evas_Object *object, 
Evas_Object *bg);
 
 extern int E_EVENT_FM_RECONFIGURE;
 extern int E_EVENT_FM_DIRECTORY_CHANGE;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_icon_layout.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_icon_layout.c     27 Oct 2005 02:44:36 -0000      1.8
+++ e_icon_layout.c     27 Oct 2005 10:19:43 -0000      1.9
@@ -19,7 +19,7 @@
    int              clip_frozen;
    int              fixed;
    unsigned char    changed : 1;
-   Evas_List       *items;
+   Evas_List       *items;         
 };
 
 struct _E_Icon_Layout_Item
@@ -42,8 +42,6 @@
 static void _e_icon_layout_smart_del(Evas_Object *obj);
 static void _e_icon_layout_smart_move(Evas_Object *obj, Evas_Coord x, 
Evas_Coord y);
 static void _e_icon_layout_smart_resize(Evas_Object *obj, Evas_Coord w, 
Evas_Coord h);
-static void _e_icon_layout_smart_show(Evas_Object *obj);
-static void _e_icon_layout_smart_hide(Evas_Object *obj);
 static void _e_icon_layout_smart_color_set(Evas_Object *obj, int r, int g, int 
b, int a);
 static void _e_icon_layout_smart_clip_set(Evas_Object *obj, Evas_Object *clip);
 static void _e_icon_layout_smart_clip_unset(Evas_Object *obj);
@@ -270,6 +268,7 @@
    li->h = 0;
    evas_object_clip_set(obj, sd->clip);
    evas_object_smart_member_add(obj, li->sd->obj);
+   evas_object_show(obj);
    evas_object_data_set(obj, "e_icon_layout_data", li);
    evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE,
                                  _e_icon_layout_smart_item_del_hook, NULL);
@@ -397,8 +396,8 @@
                             NULL, NULL, NULL, NULL, NULL,
                             _e_icon_layout_smart_move,
                             _e_icon_layout_smart_resize,
-                            _e_icon_layout_smart_show,
-                            _e_icon_layout_smart_hide,
+                            NULL,
+                            NULL,
                             _e_icon_layout_smart_color_set,
                             _e_icon_layout_smart_clip_set,
                             _e_icon_layout_smart_clip_unset,
@@ -425,11 +424,12 @@
    sd->yc = 0;
    sd->fixed = 0;
    sd->clip = evas_object_rectangle_add(evas_object_evas_get(obj));
-   evas_object_smart_member_add(sd->clip, obj);
    evas_object_move(sd->clip, 0, 0);
    evas_object_resize(sd->clip, 0, 0);
    evas_object_color_set(sd->clip, 255, 255, 255, 255);
    evas_object_smart_data_set(obj, sd);
+   evas_object_smart_member_add(sd->clip, obj);   
+   evas_object_show(sd->clip);
 }
 
 static void
@@ -493,29 +493,9 @@
    sd->w = w;
    sd->h = h;
    sd->changed = 1;
-   _e_icon_layout_smart_reconfigure(sd);
+   _e_icon_layout_smart_reconfigure(sd);        
 }
-
-static void
-_e_icon_layout_smart_show(Evas_Object *obj)
-{
-   E_Smart_Data *sd;
-   
-   sd = evas_object_smart_data_get(obj);
-   if (!sd) return;
-   if (sd->items) evas_object_show(sd->clip);
-}
-
-static void
-_e_icon_layout_smart_hide(Evas_Object *obj)
-{
-   E_Smart_Data *sd;
-   
-   sd = evas_object_smart_data_get(obj);
-   if (!sd) return;
-   evas_object_hide(sd->clip);
-}
-
+ 
 static void
 _e_icon_layout_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_scrollbar.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_scrollbar.c       27 Oct 2005 02:44:36 -0000      1.8
+++ e_scrollbar.c       27 Oct 2005 10:19:43 -0000      1.9
@@ -13,8 +13,19 @@
 
 struct _E_Scrollbar_Smart_Data
 {
-   Evas_Object *edje_object;
-
+   struct {
+      Evas_Object *object;
+      Evas_Coord x, y, w, h;
+   } edje, drag;
+   
+   struct {
+       Evas_Coord x, y, w, h;
+     } confine;
+   
+   int is_dragging;
+   
+   Evas_Coord mx, my;
+      
    struct {
        double min;
        double max;
@@ -33,7 +44,11 @@
 static void _e_scrollbar_smart_show(Evas_Object *object);
 static void _e_scrollbar_smart_hide(Evas_Object *object);
 static void _e_scrollbar_drag_cb(void *data, Evas_Object *object, const char 
*emission, const char *source);
-    
+
+static void _e_scrollbar_drag_mouse_move_cb(void *data, Evas *evas, 
Evas_Object *object, void *event_info);
+static void _e_scrollbar_drag_mouse_up_cb(void *data, Evas *evas, Evas_Object 
*object, void *event_info);
+static void _e_scrollbar_drag_mouse_down_cb(void *data, Evas *evas, 
Evas_Object *object, void *event_info);
+
 static Evas_Smart *e_scrollbar_smart = NULL;
 
 Evas_Object *
@@ -71,16 +86,22 @@
    switch (dir)
      {
       case E_SCROLLBAR_HORIZONTAL:
-        e_theme_edje_object_set(sd->edje_object, 
+        e_theme_edje_object_set(sd->edje.object, 
                                 "base/theme/widgets/hscrollbar",
                                 "widgets/hscrollbar");
+       e_theme_edje_object_set(sd->drag.object,
+                               "base/theme/widgets/vscrollbar",
+                               "widgets/hscrollbar_drag");     
         sd->direction = dir;
         break;
 
       case E_SCROLLBAR_VERTICAL:
-        e_theme_edje_object_set(sd->edje_object, 
+        e_theme_edje_object_set(sd->edje.object, 
                                 "base/theme/widgets/vscrollbar",
                                 "widgets/vscrollbar");
+       e_theme_edje_object_set(sd->drag.object,
+                               "base/theme/widgets/vscrollbar",
+                               "widgets/vscrollbar_drag");     
         sd->direction = dir;   
         break;
      }
@@ -125,9 +146,9 @@
    sd->value.current = value;
 
    if (sd->direction == E_SCROLLBAR_HORIZONTAL)
-     edje_object_part_drag_value_set(sd->edje_object, "drag", value, 0);
+     edje_object_part_drag_value_set(sd->edje.object, "drag", value, 0);
    else
-     edje_object_part_drag_value_set(sd->edje_object, "drag", 0, value);
+     edje_object_part_drag_value_set(sd->edje.object, "drag", 0, value);
 }
 
 double
@@ -139,7 +160,7 @@
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
      return 0.0;
    
-   edje_object_part_drag_value_get(sd->edje_object, "drag", &dx, &dy);
+   edje_object_part_drag_value_get(sd->edje.object, "drag", &dx, &dy);
    
    if (sd->direction == E_SCROLLBAR_HORIZONTAL)     
      sd->value.current = dx;
@@ -159,13 +180,13 @@
    
    if (sd->direction == E_SCROLLBAR_HORIZONTAL)
      {
-       edje_object_part_drag_step_set(sd->edje_object, "drag", step, 0);
-       edje_object_part_drag_page_set(sd->edje_object, "drag", page, 0);
+       edje_object_part_drag_step_set(sd->edje.object, "drag", step, 0);
+       edje_object_part_drag_page_set(sd->edje.object, "drag", page, 0);
      }
    else
      {
-       edje_object_part_drag_step_set(sd->edje_object, "drag", 0, step);
-       edje_object_part_drag_page_set(sd->edje_object, "drag", 0, page);
+       edje_object_part_drag_step_set(sd->edje.object, "drag", 0, step);
+       edje_object_part_drag_page_set(sd->edje.object, "drag", 0, page);
      }
 }
 
@@ -179,8 +200,8 @@
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
      return;
    
-   edje_object_part_drag_step_get(sd->edje_object, "drag", &stepx, &stepy);
-   edje_object_part_drag_page_get(sd->edje_object, "drag", &pagex, &pagey);   
+   edje_object_part_drag_step_get(sd->edje.object, "drag", &stepx, &stepy);
+   edje_object_part_drag_page_get(sd->edje.object, "drag", &pagex, &pagey);   
    
    if (sd->direction == E_SCROLLBAR_HORIZONTAL)
      {
@@ -210,19 +231,45 @@
 
    sd = calloc(1, sizeof(E_Scrollbar_Smart_Data));
    if (!sd) return;
+   sd->is_dragging = 0;   
    sd->value.min = 0.0;
    sd->value.max = 1.0;
    sd->callbacks = NULL;
-   sd->direction = E_SCROLLBAR_HORIZONTAL;   
-   sd->edje_object = edje_object_add(evas);
-   e_theme_edje_object_set(sd->edje_object, 
+   sd->direction = E_SCROLLBAR_HORIZONTAL;
+   
+   sd->edje.object = edje_object_add(evas);
+   sd->edje.x = 0;
+   sd->edje.y = 0;
+   sd->edje.w = 0;
+   sd->edje.h = 0;
+   e_theme_edje_object_set(sd->edje.object, "base/theme/widgets/hscrollbar",
+                             "widgets/hscrollbar");
+   
+   sd->drag.object = edje_object_add(evas);
+   sd->drag.x = 0;
+   sd->drag.y = 0;
+   sd->drag.w = 0;
+   sd->drag.h = 0;
+   e_theme_edje_object_set(sd->drag.object,
                           "base/theme/widgets/hscrollbar",
-                          "widgets/hscrollbar");
-   edje_object_signal_callback_add(sd->edje_object, "drag", "*", 
_e_scrollbar_drag_cb, sd);
-   evas_object_data_set(sd->edje_object, "smart", object);
-   evas_object_smart_member_add(sd->edje_object, object);
+                          "widgets/hscrollbar_drag");
+   
+   edje_object_part_geometry_get(sd->drag.object, "confine",
+                                &sd->confine.x, &sd->confine.y,
+                                &sd->confine.w, sd->confine.h);
+   
+   evas_object_event_callback_add(sd->drag.object, EVAS_CALLBACK_MOUSE_MOVE, 
_e_scrollbar_drag_mouse_move_cb, sd);
+   evas_object_event_callback_add(sd->drag.object, EVAS_CALLBACK_MOUSE_UP, 
_e_scrollbar_drag_mouse_up_cb, sd);
+   evas_object_event_callback_add(sd->drag.object, EVAS_CALLBACK_MOUSE_DOWN, 
_e_scrollbar_drag_mouse_down_cb, sd);
+   
+   evas_object_data_set(sd->edje.object, "smart", object);
+   evas_object_smart_member_add(sd->edje.object, object);
+   evas_object_smart_member_add(sd->drag.object, object);   
    
    evas_object_smart_data_set(object, sd);
+   
+   evas_object_show(sd->edje.object);
+   evas_object_show(sd->drag.object);
 }
 
 static void
@@ -233,8 +280,8 @@
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
      return;
 
-   evas_object_del(sd->edje_object);
-
+   evas_object_del(sd->edje.object);
+   evas_object_del(sd->drag.object);   
    free(sd);
 }
 
@@ -242,12 +289,28 @@
 static void
 _e_scrollbar_smart_move(Evas_Object *object, Evas_Coord x, Evas_Coord y)
 {
-   E_Scrollbar_Smart_Data *sd;
-
+   E_Scrollbar_Smart_Data *sd;   
+   Evas_Coord we, ye, yd, wd;
+   Evas_Coord cx, cy, cw, ch;
+   
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
      return;
-
-   evas_object_move(sd->edje_object, x, y);
+   
+   evas_object_geometry_get(sd->edje.object, NULL, &ye, &we, NULL);
+   evas_object_geometry_get(sd->drag.object, NULL, &yd, &wd, NULL);
+   
+   evas_object_move(sd->edje.object, x, y);
+   edje_object_part_geometry_get(sd->edje.object, "confine", &cx, &cy, &cw, 
&ch);
+   evas_object_move(sd->drag.object, x + cx + abs(wd - cw)/2, y + cy);
+   
+   sd->edje.x = x;
+   sd->edje.y = y;
+   
+   sd->confine.x = x + cx;
+   sd->confine.y = y + cy;
+   
+   sd->drag.x = x + cx + abs(cw - wd)/2;
+   sd->drag.y = y + cy ;   
 }
 
 /* Called when the object is resized */
@@ -255,11 +318,18 @@
 _e_scrollbar_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h)
 {
    E_Scrollbar_Smart_Data *sd;
-
+   
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
-      return;
-
-   evas_object_resize(sd->edje_object, w, h);
+     return;
+   
+   evas_object_resize(sd->edje.object, w, h);
+   sd->edje.w = w;
+   sd->edje.h = h;
+   edje_object_part_geometry_get(sd->edje.object, "confine", NULL, NULL,
+                                   &sd->confine.w, &sd->confine.h);
+   evas_object_resize(sd->drag.object, sd->confine.w, 20);
+   sd->drag.w = sd->confine.w;
+   sd->drag.h = 20;   
 }
 
 static void
@@ -270,7 +340,9 @@
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
       return;
 
-   evas_object_show(sd->edje_object);
+   evas_object_show(sd->edje.object);
+   evas_object_show(sd->drag.object);   
+
 }
 
 static void
@@ -281,7 +353,8 @@
    if ((!object) || !(sd = evas_object_smart_data_get(object)))
       return;
 
-   evas_object_hide(sd->edje_object);
+   evas_object_hide(sd->edje.object);
+   evas_object_hide(sd->drag.object);
 }
 
 static void
@@ -308,3 +381,65 @@
        handler->cb.drag(smart_object, sd->value.current, handler->data);
     }
 }
+
+static void
+  _e_scrollbar_drag_mouse_down_cb(void *data, Evas *evas, Evas_Object *object, 
void *event_info)
+{
+      E_Scrollbar_Smart_Data *sd;
+      Evas_Event_Mouse_Down *ev;
+   
+      ev = event_info;
+      sd = data;
+      sd->mx = ev->canvas.x - sd->drag.x;
+      sd->my = ev->canvas.y - sd->drag.y;
+      sd->is_dragging = 1;
+}
+
+static void
+  _e_scrollbar_drag_mouse_up_cb(void *data, Evas *evas, Evas_Object *object, 
void *event_info)
+{
+      E_Scrollbar_Smart_Data *sd;
+   
+      sd = data;
+      sd->is_dragging = 0;
+}
+
+static void
+_e_scrollbar_drag_mouse_move_cb(void *data, Evas *evas, Evas_Object *object, 
void *event_info)
+{
+   E_Scrollbar_Smart_Data *sd;
+   Evas_Event_Mouse_Move *ev = event_info;
+   Evas_Coord x, y, w, h;
+   Evas_Coord cx, cy, cw, ch;
+   
+   sd = data;
+   
+   if(!sd->is_dragging) return;
+   
+   if(sd->direction = E_SCROLLBAR_VERTICAL)
+     {
+       if (sd->drag.y < sd->confine.y)
+         {
+            evas_object_move(sd->drag.object, sd->drag.x, sd->confine.y);
+            sd->drag.y = sd->confine.y;
+            return;
+         }
+       
+       if (sd->drag.y == sd->confine.y && ev->cur.canvas.y - sd->my < 
sd->confine.y)
+         return;
+       
+       if (sd->drag.y + sd->drag.h > sd->confine.y + sd->confine.h)
+         {
+            evas_object_move(sd->drag.object, sd->drag.x, sd->confine.y + 
sd->confine.h - sd->drag.h);
+            sd->drag.y = sd->confine.y + sd->confine.h - sd->drag.h;
+            return;
+         }
+       
+       if (sd->drag.y + sd->drag.h == sd->confine.y + sd->confine.h &&
+           ev->cur.canvas.y + sd->my > sd->confine.y + sd->confine.h)
+         return;
+       
+       evas_object_move(sd->drag.object, sd->drag.x, ev->cur.canvas.y - 
sd->my);
+       sd->drag.y = ev->cur.canvas.y - sd->my;
+     }
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -3 -r1.110 -r1.111
--- e_int_menus.c       25 Oct 2005 01:03:50 -0000      1.110
+++ e_int_menus.c       27 Oct 2005 10:19:43 -0000      1.111
@@ -614,11 +614,10 @@
 _e_int_menus_eapedit_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
 {
    /* This is temporarily put here so we can test the eap editor */
-   E_App_Edit *eap_edit;
    E_App *a;
    
    a = e_app_empty_new(NULL);
-   eap_edit = e_eap_edit_show(m->zone->container, a);
+   e_eap_edit_show(m->zone->container, a);
 }
 
 static void




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to