Started a new applications config dialog. The idea is to drag and drop from the

left side to the right side, or to ibar and other places.  Just the
skeleton for comment while I make it work.

Some filtering and categorising widgets are needed for the left side.
The right side needs to show the contents of the .order files, and
prevent the user from deleteing standard directories, while enabling
them to create and delete sub menus.  Probably fm is not a good choice for
the right side.


SVN revision: 25172
This commit is contained in:
David Walter Seikel 2006-08-28 11:22:27 +00:00
parent 7f2b813bb5
commit ce47aca673
6 changed files with 261 additions and 32 deletions

View File

@ -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 \

View File

@ -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);

View File

@ -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"

243
src/bin/e_int_config_apps.c Normal file
View File

@ -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;
}

View File

@ -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

View File

@ -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)
{