Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_includes.h e_int_config_background.c 
Added Files:
        e_int_config_background_import.c 
        e_int_config_background_import.h 


Log Message:
Added import function to bg config dialog
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -3 -r1.95 -r1.96
--- Makefile.am 21 Jan 2006 15:39:03 -0000      1.95
+++ Makefile.am 22 Jan 2006 14:11:15 -0000      1.96
@@ -121,6 +121,7 @@
 e_int_config_window_manipulation.h \
 e_int_config_window_display.h \
 e_int_config_background.h \
+e_int_config_background_import.h \
 e_int_config_theme.h \
 e_int_config_menus.h \
 e_int_config_general.h \
@@ -233,6 +234,7 @@
 e_int_config_window_manipulation.c \
 e_int_config_window_display.c \
 e_int_config_background.c \
+e_int_config_background_import.c \
 e_int_config_theme.c \
 e_int_config_menus.c \
 e_int_config_general.c \
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_includes.h,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -3 -r1.78 -r1.79
--- e_includes.h        12 Jan 2006 02:12:21 -0000      1.78
+++ e_includes.h        22 Jan 2006 14:11:15 -0000      1.79
@@ -101,6 +101,7 @@
 #include "e_int_config_window_manipulation.h"
 #include "e_int_config_window_display.h"
 #include "e_int_config_background.h"
+#include "e_int_config_background_import.h"
 #include "e_int_config_theme.h"
 #include "e_int_config_menus.h"
 #include "e_int_config_general.h"
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_background.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_int_config_background.c   20 Jan 2006 11:09:14 -0000      1.27
+++ e_int_config_background.c   22 Jan 2006 14:11:15 -0000      1.28
@@ -1,41 +1,54 @@
 /*
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
+
 #include "e.h"
 
 #define BG_SET_DEFAULT_DESK 0
 #define BG_SET_THIS_DESK 1
 #define BG_SET_ALL_DESK 2
 
-static void        *_create_data              (E_Config_Dialog *cfd);
-static void         _free_data                (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
-static int          _basic_apply_data         (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
-static Evas_Object *_basic_create_widgets     (E_Config_Dialog *cfd, Evas 
*evas, E_Config_Dialog_Data *cfdata);
-static int          _advanced_apply_data      (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
-static Evas_Object *_advanced_create_widgets  (E_Config_Dialog *cfd, Evas 
*evas, E_Config_Dialog_Data *cfdata);
-static void        _load_bgs                  (E_Config_Dialog *cfd, 
Evas_Object *il);
-void               _ilist_cb_bg_selected      (void *data);
+static void        *_create_data                (E_Config_Dialog *cfd);
+static void         _free_data                  (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
+static void         _fill_data                  (E_Config_Dialog_Data *cfdata);
+static int          _basic_apply_data           (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
+static Evas_Object *_basic_create_widgets       (E_Config_Dialog *cfd, Evas 
*evas, E_Config_Dialog_Data *cfdata);
+static int          _advanced_apply_data        (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
+static Evas_Object *_advanced_create_widgets    (E_Config_Dialog *cfd, Evas 
*evas, E_Config_Dialog_Data *cfdata);
+static void         _load_bgs                   (E_Config_Dialog *cfd, 
Evas_Object *il);
+void                _ilist_cb_bg_selected       (void *data);
+static void         _bg_config_dialog_cb_import (void *data, void *data2);
+static int          _bg_dialog_close            (E_Config_Dialog *cfd, 
E_Config_Dialog_Data *cfdata);
+static void         _bg_file_added              (void *data, 
Ecore_File_Monitor *monitor, Ecore_File_Event event, const char *path);
+
+static Ecore_File_Monitor *_bg_file_monitor;
 
 struct _E_Config_Dialog_Data
 {
    char *bg, *current_bg;
    int bg_method;
+   E_Config_Dialog *cfd;
+   E_Config_Dialog *import;
+   Evas_Object *il;
 };
 
 EAPI E_Config_Dialog *
 e_int_config_background(E_Container *con)
 {
    E_Config_Dialog *cfd;
-   E_Config_Dialog_View v;
+   E_Config_Dialog_View *v;
 
-   v.create_cfdata           = _create_data;
-   v.free_cfdata             = _free_data;
-   v.basic.apply_cfdata      = _basic_apply_data;
-   v.basic.create_widgets    = _basic_create_widgets;
-   v.advanced.apply_cfdata   = _advanced_apply_data;
-   v.advanced.create_widgets = _advanced_create_widgets;
+   v = E_NEW(E_Config_Dialog_View, 1);
+   
+   v->create_cfdata           = _create_data;
+   v->free_cfdata             = _free_data;
+   v->basic.apply_cfdata      = _basic_apply_data;
+   v->basic.create_widgets    = _basic_create_widgets;
+   v->advanced.apply_cfdata   = _advanced_apply_data;
+   v->advanced.create_widgets = _advanced_create_widgets;
+   v->close_cfdata            = _bg_dialog_close;
 
-   cfd = e_config_dialog_new(con, _("Background Settings"), NULL, 0, &v, NULL);
+   cfd = e_config_dialog_new(con, _("Background Settings"), NULL, 0, v, NULL);
    return cfd;
 }
 
@@ -55,14 +68,20 @@
    E_Config_Dialog_Data *cfdata;
 
    cfdata = E_NEW(E_Config_Dialog_Data, 1);
-   cfd->cfdata = cfdata;
    _fill_data(cfdata);
+   cfd->cfdata = cfdata;
+   cfdata->cfd = cfd;
    return cfdata;
 }
 
 static void
 _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
+   if (_bg_file_monitor) 
+     { 
+       ecore_file_monitor_del(_bg_file_monitor);
+       _bg_file_monitor = NULL;
+     }   
    if (cfdata->current_bg) free(cfdata->current_bg);
    free(cfdata);
 }
@@ -71,11 +90,15 @@
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata)
 {
    Evas_Object *o, *ot, *of, *il, *im;
-
+   char path[4096];
+   
    _fill_data(cfdata);
 
    ot = e_widget_table_add(evas, 0);
    il = e_widget_ilist_add(evas, 48, 48, &(cfdata->bg));
+
+   cfdata->il = il;
+   
    e_widget_ilist_selector_set(il, 1);
    e_widget_min_size_set(il, 180, 40);
 
@@ -87,17 +110,31 @@
    e_widget_ilist_go(il);
    e_widget_table_object_append(ot, il, 0, 0, 1, 2, 1, 1, 1, 1);
 
+   /* Add import Button */
+   o = e_widget_button_add(evas, _("Import An Image"), NULL, 
_bg_config_dialog_cb_import, cfd, NULL);
+   e_widget_table_object_append(ot, o, 0, 2, 1, 1, 1, 0, 0, 0);
+   
    of = e_widget_framelist_add(evas, _("Background Preview"), 0);
    e_widget_min_size_set(of, 320, 240);
    e_widget_table_object_append(ot, of, 1, 0, 1, 2, 1, 1, 1, 1);
    e_widget_framelist_object_append(of, im);
 
+   if (_bg_file_monitor) 
+     {
+       ecore_file_monitor_del(_bg_file_monitor);
+       _bg_file_monitor = NULL;
+     }
+      
+   snprintf(path, sizeof(path), "%s/.e/e/backgrounds", e_user_homedir_get());
+   _bg_file_monitor = ecore_file_monitor_add(path, _bg_file_added, cfdata);
    return ot;
 }
 
 static int
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
+   if (!cfdata->bg) return 1;
+
    while (e_config->desktop_backgrounds)
      {
        E_Config_Desktop_Background *cfbg;
@@ -106,8 +143,8 @@
      }
    if (e_config->desktop_default_background)
      evas_stringshare_del(e_config->desktop_default_background);
-
-   if (!(cfdata->bg[0])) e_config->desktop_default_background = NULL;
+   
+   if (!cfdata->bg[0]) e_config->desktop_default_background = NULL;
    else
      e_config->desktop_default_background = evas_stringshare_add(cfdata->bg);
 
@@ -123,11 +160,13 @@
 {
    Evas_Object *o, *ot, *of, *il, *im, *oc;
    E_Radio_Group *rg;
-
+   char path[4096];
+   
    _fill_data(cfdata);
 
    ot = e_widget_table_add(evas, 0);
    il = e_widget_ilist_add(evas, 48, 48, &(cfdata->bg));
+   cfdata->il = il;
    e_widget_ilist_selector_set(il, 1);
    e_widget_min_size_set(il, 180, 40);
 
@@ -156,6 +195,15 @@
    e_widget_framelist_object_append(of, oc);
 
    e_widget_table_object_append(ot, of, 1, 2, 1, 1, 1, 1, 1, 1);
+
+   if (_bg_file_monitor) 
+     { 
+       ecore_file_monitor_del(_bg_file_monitor);
+       _bg_file_monitor = NULL;
+     }
+
+   snprintf(path, sizeof(path), "%s/.e/e/backgrounds", e_user_homedir_get());  
 
+   _bg_file_monitor = ecore_file_monitor_add(path, _bg_file_added, cfdata);   
    return ot;
 }
 
@@ -185,8 +233,7 @@
        if (e_config->desktop_default_background) 
          evas_stringshare_del(e_config->desktop_default_background);
        
-       if (!(cfdata->bg[0]))
-         e_config->desktop_default_background = NULL;
+       if (!cfdata->bg[0]) e_config->desktop_default_background = NULL;
        else
          e_config->desktop_default_background = 
evas_stringshare_add(cfdata->bg);
 
@@ -234,8 +281,10 @@
    Evas *evasbuf;
    const char *f;
    char *c;
-   evas = evas_object_evas_get(il);
 
+   if (!il) return;
+   
+   evas = evas_object_evas_get(il);
    bg_obj = edje_object_add(cfd->dia->win->evas);
 
    /* Load The Theme's Background */
@@ -253,13 +302,13 @@
        else
          o = e_thumb_evas_object_get(c, cfd->dia->win->evas, 48, 48, 1);
 
-       e_widget_ilist_append(il, o, _("Theme Background"), 
_ilist_cb_bg_selected, cfd, "");
+       e_widget_ilist_append(il, o, "Theme Background", _ilist_cb_bg_selected, 
cfd, "");
      }
    if (!e_config->desktop_default_background)
      e_widget_ilist_selected_set(il, 0);
    
    im = e_widget_image_add_from_object(cfd->dia->win->evas, bg_obj, 320, 240);
-   e_widget_image_object_set(im,  e_thumb_evas_object_get(c, 
cfd->dia->win->evas, 320, 240, 1));
+   e_widget_image_object_set(im, e_thumb_evas_object_get(c, 
cfd->dia->win->evas, 320, 240, 1));
 
    evas_object_del(o);
    ecore_evas_free(eebuf);
@@ -279,7 +328,7 @@
 
             bgs = ecore_file_ls(d->dir);
             if (!bgs) continue;
-            while (bg_file = ecore_list_next(bgs))
+            while ((bg_file = ecore_list_next(bgs)))
               {
                  char full_path[4096];
 
@@ -349,3 +398,64 @@
      }
 }
 
+static void
+_bg_config_dialog_cb_import(void *data, void *data2) 
+{
+   E_Config_Dialog *parent;
+   E_Config_Dialog *import;
+   
+   parent = data;
+   if (!parent) return;
+
+   import = e_int_config_background_import(parent);
+   parent->cfdata->import = import;
+}
+
+static void 
+_bg_file_added(void *data, Ecore_File_Monitor *monitor, Ecore_File_Event 
event, const char *path) 
+{
+   E_Config_Dialog *cfd;
+   E_Config_Dialog_Data *cfdata;
+   Evas *evas;
+   Evas_Object *il, *ic;
+   char *file;
+   
+   cfdata = data;
+   if (!cfdata) return;
+   
+   il = cfdata->il;
+   if (!il) return;
+   
+   cfd = cfdata->cfd;
+   if (!cfd) return;
+   
+   evas = e_win_evas_get(cfd->dia->win);
+   
+   file = (char *)ecore_file_get_file((char *)path);
+   if (event == ECORE_FILE_EVENT_CREATED_FILE) 
+     {
+       printf("File Added: %s\n", path);
+       if (e_util_edje_collection_exists((char *)path, "desktop/background")) 
+         {
+            if (!e_thumb_exists((char *)path))
+              ic = e_thumb_generate_begin((char *)path, 48, 48, evas, &ic, 
NULL, NULL);
+            else
+              ic = e_thumb_evas_object_get((char *)path, evas, 48, 48, 1);
+            e_widget_ilist_append(il, ic, ecore_file_strip_ext(file), 
_ilist_cb_bg_selected, cfd, (char *)path);            
+         }
+     }
+   free(file);
+}
+
+static int
+_bg_dialog_close(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
+{   
+   if (!cfd) return 0;
+   if (!cfdata) return 0;
+   if (!cfdata->import->dia) return 0;
+   
+   e_object_del_attach_func_set(E_OBJECT(cfd->dia), NULL);
+   e_object_del(E_OBJECT(cfdata->import->dia));
+   
+   return 1;
+}




-------------------------------------------------------
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://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to