ephoto/src/bin/ephoto_main.c

85 lines
2.2 KiB
C
Raw Normal View History

#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;
2009-10-01 15:44:19 -07:00
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");
2009-10-01 15:44:19 -07:00
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)
{
2009-09-30 21:54:48 -07:00
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;
}