#ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include #include #include #include #include #include "gettext.h" #define COPYRIGHT "Copyright © 2015 Olliver Schinagl and various contributors (see AUTHORS)." #define EULOGIUM_THEME "eulogium.edj" int main(int argc EINA_UNUSED, char **argv EINA_UNUSED) { Eina_Bool quit_option = EINA_FALSE; static const Ecore_Getopt optdesc = { "eulogium", "%prog [options]", PACKAGE_VERSION, COPYRIGHT, "Affero GPLv3", "eulogium program", 0, { ECORE_GETOPT_LICENSE('L', "license"), ECORE_GETOPT_COPYRIGHT('C', "copyright"), ECORE_GETOPT_VERSION('V', "version"), ECORE_GETOPT_HELP('h', "help"), ECORE_GETOPT_SENTINEL } }; Ecore_Getopt_Value values[] = { ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_NONE }; int args; Eina_Prefix *prefix; Ecore_Evas *window; Evas *canvas; Eina_List *engines, *l; Evas_Object *edje; const char *eulogium_edj = EULOGIUM_THEME; const int eulogium_edj_size = sizeof(EULOGIUM_THEME); int prefix_size; char *theme_file; int theme_file_size; int height, width; #if ENABLE_NLS setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALE_DIR); bind_textdomain_codeset(PACKAGE, "UTF-8"); textdomain(PACKAGE); #endif if (!eina_init()) return EXIT_FAILURE; if (!ecore_evas_init()) return EXIT_FAILURE; if (!edje_init()) return EXIT_FAILURE; prefix = eina_prefix_new(argv[0], NULL, "EULOGIUM", "eulogium", eulogium_edj, PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, LOCALE_DIR); args = ecore_getopt_parse(&optdesc, values, argc, argv); if (args < 0) { EINA_LOG_CRIT("Could not parse arguments."); return EXIT_FAILURE; } /* Initialize the window with fake dimensions, we'll set the proper dimensions via the theme */ height = 0; width = 0; window = ecore_evas_new(NULL, 0, 0, height, width, NULL); canvas = ecore_evas_get(window); edje = edje_object_add(canvas); if (!edje) { EINA_LOG_CRIT("Could not create edje object!"); return EXIT_FAILURE; } prefix_size = strlen(eina_prefix_data_get(prefix)); theme_file_size = prefix_size + eulogium_edj_size + 1; theme_file = malloc(sizeof(char) * theme_file_size); eina_str_join_len(theme_file, theme_file_size, '/', eina_prefix_data_get(prefix), prefix_size, eulogium_edj, eulogium_edj_size); if (!edje_object_file_set(edje, theme_file, "mainscreen")) { int err = edje_object_load_error_get(edje); const char *errmsg = edje_load_error_str(err); EINA_LOG_ERR("Could not load 'mainscreen' from %s: %s (%d)", theme_file, errmsg, err); evas_object_del(edje); return EXIT_FAILURE; } height = atoi(edje_file_data_get(theme_file, "height")); width = atoi(edje_file_data_get(theme_file, "width")); if (height < 1 || width < 1) { EINA_LOG_ERR("Invalid height (%d) or width (%d) parameter in %s", height, width, theme_file); return EXIT_FAILURE; } free(theme_file); evas_object_show(edje); ecore_evas_resize(window, height, width); ecore_evas_title_set(window, PACKAGE_NAME); ecore_evas_show(window); ecore_main_loop_begin(); evas_object_del(edje); ecore_evas_free(window); eina_prefix_free(prefix); eina_shutdown(); ecore_evas_shutdown(); edje_shutdown(); return EXIT_SUCCESS; }