Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/exhibit/src/bin


Modified Files:
        exhibit.h exhibit_file.c exhibit_file.h exhibit_image.c 
        exhibit_menus.c 


Log Message:
- autofoo fixes, eventually remove pkg-config
- right click -> set as wallpaper (centered for now, will get more options)

===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- exhibit.h   14 Dec 2005 23:27:12 -0000      1.3
+++ exhibit.h   15 Dec 2005 10:07:14 -0000      1.4
@@ -19,6 +19,14 @@
 
 #include "config.h"
 
+#if HAVE_E
+#include <E_Lib.h>
+#endif
+
+#if HAVE_ENGRAVE
+#include <Engrave.h>
+#endif
+
 #define ETK_DEFAULT_ICON_SET_FILE ETK_PACKAGE_DATA_DIR 
"/stock_icons/default.edj"
 
 typedef enum _Ex_Images
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_file.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- exhibit_file.c      14 Dec 2005 11:33:30 -0000      1.1
+++ exhibit_file.c      15 Dec 2005 10:07:14 -0000      1.2
@@ -29,3 +29,25 @@
    edje_file_collection_list_free(groups);
    return val;
 }
+
+char *
+_ex_file_strip_extention(char *path) {
+   char *ptr;
+   char *c;
+   char *file;
+   int i;
+   
+   i = 0;
+   ptr = path;
+   c = strrchr(ptr,'.');
+   file = malloc(strlen(path));
+   
+   while(ptr != c) {
+      file[i] = *ptr;
+      ptr++;
+      i++;
+   }
+   
+   file[i] = '\0';
+   return file;
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_file.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- exhibit_file.h      14 Dec 2005 11:33:30 -0000      1.1
+++ exhibit_file.h      15 Dec 2005 10:07:14 -0000      1.2
@@ -2,5 +2,6 @@
 #define _EX_FILE_H
 
 int         _ex_file_is_viewable(char *file);
+char       *_ex_file_strip_extention(char *path);
 
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- exhibit_image.c     14 Dec 2005 23:27:12 -0000      1.5
+++ exhibit_image.c     15 Dec 2005 10:07:14 -0000      1.6
@@ -580,3 +580,152 @@
 {
    
 }
+
+void
+_ex_image_wallpaper_set(Etk_Image *im)
+{
+   pid_t pid;
+   int w, h;
+   char *file, *dir, *edj_file, *filenoext, *esetroot;
+   char esetroot_opt[] = "-c";
+#if HAVE_ENGRAVE   
+   Engrave_File *edj;
+   Engrave_Image *image;
+   Engrave_Group *grp;
+   Engrave_Part *part;
+   Engrave_Part_State *ps;
+#endif   
+
+   pid = fork();
+   if(!pid)
+     { 
+#if HAVE_E   
+       if (!e_lib_init(getenv("DISPLAY")))
+         goto PSEUDO;
+       /* make sure we got a file name */
+       if (!im->filename) exit(0);
+       if(strlen(im->filename) <= 4) exit(0);
+       
+       file = ecore_file_get_file(im->filename);
+       dir = ecore_file_get_dir(im->filename);
+       
+       filenoext = _ex_file_strip_extention(im->filename);
+       filenoext = ecore_file_get_file(filenoext);
+       
+       if (strcmp(im->filename + strlen(im->filename) - 4, ".edj") == 0) {
+          int w, h, num;
+          char static_bg[PATH_MAX];
+          char esetroot_s[PATH_MAX*2];
+          char filename_s[PATH_MAX];
+          Ecore_X_Window *roots = NULL;
+          
+          if (!ecore_x_init(NULL))
+            exit(0);
+          
+          num = 0;
+          roots = ecore_x_window_root_list(&num);
+          ecore_x_window_size_get(roots[0], &w, &h);
+          snprintf(filename_s, PATH_MAX, "/tmp/%s.png", filenoext);
+          snprintf(static_bg, PATH_MAX, "edje_thumb %s desktop/background %s 
-g %dx%d -og %dx%d", im->filename, filename_s, w, h, w, h);
+          system(static_bg);
+          e_lib_background_set(im->filename);
+          
+          snprintf(esetroot_s, PATH_MAX, "Esetroot %s %s ", esetroot_opt, 
filename_s);
+          system(esetroot_s);
+          exit(0);
+       }
+   
+#if HAVE_ENGRAVE   
+       /* Set up edj path */
+       edj_file = malloc(strlen(getenv("HOME")) +  strlen("/.e/e/backgrounds/")
+                         + strlen(filenoext) + strlen(".edj") + 1);
+       strcpy(edj_file, getenv("HOME"));
+       strcat(edj_file, "/.e/e/backgrounds/");
+       strcat(edj_file, filenoext);
+       strcat(edj_file, ".edj");
+       
+       /* Determine image width / height */
+         {
+            Evas_Object *o;
+            Ecore_Evas *ee;
+            
+            ee = ecore_evas_buffer_new(0, 0);
+            o = evas_object_image_add(ecore_evas_get(ee));
+            evas_object_image_file_set(o, im->filename, NULL);
+            evas_object_image_size_get(o, &w, &h);
+            evas_object_del(o);
+            ecore_evas_free(ee);
+         }
+       
+       /* create the .edj */
+       edj = engrave_file_new();
+       engrave_file_image_dir_set(edj, dir);
+       image = engrave_image_new(file, ENGRAVE_IMAGE_TYPE_COMP, 0);
+       engrave_file_image_add(edj, image);
+       
+       grp = engrave_group_new();
+       engrave_group_name_set(grp, "desktop/background");
+       engrave_file_group_add(edj, grp);
+       
+       part = engrave_part_new(ENGRAVE_PART_TYPE_IMAGE);
+       engrave_part_name_set(part, "background_image");
+       engrave_group_part_add(grp, part);
+       
+       ps = engrave_part_state_new();
+       engrave_part_state_name_set(ps, "default", 0.0);
+       engrave_part_state_image_normal_set(ps, image);
+       
+       engrave_part_state_max_size_set(ps, w, h);
+       
+       /* for now, dont differentiate, just center */
+# if 0   
+       switch(e_bg_type) {
+        case E_BG_CENTER:
+          engrave_part_state_max_size_set(ps, w, h);
+          break;
+          
+        case E_BG_SCALE:
+          break;
+          
+        case E_BG_FIT:
+          break;
+          
+        case E_BG_TILE:
+          /* FIXME: This is a temp until dj2 fixes engrave */
+          //engrave_part_state_max_size_set(ps, w, h);
+          engrave_part_state_fill_size_relative_set(ps, 0.0, 0.0);
+          engrave_part_state_fill_size_offset_set(ps, w, h);
+          break;
+          
+        default:
+          /* FIXME: This is a temp until dj2 fixes engrave */
+          //engrave_part_state_max_size_set(ps, w, h);
+          engrave_part_state_fill_size_relative_set(ps, 0.0, 0.0);
+          engrave_part_state_fill_size_offset_set(ps, w, h);
+          break;
+       }
+# endif
+       
+       engrave_part_state_add(part, ps);
+       
+       engrave_edj_output(edj, edj_file);
+       engrave_file_free(edj);   
+       
+       /* set the background */
+       e_lib_background_set(edj_file);
+       
+#endif
+       e_lib_shutdown();
+#endif
+       
+PSEUDO:
+       
+       /* If we're using pseudo-trans for eterm, then this will help */
+       esetroot = malloc(strlen("Esetroot ") + strlen(esetroot_opt) + 
strlen(im->filename) + 2);
+       snprintf(esetroot, strlen("Esetroot ") + strlen(esetroot_opt) + 
strlen(im->filename) + 2,
+                "Esetroot %s %s", esetroot_opt, im->filename);
+       system(esetroot);
+       free(esetroot);
+       exit(0);
+     }
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- exhibit_menus.c     14 Dec 2005 23:27:12 -0000      1.5
+++ exhibit_menus.c     15 Dec 2005 10:07:14 -0000      1.6
@@ -257,8 +257,14 @@
 void
 _ex_menu_set_wallpaper_cb(Etk_Object *obj, void *data)
 {
+   Exhibit      *e;
+   Etk_Tree_Row *r;   
    EX_MENU_ITEM_GET_RETURN(obj);
-   printf("set as wallpaper\n");
+   
+   e = data;
+   r = etk_tree_selected_row_get(ETK_TREE(e->itree));
+   if(!r) return;   
+   _ex_image_wallpaper_set(e->image);
 }
 
 void




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