diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 5458d39ea..7bea58202 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -141,6 +141,7 @@ e_int_config_winlist.h \ e_int_config_display.h \ e_int_config_desklock.h \ e_int_config_exebuf.h \ +e_int_config_apps.h \ e_int_config_cfgdialogs.h \ e_deskpreview.h \ e_exebuf.h \ @@ -293,6 +294,7 @@ e_int_config_winlist.c \ e_int_config_display.c \ e_int_config_desklock.c \ e_int_config_exebuf.c \ +e_int_config_apps.c \ e_int_config_cfgdialogs.c \ e_deskpreview.c \ e_exebuf.c \ diff --git a/src/bin/e_configure.c b/src/bin/e_configure.c index a886e6e5d..bd92dc4d4 100644 --- a/src/bin/e_configure.c +++ b/src/bin/e_configure.c @@ -84,6 +84,7 @@ e_configure_show(E_Container *con) e_configure_standard_item_add(eco, "enlightenment/menus", _("Menus"), e_int_config_menus); e_configure_header_item_add(eco, "enlightenment/misc", _("Miscellaneous")); + e_configure_standard_item_add(eco, "enlightenment/applications", _("All Applications"), e_int_config_apps); e_configure_standard_item_add(eco, "enlightenment/performance", _("Performance"), e_int_config_performance); e_configure_standard_item_add(eco, "enlightenment/configuration", _("Configuration Dialogs"), e_int_config_cfgdialogs); diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index 3e097ad92..7bc59c3ee 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -114,6 +114,7 @@ #include "e_int_config_display.h" #include "e_int_config_desklock.h" #include "e_int_config_exebuf.h" +#include "e_int_config_apps.h" #include "e_int_config_cfgdialogs.h" #include "e_deskpreview.h" #include "e_exebuf.h" diff --git a/src/bin/e_int_config_apps.c b/src/bin/e_int_config_apps.c new file mode 100644 index 000000000..b93784aca --- /dev/null +++ b/src/bin/e_int_config_apps.c @@ -0,0 +1,243 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#include "e.h" + +#define MOD_UNLOADED 0 +#define MOD_ENABLED 1 + + +static void *_create_data(E_Config_Dialog *cfd); +static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); + +struct _E_Config_Dialog_Data +{ + E_Config_Dialog *cfd; + int state; + struct { + Evas_Object *o_fm_all; + Evas_Object *o_fm; + Evas_Object *o_frame; + Evas_Object *o_up_button; + Evas_Object *o_create_button; + Evas_Object *o_regen_button; + } gui; +}; + +EAPI E_Config_Dialog * +e_int_config_apps(E_Container *con) +{ + E_Config_Dialog *cfd; + E_Config_Dialog_View *v; + + v = E_NEW(E_Config_Dialog_View, 1); + + v->create_cfdata = _create_data; + v->free_cfdata = _free_data; + v->basic.create_widgets = _basic_create_widgets; + + cfd = e_config_dialog_new(con, + _("All Applications"), + "E", "_config_applications_dialog", + "enlightenment/applications", 0, v, NULL); + return cfd; +} + +static void +_fill_data(E_Config_Dialog_Data *cfdata) +{ + return; +} + +static void * +_create_data(E_Config_Dialog *cfd) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = E_NEW(E_Config_Dialog_Data, 1); + cfdata->cfd = cfd; + _fill_data(cfdata); + return cfdata; +} + +static void +_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + free(cfdata); +} + + +static void +_cb_button_up(void *data1, void *data2) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data1; + if (cfdata->gui.o_fm) + e_fm2_parent_go(cfdata->gui.o_fm); + if (cfdata->gui.o_frame) + e_widget_scrollframe_child_pos_set(cfdata->gui.o_frame, 0, 0); +} + +static void +_cb_files_changed(void *data, Evas_Object *obj, void *event_info) +{ + E_Config_Dialog_Data *cfdata; + + cfdata = data; + if (!cfdata->gui.o_fm) return; + if (!e_fm2_has_parent_get(cfdata->gui.o_fm)) + { + if (cfdata->gui.o_up_button) + e_widget_disabled_set(cfdata->gui.o_up_button, 1); + } + else + { + if (cfdata->gui.o_up_button) + e_widget_disabled_set(cfdata->gui.o_up_button, 0); + } + if (cfdata->gui.o_frame) + e_widget_scrollframe_child_pos_set(cfdata->gui.o_frame, 0, 0); +} + +static void +_cb_button_create(void *data1, void *data2) +{ + E_App *a; + E_Config_Dialog_Data *cfdata; + + cfdata = data1; + a = e_app_empty_new(NULL); + e_eap_edit_show(cfdata->cfd->con, a); +} + +static void +_cb_button_delete(void *data1, void *data2) +{ +} + +static void +_cb_button_regen(void *data1, void *data2) +{ + e_fdo_menu_to_order(); +} + + +static Evas_Object * +_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +{ + Evas_Object *o, *of, *ob, *ot, *ilist, *mt; + Evas_List *l; + E_Fm2_Config fmc_all, fmc; + char path_all[4096], path[4096], *homedir; + int i; + + homedir = e_user_homedir_get(); + if (!homedir) return NULL; + + o = e_widget_list_add(evas, 1, 0); + ot = e_widget_table_add(evas, 1); + + of = e_widget_framelist_add(evas, _("All Applications"), 0); + + mt = e_widget_button_add(evas, _("Create a new application"), "enlightenment/e", + _cb_button_create, cfdata, NULL); + cfdata->gui.o_create_button = mt; + e_widget_framelist_object_append(of, mt); + + mt = e_fm2_add(evas); + cfdata->gui.o_fm_all = mt; + memset(&fmc_all, 0, sizeof(E_Fm2_Config)); + fmc_all.view.mode = E_FM2_VIEW_MODE_LIST; + fmc_all.view.open_dirs_in_place = 1; + fmc_all.view.selector = 1; + fmc_all.view.single_click = 0; + fmc_all.view.no_subdir_jump = 0; + fmc_all.icon.list.w = 24; + fmc_all.icon.list.h = 24; + fmc_all.icon.fixed.w = 1; + fmc_all.icon.fixed.h = 1; + fmc_all.icon.extension.show = 1; + fmc_all.icon.key_hint = NULL; + fmc_all.list.sort.no_case = 1; + fmc_all.list.sort.dirs.first = 1; + fmc_all.list.sort.dirs.last = 0; + fmc_all.selection.single = 1; + fmc_all.selection.windows_modifiers = 0; + e_fm2_config_set(mt, &fmc_all); + snprintf(path_all, sizeof(path_all), "%s/.e/e/applications/all", homedir); + e_fm2_path_set(cfdata->gui.o_fm_all, path_all, "/"); + + ob = e_widget_scrollframe_pan_add(evas, mt, + e_fm2_pan_set, + e_fm2_pan_get, + e_fm2_pan_max_get, + e_fm2_pan_child_size_get); + cfdata->gui.o_frame = ob; + e_widget_min_size_set(ob, 150, 220); + e_widget_framelist_object_append(of, ob); + + mt = e_widget_button_add(evas, _("Delete application"), "enlightenment/e", + _cb_button_delete, cfdata, NULL); + cfdata->gui.o_create_button = mt; + e_widget_framelist_object_append(of, mt); + + e_widget_table_object_append(ot, of, 0, 0, 2, 4, 1, 1, 1, 1); + + + of = e_widget_framelist_add(evas, _("Bars, Menus, etc."), 0); + + mt = e_widget_button_add(evas, _("Go up a Directory"), "widget/up_dir", + _cb_button_up, cfdata, NULL); + cfdata->gui.o_up_button = mt; + e_widget_framelist_object_append(of, mt); + + mt = e_fm2_add(evas); + cfdata->gui.o_fm = mt; + memset(&fmc, 0, sizeof(E_Fm2_Config)); + fmc.view.mode = E_FM2_VIEW_MODE_LIST; + fmc.view.open_dirs_in_place = 1; + fmc.view.selector = 1; + fmc.view.single_click = 0; + fmc.view.no_subdir_jump = 0; + fmc.icon.list.w = 24; + fmc.icon.list.h = 24; + fmc.icon.fixed.w = 1; + fmc.icon.fixed.h = 1; + fmc.icon.extension.show = 1; + fmc.icon.key_hint = NULL; + fmc.list.sort.no_case = 1; + fmc.list.sort.dirs.first = 1; + fmc.list.sort.dirs.last = 0; + fmc.selection.single = 1; + fmc.selection.windows_modifiers = 0; + e_fm2_config_set(mt, &fmc); + evas_object_smart_callback_add(mt, "dir_changed", + _cb_files_changed, cfdata); + snprintf(path, sizeof(path), "%s/.e/e/applications", homedir); + e_fm2_path_set(cfdata->gui.o_fm, path, "/"); + + ob = e_widget_scrollframe_pan_add(evas, mt, + e_fm2_pan_set, + e_fm2_pan_get, + e_fm2_pan_max_get, + e_fm2_pan_child_size_get); + cfdata->gui.o_frame = ob; + e_widget_min_size_set(ob, 150, 220); + e_widget_framelist_object_append(of, ob); + + + mt = e_widget_button_add(evas, _("Regenerate \"All Applications\" Menu"), "enlightenment/e", + _cb_button_regen, cfdata, NULL); + cfdata->gui.o_regen_button = mt; + e_widget_framelist_object_append(of, mt); + + e_widget_table_object_append(ot, of, 2, 0, 2, 4, 1, 1, 1, 1); + + e_widget_list_object_append(o, ot, 1, 1, 0.5); + e_dialog_resizable_set(cfd->dia, 1); + + return o; +} diff --git a/src/bin/e_int_config_apps.h b/src/bin/e_int_config_apps.h new file mode 100644 index 000000000..83095b232 --- /dev/null +++ b/src/bin/e_int_config_apps.h @@ -0,0 +1,12 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#ifdef E_TYPEDEFS +#else +#ifndef E_INT_CONFIG_APPS_H +#define E_INT_CONFIG_APPS_H + +EAPI E_Config_Dialog *e_int_config_apps(E_Container *con); + +#endif +#endif diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index 13a7dfd67..4c8af7b39 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -372,7 +372,7 @@ _e_int_menus_themes_about(void *data, E_Menu *m, E_Menu_Item *mi) if (about) e_theme_about_show(about); } -/* FIXME: this is a workaround for menus' haveing a key grab ANd exebuf +/* FIXME: this is a workaround for menus' haveing a key grab AND exebuf * wanting one too */ static int @@ -391,7 +391,7 @@ _e_int_menus_main_run(void *data, E_Menu *m, E_Menu_Item *mi) ecore_idle_enterer_add(_e_int_menus_main_run_defer_cb, m->zone); } -/* FIXME: this is a workaround for menus' haveing a key grab ANd exebuf +/* FIXME: this is a workaround for menus' haveing a key grab AND exebuf * wanting one too */ static int @@ -629,23 +629,6 @@ _e_int_menus_desktops_item_cb(void *data, E_Menu *m, E_Menu_Item *mi) e_desk_show(desk); } -static void -_e_int_menus_eapedit_item_cb(void *data, E_Menu *m, E_Menu_Item *mi) -{ - /* This is temporarily put here so we can test the eap editor */ - E_App *a; - - a = e_app_empty_new(NULL); - e_eap_edit_show(m->zone->container, a); -} - -static void -_e_int_menus_fdomenus_item_cb(void *data, E_Menu *m, E_Menu_Item *mi) -{ - /* This is temporarily put here so we can test the fdo menu convertor. */ - e_fdo_menu_to_order(); -} - static void _e_int_menus_background_item_cb(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -692,19 +675,6 @@ _e_int_menus_config_pre_cb(void *data, E_Menu *m) e_util_menu_item_edje_icon_set(mi, "enlightenment/modules"); e_menu_item_callback_set(mi, _e_int_menus_module_item_cb, NULL); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Create a new Application")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/e"); - e_menu_item_callback_set(mi, _e_int_menus_eapedit_item_cb, NULL); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Regenerate \"All Applications\" Menu")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/e"); - e_menu_item_callback_set(mi, _e_int_menus_fdomenus_item_cb, NULL); - l = evas_hash_find(_e_int_menus_augmentation, "config"); if (l) {