#include "ephoto.h" /*General Callbacks */ static void window_close(Ecore_Evas *ee); static void window_resize(Ecore_Evas *ee); static void window_move(Ecore_Evas *ee); static void window_shown(void *data, Evas *e, Evas_Object *obj, void *event_info); /*Ephoto Main Global*/ Ephoto *em; /*Create the main ephoto window*/ void create_main_window(void) { em = calloc(1, sizeof(Ephoto)); em->sel = NULL; em->maximized = 0; em->ee = ecore_evas_software_x11_new(0, 0, 0, 0, 955, 540); ecore_evas_title_set(em->ee, "Ephoto"); ecore_evas_name_class_set(em->ee, "Ephoto", "Ephoto"); ecore_evas_callback_destroy_set(em->ee, window_close); ecore_evas_callback_resize_set(em->ee, window_resize); ecore_evas_callback_move_set(em->ee, window_move); ecore_evas_show(em->ee); em->e = ecore_evas_get(em->ee); em->bg = edje_object_add(em->e); edje_object_file_set(em->bg, PACKAGE_DATA_DIR "/themes/default/ephoto.edj", "/ephoto/window/background"); evas_object_resize(em->bg, 955, 540); evas_object_move(em->bg, 0, 0); evas_object_event_callback_add(em->bg, EVAS_CALLBACK_SHOW, window_shown, NULL); evas_object_show(em->bg); } static void window_shown(void *data, Evas *e, Evas_Object *obj, void *event_info) { add_image_browser(); add_flow_view(); show_image_browser(); evas_object_event_callback_del(em->bg, EVAS_CALLBACK_SHOW, window_shown); } /*The window has been closed, free and quit*/ static void window_close(Ecore_Evas *ee) { evas_object_del(em->image_browser); evas_object_del(em->flow); if (em->images) eina_list_free(em->images); free(em); ecore_main_loop_quit(); } /*The window has been resized, update everything*/ static void window_resize(Ecore_Evas *ee) { int w, h; ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); evas_object_resize(em->bg, w, h); evas_object_move(em->bg, 0, 0); } static void window_move(Ecore_Evas *ee) { int w, h; if (ecore_evas_maximized_get(em->ee) != em->maximized) { evas_object_geometry_get(em->bg, 0, 0, &w, &h); if (evas_object_visible_get(em->image_browser)) evas_object_resize(em->image_browser, w, h); if (evas_object_visible_get(em->flow)) evas_object_resize(em->flow, w, h); em->maximized = ecore_evas_maximized_get(em->ee); } return; }