Enlightenment CVS committal

Author  : atmosphere
Project : e17
Module  : apps/euphoria

Dir     : e17/apps/euphoria/src


Modified Files:
        callbacks.c euphoria.h interface.c 


Log Message:
use esmart file dialog if it's present in the theme
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/euphoria/src/callbacks.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- callbacks.c 22 Apr 2004 16:46:33 -0000      1.25
+++ callbacks.c 14 May 2004 19:30:46 -0000      1.26
@@ -1,5 +1,5 @@
 /*
- * $Id: callbacks.c,v 1.25 2004/04/22 16:46:33 atmosphere Exp $
+ * $Id: callbacks.c,v 1.26 2004/05/14 19:30:46 atmosphere Exp $
  * vim:noexpandtab:sw=4:sts=4:ts=4
  */
 
@@ -462,11 +462,15 @@
 
 /* File Dialog to add files, thanx to EWL */
 EDJE_CB(playlist_add) {
-    Ewl_Widget *fd_win = NULL;
-    Ewl_Widget *fd = NULL;
-    Ewl_Widget *vbox = NULL;
-
-    if (_fd_win) {
+    if(e->gui.file_dialog.ee) {
+       if(!ecore_evas_visibility_get(e->gui.file_dialog.ee))
+           ecore_evas_show(e->gui.file_dialog.ee);
+    }
+    else {
+       Ewl_Widget *fd_win = NULL;
+       Ewl_Widget *fd = NULL;
+       Ewl_Widget *vbox = NULL;
+       if (_fd_win) {
                ewl_widget_show(_fd_win);
                return;
        }
@@ -498,7 +502,8 @@
        ewl_widget_show(fd);
 
        _fd_win = fd_win;
-    ewl_widget_show(_fd_win);
+       ewl_widget_show(_fd_win);
+    }
 }
 
 EDJE_CB(playlist_del) {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/euphoria/src/euphoria.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- euphoria.h  25 Mar 2004 20:39:30 -0000      1.7
+++ euphoria.h  14 May 2004 19:30:46 -0000      1.8
@@ -2,7 +2,7 @@
 #define __EUPHORIA_H
 
 /*
- * $Id: euphoria.h,v 1.7 2004/03/25 20:39:30 tsauerbeck Exp $
+ * $Id: euphoria.h,v 1.8 2004/05/14 19:30:46 atmosphere Exp $
  * vim:noexpandtab:sw=4:sts=4:ts=4
  */
 
@@ -31,6 +31,10 @@
        Ecore_Evas *ee;
        Evas_Object *edje;
        Evas_Object *playlist; /* playlist container */
+       struct {
+           Ecore_Evas *ee;
+           Evas_Object *fd;
+       } file_dialog;
 } Gui;
 
 typedef struct {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/euphoria/src/interface.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- interface.c 2 May 2004 16:02:51 -0000       1.15
+++ interface.c 14 May 2004 19:30:46 -0000      1.16
@@ -1,5 +1,5 @@
 /*
- * $Id: interface.c,v 1.15 2004/05/02 16:02:51 tsauerbeck Exp $
+ * $Id: interface.c,v 1.16 2004/05/14 19:30:46 atmosphere Exp $
  * vim:noexpandtab:sw=4:sts=4:ts=4
  */
 
@@ -7,6 +7,8 @@
 #include <assert.h>
 #include <Esmart/Esmart_Container.h>
 #include <Esmart/Esmart_Draggies.h>
+#include <Esmart/Esmart_File_Dialog.h>
+#include <Esmart/Esmart_Trans.h>
 #include <Edje.h>
 #include <Ewl.h>
 #include "euphoria.h"
@@ -22,10 +24,15 @@
 
 static void setup_playlist(Euphoria *e);
 static void register_callbacks(Euphoria *e);
+static bool ui_init_esmart_file_dialog(Euphoria *e);
 
 static int app_signal_exit(void *data, int type, void *event) {
-       ecore_main_loop_quit();
-       return 1;
+    Evas_Object *o = NULL;
+    if((o = (Evas_Object*)data))
+    {
+       edje_object_signal_emit(o, "QUIT", "");
+    }
+    return 1;
 }
 
 static void cb_ee_pre_render(Ecore_Evas *ee) {
@@ -37,19 +44,32 @@
 }
 
 /**
+ * @param ee
+ */
+static void cb_ee_del(Ecore_Evas *ee) {
+    ecore_evas_hide(ee);
+}
+/**
  * Resizes the Edje to the size of our Ecore Evas
  *
  * @param ee
  */
 static void cb_ee_resize(Ecore_Evas *ee) {
        Evas *evas = ecore_evas_get(ee);
-       Evas_Object *edje = evas_object_name_find(evas, "main_edje");
-       Evas_Object *dragger = evas_object_name_find(evas, "dragger");
-       int w = 0, h = 0;
-
-       ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
-       evas_object_resize(edje, (Evas_Coord) w, (Evas_Coord) h);
-       evas_object_resize(dragger, (Evas_Coord) w, (Evas_Coord) h);
+       Evas_Object *o = NULL;
+       int x = 0, y = 0, w = 0, h = 0;
+
+       ecore_evas_geometry_get(ee, &x, &y, &w, &h);
+       if((o = evas_object_name_find(evas, "main_edje")))
+           evas_object_resize(o, (Evas_Coord) w, (Evas_Coord) h);
+       if((o = evas_object_name_find(evas, "dragger")))
+           evas_object_resize(o, (Evas_Coord) w, (Evas_Coord) h);
+       if((o = evas_object_name_find(evas, "trans")))
+       {
+           evas_object_resize(o, (Evas_Coord) w, (Evas_Coord) h);
+           esmart_trans_x11_freshen(o, (Evas_Coord)x, (Evas_Coord)y,
+                                       (Evas_Coord)w, (Evas_Coord)h);
+       }
 }
 
 static void cb_dragger_mouse_up(void *data, Evas *evas, Evas_Object *o,
@@ -88,8 +108,6 @@
        edje_init();
        ewl_init(&zero, NULL);
 
-       ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, app_signal_exit,
-                               NULL);
 
 #ifdef HAVE_ECORE_EVAS_GL
        if (!strcasecmp(e->cfg.evas_engine, "gl")) {
@@ -150,6 +168,10 @@
        e->playlist = playlist_new(e->gui.evas, e->cfg.theme, e->xmms);
        assert(e->playlist);
 
+       if(ui_init_esmart_file_dialog(e))
+       {
+           fprintf(stderr, "Success\n");
+       }
        return true;
 }
 
@@ -210,6 +232,8 @@
                return false;
        }
 
+       ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, app_signal_exit,
+                               e->gui.edje);
        evas_object_name_set(e->gui.edje, "main_edje");
 
        if (!edje_object_file_set(e->gui.edje,
@@ -390,3 +414,167 @@
        edje_object_part_text_set(e->gui.edje, "track_bitrate", "---");
        edje_object_part_text_set(e->gui.edje, "time_text", "0:00");
 }
+static void file_dialog_cb(void *data, Evas_Object *efd, int type)
+{
+    char buf[PATH_MAX];
+    Euphoria *e = NULL;
+    Evas_List *l = NULL;
+    Ecore_Evas *ee = NULL;
+    const char *directory = NULL;
+    
+    if((e = (Euphoria*)data))
+    {
+       switch(type)
+       {
+           case FILE_CANCEL:
+               ecore_evas_hide(e->gui.file_dialog.ee);
+               break;
+           case DIR_CHANGED:
+               ecore_evas_title_set(e->gui.file_dialog.ee,
+                           esmart_file_dialog_current_directory_get(efd));
+               break;
+           case FILE_OK:
+               if((directory = esmart_file_dialog_current_directory_get(efd)))
+               {
+                   l = esmart_file_dialog_selections_get(efd); 
+                   for( ; l; l = l->next)
+                   {
+                       snprintf(buf, PATH_MAX, "file://%s/%s", directory, 
(char*)l->data);
+                   xmmsc_result_unref(xmmsc_playlist_add(e->xmms, buf));
+                   }
+               }
+               break;
+           default:
+               break;
+       }
+    }
+}
+bool ui_init_esmart_file_dialog(Euphoria *e)
+{
+    int zero = 0;
+    char buf[PATH_MAX];
+    Ecore_Evas *ee = NULL;
+    Evas_Object *o = NULL;
+    Evas_Object *efd = NULL;
+    Evas_Object *edje = NULL;
+    Evas_Object *trans = NULL;
+    Evas_Object *dragger = NULL;
+    Evas_Coord w = 320, h = 240;
+    const char *window_type = NULL;
+
+       debug(DEBUG_LEVEL_INFO, "Starting File Dialog Setup\n");
+
+#ifdef HAVE_ECORE_EVAS_GL
+       if (!strcasecmp(e->cfg.evas_engine, "gl")) {
+               debug(DEBUG_LEVEL_INFO, "Starting EVAS GL X11\n");
+               ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 0, 0);
+       } else
+#endif
+
+#ifdef HAVE_ECORE_EVAS_FB
+       if (!strcasecmp(e->cfg.evas_engine, "fb")) {
+               debug(DEBUG_LEVEL_INFO, "Starting EVAS FB\n");
+               ee = ecore_evas_fb_new(NULL, 0, 0, 0);
+       } else
+#endif
+
+       {
+               debug(DEBUG_LEVEL_INFO, "Starting EVAS X11\n");
+               ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 0, 0);
+       }
+
+       if (!ee) {
+               debug(DEBUG_LEVEL_CRITICAL,
+                     "Cannot create Ecore Evas (using %s engine)\n",
+                     e->cfg.evas_engine);
+
+               return false;
+       }
+
+       ecore_evas_title_set(ee, "Select a file");
+       ecore_evas_name_class_set(ee, "euphoria", "Euphoria Files");
+       ecore_evas_resize(ee, 320, 240);
+#if 0
+       ecore_evas_borderless_set(ee, 1);
+       ecore_evas_shaped_set(ee, 1);
+#endif
+
+       ecore_evas_callback_pre_render_set(ee, cb_ee_pre_render);
+       ecore_evas_callback_post_render_set(ee, cb_ee_post_render);
+       ecore_evas_callback_resize_set(ee, cb_ee_resize);
+       ecore_evas_callback_delete_request_set(ee, cb_ee_del);
+       e->gui.file_dialog.ee = ee;
+
+       debug(DEBUG_LEVEL_INFO, "EDJE: Defining Edje \n");
+        fprintf(stderr, "Trying %s\n", find_theme(e->cfg.theme));
+       if((efd = esmart_file_dialog_new(ecore_evas_get(ee), 
find_theme(e->cfg.theme))) == NULL)
+       {
+           fprintf(stderr, "Trying %s\n", DATA_DIR"/themes/fd.eet");
+           if((efd = esmart_file_dialog_new(ecore_evas_get(ee), 
DATA_DIR"/themes/fd.eet")) == NULL)
+           {
+               debug(DEBUG_LEVEL_CRITICAL, "Cannot load fd theme '%s'!\n",
+                     e->cfg.theme);
+               ecore_evas_free(ee);
+               e->gui.file_dialog.ee = NULL;
+               return false;
+
+           }
+       }
+       evas_object_name_set(efd, "main_edje");
+       evas_object_move(efd, 0, 0);
+       evas_object_layer_set(efd, 2);
+       evas_object_resize(efd, 320, 240);
+       esmart_file_dialog_callback_add(efd, file_dialog_cb, e);
+       evas_object_show(efd);
+
+       fprintf(stderr, "Getting the edje\n");
+       o = esmart_file_dialog_edje_get(efd);
+       if((window_type = edje_object_data_get(o, "e,fd,window,type")))
+       {
+           if(!strcmp(window_type, "shaped"))
+           {
+               ecore_evas_shaped_set(ee, 1);
+               ecore_evas_borderless_set(ee, 1);
+           }
+           else if(!strcmp(window_type, "borderless"))
+           {
+               ecore_evas_borderless_set(ee, 1);
+           }
+           else if(!strcmp(window_type, "trans"))
+           {
+               ecore_evas_borderless_set(ee, 1);
+               trans = esmart_trans_x11_new(ecore_evas_get(ee));
+               esmart_trans_x11_window_set(trans, 
+                               ecore_evas_software_x11_window_get(ee));
+               evas_object_name_set(trans, "trans");
+               evas_object_move(trans, 0, 0);
+               evas_object_layer_set(trans, 0);
+               evas_object_show(trans);
+           }
+       }
+       dragger = esmart_draggies_new(ee);
+       esmart_draggies_button_set(dragger, 1);
+       evas_object_name_set(dragger, "dragger");
+       evas_object_move(dragger, 0, 0);
+       evas_object_layer_set(dragger, -5);
+       evas_object_show(dragger);
+       
+       /* set max size */
+       edje_object_size_max_get(o, &w, &h);
+       fprintf(stderr, "%d %d is the size\n", w, h);
+       if((w > 0) && (h > 0))
+       {
+           if (w > INT_MAX)
+               w = INT_MAX;
+           if(h > INT_MAX)
+               h = INT_MAX;
+           ecore_evas_size_max_set(ee, (int) w, (int) h);
+       }
+
+       /* set min size */
+       edje_object_size_min_get(o, &w, &h);
+       ecore_evas_size_min_set(ee, (int) w, (int) h);
+       evas_object_resize(efd, w, h);
+       ecore_evas_resize(ee, (int)w, (int)h);
+       return true;
+}




-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to