diff --git a/ecdb/trunk/configure.in b/ecdb/trunk/configure.in index 7d43c74..4841716 100644 --- a/ecdb/trunk/configure.in +++ b/ecdb/trunk/configure.in @@ -92,6 +92,7 @@ dnl Make gstreamer an optional dependancy at some point PKG_CHECK_MODULES(ECDB, [ ecore-file ecore-evas + ecore-config ecore eina-0 evas diff --git a/ecdb/trunk/src/Makefile.am b/ecdb/trunk/src/Makefile.am index aa5a254..65d385e 100644 --- a/ecdb/trunk/src/Makefile.am +++ b/ecdb/trunk/src/Makefile.am @@ -18,6 +18,7 @@ ecdb_SOURCES = \ ecdb_burn_data_gui.c ecdb_burn_data_gui.h \ ecdb_filelist_custom.c ecdb_filelist_custom.h \ ecdb_about.c ecdb_about.h \ + ecdb_config_dialog.c ecdb_config_dialog.h \ ecdb_common.h ecdb_CFLAGS = @ECDB_CFLAGS@ diff --git a/ecdb/trunk/src/ecdb.c b/ecdb/trunk/src/ecdb.c index da80bae..8a405dd 100644 --- a/ecdb/trunk/src/ecdb.c +++ b/ecdb/trunk/src/ecdb.c @@ -9,6 +9,7 @@ int ECDB_FILELIST_SIZE_CHANGED = 0; Ecdb_Main *em; int ecdb_setup(); +int ecdb_initialize_config(); int main(int argc, char **argv) @@ -28,16 +29,16 @@ main(int argc, char **argv) return 1; } - if (!ecore_string_init()) + if (!ecore_file_init()) { - printf("Cannot initialize Ecore_String!\n"); + printf("Cannot initialize Ecore_File!\n"); ret = 1; goto SHUTDOWN; } - if (!ecore_file_init()) + if (ecore_config_init("ecdb") != ECORE_CONFIG_ERR_SUCC) { - printf("Cannot initialize Ecore_File!\n"); + printf("Cannot intialize Ecore_Config!\n"); ret = 1; goto SHUTDOWN; } @@ -143,7 +144,7 @@ main(int argc, char **argv) */ - ewl_main(); + ecore_main_loop_begin(); /* End testing */ @@ -152,7 +153,7 @@ SHUTDOWN: iso_finish(); ewl_shutdown(); ecore_file_shutdown(); - ecore_string_shutdown(); + ecore_config_shutdown(); ecore_evas_shutdown(); edje_shutdown(); ecore_shutdown(); @@ -191,7 +192,97 @@ ecdb_setup(void) printf("Aquiring drives failed!\n"); return FALSE; } + + if (!ecdb_initialize_config()) + { + printf("Initializing the configuration failed!\n"); + return FALSE; + } return TRUE; } +int +ecdb_initialize_config(void) +{ + char *gui, *engine, *tmp_eng; + Eina_List *l; + + // Theme + ecore_config_theme_default("theme", "default"); + ecore_config_describe("theme", "The name of the theme to use."); + ecore_config_long_opt_set("theme", "The name of the theme to use."); + ecore_config_short_opt_set("theme", 't'); + + // Frame rate + ecore_config_int_default("frame_rate", 60); + ecore_config_describe("frame_rate", "The frame rate of the GUI."); + ecore_config_long_opt_set("frame_rate", "The frame rate of the GUI."); + ecore_config_short_opt_set("frame_rate", 'r'); + + // Scale + ecore_config_float_default("scale", 1.0); + ecore_config_describe("scale", "The scaling factor."); + ecore_config_long_opt_set("scale", "The scaling factor."); + ecore_config_short_opt_set("scale", 's'); + + // Engine + ecore_config_string_default("engine", "software_x11"); + ecore_config_describe("engine", "The canvas engine."); + ecore_config_long_opt_set("engine", "The canvas engine."); + ecore_config_short_opt_set("engine", 'e'); + + // Load the config + ecore_config_load(); + + // Set up the theme path + ecore_config_theme_search_path_append(PACKAGE_DATA_DIR"/themes"); + printf("Theme search path: %s\n", ecore_config_theme_search_path_get()); + + gui = ecore_config_theme_with_path_get("theme"); + if ((!gui) || (!ecore_file_exists(gui)) || (!edje_file_group_exists(gui, + "ecdb/window"))) + { + printf("Invalid file specified, attempting to fall back to default!\n"); + gui = ecore_config_theme_with_path_from_name_get("default"); + + if (!gui) + { + printf("Default theme is missing! Please check your installation.\n"); + return 0; + } + } + + em->theme_path = gui; + + // Set up the engines + engine = ecore_config_string_get("engine"); + l = ecore_evas_engines_get(); + if (!eina_list_count(l)) + { + printf("There are no built engines!\n"); + return 0; + } + + EINA_LIST_FOREACH(l, l, tmp_eng) + { + if (!strcmp(tmp_eng, engine)) + { + em->engine = engine; + break; + } + } + + // Default to last in the list + if (!em->engine) + em->engine = strdup((char *)eina_list_last(l)); + + ecore_evas_engines_free(l); + + // Initialize the other variables + em->scalef = ecore_config_float_get("scale"); + em->fps = ecore_config_int_get("frame_rate"); + + return 1; +} + diff --git a/ecdb/trunk/src/ecdb.h b/ecdb/trunk/src/ecdb.h index 72911d9..6e4ccbf 100644 --- a/ecdb/trunk/src/ecdb.h +++ b/ecdb/trunk/src/ecdb.h @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include @@ -45,8 +45,12 @@ struct _Ecdb_Page typedef struct _Ecdb_Main Ecdb_Main; struct _Ecdb_Main { - char theme_path[PATH_MAX]; + char *theme_path; + double scalef; + char *engine; + int fps; Ecore_Evas *main_win_ee; + Ecore_X_Window xwin; Eina_List *drives; /* Drag and drop stuff here */ @@ -59,7 +63,6 @@ struct _Ecdb_Main * and leave it singular */ Ecdb_Page *page; - double scalef; }; extern Ecdb_Main *em; @@ -85,6 +88,7 @@ extern int ECDB_FILELIST_SIZE_CHANGED; #include "ecdb_burn_data_gui.h" #include "ecdb_filelist_custom.h" #include "ecdb_about.h" +#include "ecdb_config_dialog.h" #endif diff --git a/ecdb/trunk/src/ecdb_about.c b/ecdb/trunk/src/ecdb_about.c index 0e6d498..35b48d2 100644 --- a/ecdb/trunk/src/ecdb_about.c +++ b/ecdb/trunk/src/ecdb_about.c @@ -1,6 +1,8 @@ /* vim: set sw=3 ts=3 sts=3 expandtab: */ #include "ecdb.h" +static Ecore_Evas *win = NULL; + static void _ecdb_about_destroy(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, @@ -9,28 +11,29 @@ _ecdb_about_destroy(void *data, Evas_Object *obj __UNUSED__, ecore_evas_free(data); } +static void +_ecdb_about_free(void *data __UNUSED__, Evas *e __UNUSED__, + Evas_Object *obj __UNUSED__, + void *ev_info __UNUSED__) +{ + win = NULL; +} + void ecdb_about_show(void) { - Evas_Coord mw, mh; - Ecore_Evas *win = NULL; + Evas_Coord mw, mh, w, x, y; Evas_Object *gui; - const char *engine; - engine = getenv("ECDB_ENGINE"); - if (engine) - { - if (!strcmp(engine, "gl")) - win = ecore_evas_gl_x11_new(0, 0, 0, 0, 255, 255); - else if (!strcmp(engine, "xr")) - win = ecore_evas_xrender_x11_new(0, 0, 0, 0, 255, 255); - else if (!strcmp(engine, "x11")) - win = ecore_evas_software_x11_new(0, 0, 0, 0, 255, 255); - } - else - { + // Only show 1 about window + if (win) return; + + if (!strcmp(em->engine, "opengl_x11")) + win = ecore_evas_gl_x11_new(0, 0, 0, 0, 255, 255); + else if (!strcmp(em->engine, "xrender_x11")) + win = ecore_evas_xrender_x11_new(0, 0, 0, 0, 255, 255); + else if (!strcmp(em->engine, "software_x11")) win = ecore_evas_software_x11_new(0, 0, 0, 0, 255, 255); - } if (!win) { @@ -46,6 +49,8 @@ ecdb_about_show(void) edje_object_file_set(gui, em->theme_path, "ecdb/about"); edje_object_signal_callback_add(gui, "ecdb/close", "ecdb", _ecdb_about_destroy, win); + evas_object_event_callback_add(gui, EVAS_CALLBACK_FREE, _ecdb_about_free, + NULL); ecore_evas_object_associate(win, gui, ECORE_EVAS_OBJECT_ASSOCIATE_DEL); edje_object_size_min_get(gui, &mw, &mh); if (mw <= 0) mw = 350; @@ -60,6 +65,9 @@ ecdb_about_show(void) evas_object_show(gui); ecore_evas_show(win); + ecore_evas_geometry_get(em->main_win_ee, &x, &y, &w, NULL); + ecore_evas_move(win, x + ((w - mw) / 2), y); + /* Set the proper text */ edje_object_part_text_set(gui, "ecdb.about.label", "Close"); edje_object_part_text_set(gui, "ecdb.about.text", diff --git a/ecdb/trunk/src/ecdb_config_dialog.c b/ecdb/trunk/src/ecdb_config_dialog.c new file mode 100644 index 0000000..5dfcedc --- /dev/null +++ b/ecdb/trunk/src/ecdb_config_dialog.c @@ -0,0 +1,319 @@ +/* vim: set sw=3 ts=3 sts=3 expandtab: */ +#include "ecdb.h" + +typedef struct Config_Data Config_Data; +struct Config_Data +{ + char ** array; + unsigned int count; +}; + +static void destroy_cb(Ewl_Widget *w, void *event, void *data); +static void conf_clicked_cb(Ewl_Widget *w, void *event, void *data); +static void scale_cb(Ewl_Widget *w, void *event, void *data); +static void fps_cb(Ewl_Widget *w, void *event, void *data); +static void engine_cb(Ewl_Widget *w, void *event, void *data); +static void theme_cb(Ewl_Widget *w, void *event, void *data); +static Config_Data *theme_data_init(void); +static Config_Data *engine_data_init(void); +static int theme_data_return_active(Config_Data *data); +static int engine_data_return_active(Config_Data *data); +static unsigned int model_data_count(void *data); +static void *model_data_fetch(void *data, unsigned int row, unsigned int col); + +static Ewl_Widget *conf_win = NULL; + +void +ecdb_config_dialog_show(void) +{ + Ewl_Widget *o, *l; + Ewl_Widget *border_box, *hbox, *main_box; + Ewl_Widget *combo; + Ewl_Model *model; + Ewl_View *view; + Config_Data *data; + + /* Only show one config window */ + if (conf_win) + return; + + conf_win = ewl_dialog_new(); + ewl_dialog_action_position_set(EWL_DIALOG(conf_win), EWL_POSITION_BOTTOM); + ewl_window_title_set(EWL_WINDOW(conf_win), "ECDB Configuration"); + ewl_window_name_set(EWL_WINDOW(conf_win), "ECDB"); + ewl_window_class_set(EWL_WINDOW(conf_win), "ECDB"); + ewl_window_leader_foreign_set(EWL_WINDOW(conf_win), + EWL_EMBED_WINDOW(em->xwin)); + ewl_callback_append(conf_win, EWL_CALLBACK_DELETE_WINDOW, destroy_cb, NULL); + ewl_dialog_has_separator_set(EWL_DIALOG(conf_win), 1); + ewl_object_fill_policy_set(EWL_OBJECT(conf_win), EWL_FLAG_FILL_NONE); + ewl_widget_show(conf_win); + + /* the main_box contain the border_boxes */ + ewl_dialog_active_area_set(EWL_DIALOG(conf_win), EWL_POSITION_TOP); + main_box = ewl_vbox_new(); + ewl_container_child_append(EWL_CONTAINER(conf_win), main_box); + ewl_object_fill_policy_set(EWL_OBJECT(main_box), EWL_FLAG_ALIGN_CENTER); + ewl_widget_show(main_box); + + /* Setup and show the stock icons */ + ewl_dialog_active_area_set(EWL_DIALOG(conf_win), EWL_POSITION_BOTTOM); + + o = ewl_button_new(); + ewl_stock_type_set(EWL_STOCK(o), EWL_STOCK_CANCEL); + ewl_container_child_append(EWL_CONTAINER(conf_win), o); + ewl_callback_append(o, EWL_CALLBACK_CLICKED, conf_clicked_cb, conf_win); + ewl_widget_show(o); + + o = ewl_button_new(); + ewl_stock_type_set(EWL_STOCK(o), EWL_STOCK_APPLY); + ewl_container_child_append(EWL_CONTAINER(conf_win), o); + ewl_callback_append(o, EWL_CALLBACK_CLICKED, conf_clicked_cb, conf_win); + ewl_widget_show(o); + + o = ewl_button_new(); + ewl_stock_type_set(EWL_STOCK(o), EWL_STOCK_OK); + ewl_container_child_append(EWL_CONTAINER(conf_win), o); + ewl_callback_append(o, EWL_CALLBACK_CLICKED, conf_clicked_cb, conf_win); + ewl_widget_show(o); + + /* Graphics */ + border_box = ewl_border_new(); + ewl_border_label_set(EWL_BORDER(border_box), "Graphics"); + ewl_container_child_append(EWL_CONTAINER(main_box), border_box); + ewl_widget_show(border_box); + + /* Scale */ + hbox = ewl_grid_new(); + ewl_container_child_append(EWL_CONTAINER(border_box), hbox); + ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_FILL); + ewl_grid_column_preferred_w_use(EWL_GRID(hbox), 1); + ewl_widget_show(hbox); + + o = ewl_label_new(); + ewl_label_text_set(EWL_LABEL(o), "Scale Factor:"); + ewl_container_child_append(EWL_CONTAINER(hbox), o); + ewl_object_fill_policy_set(EWL_OBJECT(o), EWL_FLAG_FILL_NONE); + ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_LEFT); + ewl_widget_show(o); + + l = ewl_label_new(); + ewl_container_child_append(EWL_CONTAINER(hbox), l); + ewl_object_fill_policy_set(EWL_OBJECT(l), EWL_FLAG_FILL_NONE); + ewl_widget_show(l); + + o = ewl_hseeker_new(); + ewl_range_minimum_value_set(EWL_RANGE(o), 0.0); + ewl_range_maximum_value_set(EWL_RANGE(o), 2.0); + ewl_range_step_set(EWL_RANGE(o), 0.1); + ewl_range_value_set(EWL_RANGE(o), em->scalef); + ewl_container_child_append(EWL_CONTAINER(border_box), o); + ewl_callback_append(o, EWL_CALLBACK_VALUE_CHANGED, scale_cb, l); + scale_cb(o, NULL, NULL); + ewl_widget_show(o); + + /* FPS */ + hbox = ewl_grid_new(); + ewl_container_child_append(EWL_CONTAINER(border_box), hbox); + ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_FILL); + ewl_grid_column_preferred_w_use(EWL_GRID(hbox), 1); + ewl_widget_show(hbox); + + o = ewl_label_new(); + ewl_label_text_set(EWL_LABEL(o), "Frame Rate:"); + ewl_container_child_append(EWL_CONTAINER(hbox), o); + ewl_object_fill_policy_set(EWL_OBJECT(o), EWL_FLAG_FILL_NONE); + ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_LEFT); + ewl_widget_show(o); + + l = ewl_label_new(); + ewl_container_child_append(EWL_CONTAINER(hbox), l); + ewl_object_fill_policy_set(EWL_OBJECT(l), EWL_FLAG_FILL_NONE); + ewl_widget_show(l); + + o = ewl_hseeker_new(); + ewl_range_minimum_value_set(EWL_RANGE(o), 10.0); + ewl_range_maximum_value_set(EWL_RANGE(o), 100.0); + ewl_range_step_set(EWL_RANGE(o), 5.0); + ewl_range_value_set(EWL_RANGE(o), em->fps); + ewl_container_child_append(EWL_CONTAINER(border_box), o); + ewl_callback_append(o, EWL_CALLBACK_VALUE_CHANGED, fps_cb, l); + fps_cb(o, NULL, NULL); + ewl_widget_show(o); + + /* Setup and show the border box */ + border_box = ewl_border_new(); + ewl_border_label_set(EWL_BORDER(border_box), "Rendering Engine"); + ewl_container_child_append(EWL_CONTAINER(main_box), border_box); + ewl_object_fill_policy_set(EWL_OBJECT(border_box), EWL_FLAG_FILL_FILL); + ewl_object_alignment_set(EWL_OBJECT(border_box), EWL_FLAG_ALIGN_CENTER); + ewl_object_alignment_set(EWL_OBJECT(main_box), EWL_FLAG_ALIGN_TOP); + ewl_widget_show(border_box); + + model = ewl_model_new(); + ewl_model_data_fetch_set(model, model_data_fetch); + ewl_model_data_count_set(model, model_data_count); + + view = ewl_label_view_get(); + + data = engine_data_init(); + + combo = ewl_combo_new(); + ewl_container_child_append(EWL_CONTAINER(border_box), combo); + ewl_callback_append(combo, EWL_CALLBACK_VALUE_CHANGED, engine_cb, NULL); + ewl_mvc_model_set(EWL_MVC(combo), model); + ewl_mvc_view_set(EWL_MVC(combo), view); + ewl_mvc_data_set(EWL_MVC(combo), data); + ewl_mvc_selected_set(EWL_MVC(combo), model, data, + engine_data_return_active(data), 0); + ewl_widget_show(combo); + + /* Setup and show the border box */ + border_box = ewl_border_new(); + ewl_border_label_set(EWL_BORDER(border_box), "Theme"); + ewl_container_child_append(EWL_CONTAINER(main_box), border_box); + ewl_object_fill_policy_set(EWL_OBJECT(border_box), EWL_FLAG_FILL_FILL); + ewl_object_alignment_set(EWL_OBJECT(border_box), EWL_FLAG_ALIGN_CENTER); + ewl_object_alignment_set(EWL_OBJECT(main_box), EWL_FLAG_ALIGN_TOP); + ewl_widget_show(border_box); + + data = theme_data_init(); + + combo = ewl_combo_new(); + ewl_container_child_append(EWL_CONTAINER(border_box), combo); + ewl_callback_append(combo, EWL_CALLBACK_VALUE_CHANGED, theme_cb, NULL); + ewl_mvc_model_set(EWL_MVC(combo), model); + ewl_mvc_view_set(EWL_MVC(combo), view); + ewl_mvc_data_set(EWL_MVC(combo), data); + ewl_mvc_selected_set(EWL_MVC(combo), model, data, + theme_data_return_active(data), 0); + ewl_widget_show(combo); +} + +static void +destroy_cb(Ewl_Widget *w, void *event __UNUSED__, void *data __UNUSED__) +{ + ewl_widget_destroy(w); + conf_win = NULL; +} + +static void +conf_clicked_cb(Ewl_Widget *w, void *event __UNUSED__, void *data) +{ + Ewl_Stock_Type response; + + response = ewl_stock_type_get(EWL_STOCK(w)); + + if ((response == EWL_STOCK_OK) || (response == EWL_STOCK_APPLY)) + { + if (ecore_config_save() != ECORE_CONFIG_ERR_SUCC) + printf("Failure to save configuration!\n"); + } + + if ((response == EWL_STOCK_OK) || (response == EWL_STOCK_CANCEL)) + { + ewl_widget_destroy(EWL_WIDGET(data)); + conf_win = NULL; + } +} + +static void +scale_cb(Ewl_Widget *w, void *event __UNUSED__, void *data) +{ + double value; + char buffer[10]; + + value = ewl_range_value_get(EWL_RANGE(w)); + ecore_config_float_set("scale", value); + snprintf(buffer, 10, "%f", value); + ewl_label_text_set(EWL_LABEL(data), buffer); +} + +static void +fps_cb(Ewl_Widget *w, void *event __UNUSED__, void *data) +{ + double value; + char buffer[10]; + + value = ewl_range_value_get(EWL_RANGE(w)); + ecore_config_int_set("frame_rate", value); + snprintf(buffer, 10, "%f", value); + ewl_label_text_set(EWL_LABEL(data), buffer); +} + +static void +engine_cb(Ewl_Widget *w, void *event __UNUSED__, void *data) +{ + Config_Data *d; + Ewl_Selection_Idx *idx; + + d = ewl_mvc_data_get(EWL_MVC(w)); + idx = ewl_mvc_selected_get(EWL_MVC(w)); + free(em->engine); + + ecore_config_string_set("engine", d->array[idx->row]); + em->engine = strdup(d->array[idx->row]); + free(idx); +} + +static void +theme_cb(Ewl_Widget *w, void *event __UNUSED__, void *data) +{ + Config_Data *d; + Ewl_Selection_Idx *idx; + + d = ewl_mvc_data_get(EWL_MVC(w)); + idx = ewl_mvc_selected_get(EWL_MVC(w)); + free(em->theme_path); + + ecore_config_theme_set("theme", d->array[idx->row]); + em->theme_path = ecore_config_theme_with_path_get("theme"); + free(idx); +} + +static Config_Data * +theme_data_init(void) +{ + Config_Data *ret; + + ret = malloc(sizeof(Config_Data)); + + return ret; +} + +static int +theme_data_return_active(Config_Data *data) +{ + return 0; +} + +static Config_Data * +engine_data_init(void) +{ + Config_Data *ret; + + ret = malloc(sizeof(Config_Data)); + + return ret; +} + +static int +engine_data_return_active(Config_Data *data) +{ + return 0; +} + +static unsigned int +model_data_count(void *data) +{ + Config_Data *cd = data; + return cd->count; +} + +static void * +model_data_fetch(void *data, unsigned int row, unsigned int col __UNUSED__) +{ + Config_Data *cd = data; + return cd->array[row]; +} + diff --git a/ecdb/trunk/src/ecdb_config_dialog.h b/ecdb/trunk/src/ecdb_config_dialog.h new file mode 100644 index 0000000..da702e9 --- /dev/null +++ b/ecdb/trunk/src/ecdb_config_dialog.h @@ -0,0 +1,7 @@ +/* vim: set sw=3 ts=3 sts=3 expandtab: */ +#ifndef ECDB_CONFIG_DIALOG_H +#define ECDB_CONFIG_DIALOG_H + +void ecdb_config_dialog_show(void); + +#endif diff --git a/ecdb/trunk/src/ecdb_gui.c b/ecdb/trunk/src/ecdb_gui.c index dd12401..c832cce 100644 --- a/ecdb/trunk/src/ecdb_gui.c +++ b/ecdb/trunk/src/ecdb_gui.c @@ -164,7 +164,7 @@ _cb_filelist_key_down(void *data, Evas *e __UNUSED__, { len = strlen(text) + 2; text = realloc(text, len); - ecore_strlcat(text, append, len); + strncat(text, append, len); } /* Avoid sending the same signal twice... seems to skip the @@ -184,21 +184,21 @@ int ecdb_create_main_gui(void) { Evas_Coord mw, mh; - const char *scale, *engine; - engine = getenv("ECDB_ENGINE"); - if (engine) + if (!strcmp(em->engine, "opengl_x11")) { - if (!strcmp(engine, "gl")) - em->main_win_ee = ecore_evas_gl_x11_new(0, 0, 0, 0, 255, 255); - else if (!strcmp(engine, "xr")) - em->main_win_ee = ecore_evas_xrender_x11_new(0, 0, 0, 0, 255, 255); - else if (!strcmp(engine, "x11")) - em->main_win_ee = ecore_evas_software_x11_new(0, 0, 0, 0, 255, 255); + em->main_win_ee = ecore_evas_gl_x11_new(0, 0, 0, 0, 255, 255); + em->xwin = ecore_evas_gl_x11_window_get(em->main_win_ee); } - else + else if (!strcmp(em->engine, "xrender_x11")) + { + em->main_win_ee = ecore_evas_xrender_x11_new(0, 0, 0, 0, 255, 255); + em->xwin = ecore_evas_xrender_x11_window_get(em->main_win_ee); + } + else if (!strcmp(em->engine, "software_x11")) { em->main_win_ee = ecore_evas_software_x11_new(0, 0, 0, 0, 255, 255); + em->xwin = ecore_evas_software_x11_window_get(em->main_win_ee); } if (!em->main_win_ee) @@ -210,10 +210,8 @@ ecdb_create_main_gui(void) ecore_evas_title_set(em->main_win_ee, "ECDB"); ecore_evas_name_class_set(em->main_win_ee, "ECDB", "ECDB"); ecore_evas_avoid_damage_set(em->main_win_ee, 1); - ecore_x_dnd_aware_set(ecore_evas_software_x11_window_get(em->main_win_ee), - 1); - ecore_x_dnd_type_set(ecore_evas_software_x11_window_get(em->main_win_ee), - "*", 1); + ecore_x_dnd_aware_set(em->xwin, 1); + ecore_x_dnd_type_set(em->xwin, "*", 1); ecore_evas_callback_delete_request_set(em->main_win_ee, ecdb_shutdown); ecore_evas_callback_destroy_set(em->main_win_ee, ecdb_shutdown); @@ -222,13 +220,10 @@ ecdb_create_main_gui(void) ecore_evas_callback_mouse_out_set(em->main_win_ee, ecdb_cb_leave); ecore_evas_callback_resize_set(em->main_win_ee, ecdb_cb_resize); - edje_frametime_set(1.0 / 60.0); + edje_frametime_set(1.0 / (double)em->fps); ecore_evas_show(em->main_win_ee); /* Make this configurable at some point */ - ecdb_set_main_theme(NULL); - scale = getenv("ECDB_SCALE"); - em->scalef = (scale) ? atof(scale) : 1.0; edje_scale_set(em->scalef); em->page = calloc(1, sizeof(Ecdb_Page)); @@ -253,19 +248,6 @@ ecdb_create_main_gui(void) return TRUE; } -/* This needs some work. Where should user themes go? */ -void -ecdb_set_main_theme(const char *theme_name) -{ - if (!theme_name) - { - snprintf(em->theme_path, PATH_MAX, "%s/%s", PACKAGE_DATA_DIR, - "themes/default.edj"); - evas_font_path_append(ecore_evas_get(em->main_win_ee), - PACKAGE_DATA_DIR"/font"); - } -} - void ecdb_handle_typebuf(Evas_Object *gui, Ewl_Widget *fl) { diff --git a/ecdb/trunk/src/ecdb_misc.c b/ecdb/trunk/src/ecdb_misc.c index fa756b0..1b0de95 100644 --- a/ecdb/trunk/src/ecdb_misc.c +++ b/ecdb/trunk/src/ecdb_misc.c @@ -4,25 +4,32 @@ int ecdb_shutdown(void *data, int type, void *event) { + FREE(em->theme_path); + FREE(em->engine); + if (em->drives) { ecdb_drive_info_list_free(em->drives); } + if (em->evas_dnd_candidates) { eina_list_free(em->evas_dnd_candidates); } + if (em->ewl_dnd_candidates) { eina_list_free(em->ewl_dnd_candidates); } + FREE(em); if (!ecore_file_recursive_rm("/tmp/ecdb")) { printf("Removal of temporary directory failed!\n"); } - ewl_main_quit(); + + ecore_main_loop_quit(); return FALSE; }