e: Revamp a 'lil bit the remember config dialog.

- Add check changed.
- Have the details section actually show something.
- Show a meaningful “Any” (disabled) when a discriminant is not set.
- Show “No selection” (disabled) when there is none.

 Still bothering: deletions are being done immediately, not upon validation, unlike other settings.


SVN revision: 81029
This commit is contained in:
Chidambar Zinnoury 2012-12-15 20:03:41 +00:00
parent 8236a1b203
commit a82810c3d5
1 changed files with 63 additions and 16 deletions

View File

@ -3,6 +3,7 @@
/* function protos */
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static void _fill_remembers(E_Config_Dialog_Data *cfdata);
@ -29,6 +30,7 @@ e_int_config_remembers(E_Container *con, const char *params __UNUSED__)
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply_data;
v->basic.create_widgets = _basic_create;
v->basic.check_changed = _basic_check_changed;
cfd = e_config_dialog_new(con, _("Window Remembers"), "E",
"windows/window_remembers",
@ -90,6 +92,19 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
E_FREE(cfdata);
}
static int
_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
return ((cfdata->remember_dialogs) &&
!(e_config->remember_internal_windows & E_REMEMBER_INTERNAL_DIALOGS)) ||
((!cfdata->remember_dialogs) &&
(e_config->remember_internal_windows & E_REMEMBER_INTERNAL_DIALOGS)) ||
((cfdata->remember_fm_wins) &&
!(e_config->remember_internal_windows & E_REMEMBER_INTERNAL_FM_WINS)) ||
((!cfdata->remember_fm_wins) &&
(e_config->remember_internal_windows & E_REMEMBER_INTERNAL_FM_WINS));
}
static int
_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
@ -138,28 +153,32 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_widget_size_min_get(ow, &mw, &mh);
e_widget_frametable_object_append_full
(of2, ow, 0, 0, 1, 1, 0, 0, 0, 0, 1.0, 1.0, mw, mh, 9999, 9999);
ow = e_widget_label_add(evas, _("<No Name>"));
ow = e_widget_label_add(evas, NULL);
e_widget_disabled_set(ow, 1);
cfdata->name = ow;
e_widget_frametable_object_append(of2, cfdata->name, 1, 0, 1, 1, 1, 1, 1, 0);
ow = e_widget_label_add(evas, _("Class:"));
e_widget_size_min_get(ow, &mw, &mh);
e_widget_frametable_object_append_full
(of2, ow, 0, 1, 1, 1, 0, 0, 0, 0, 1.0, 1.0, mw, mh, 9999, 9999);
ow = e_widget_label_add(evas, _("<No Class>"));
ow = e_widget_label_add(evas, NULL);
e_widget_disabled_set(ow, 1);
cfdata->class = ow;
e_widget_frametable_object_append(of2, cfdata->class, 1, 1, 1, 1, 1, 1, 1, 0);
ow = e_widget_label_add(evas, _("Title:"));
e_widget_size_min_get(ow, &mw, &mh);
e_widget_frametable_object_append_full
(of2, ow, 0, 2, 1, 1, 0, 0, 0, 0, 1.0, 1.0, mw, mh, 9999, 9999);
ow = e_widget_label_add(evas, _("<No Title>"));
ow = e_widget_label_add(evas, NULL);
e_widget_disabled_set(ow, 1);
cfdata->title = ow;
e_widget_frametable_object_append(of2, cfdata->title, 1, 2, 1, 1, 1, 1, 1, 0);
ow = e_widget_label_add(evas, _("Role:"));
e_widget_size_min_get(ow, &mw, &mh);
e_widget_frametable_object_append_full
(of2, ow, 0, 3, 1, 1, 0, 0, 0, 0, 1.0, 1.0, mw, mh, 9999, 9999);
ow = e_widget_label_add(evas, _("<No Role>"));
ow = e_widget_label_add(evas, NULL);
e_widget_disabled_set(ow, 1);
cfdata->role = ow;
e_widget_frametable_object_append(of2, cfdata->role, 1, 3, 1, 1, 1, 1, 1, 0);
@ -167,7 +186,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
e_widget_list_object_append(ol, of2, 1, 0, 0.0);
e_widget_list_object_append(ol, cfdata->btn, 1, 0, 0.0);
e_widget_disabled_set(cfdata->btn, 1);
_cb_list_change(cfdata, NULL);
return ol;
}
@ -290,6 +309,10 @@ _cb_delete(void *data, void *data2 __UNUSED__)
_fill_remembers(cfdata);
if (last_selected >= 0)
e_widget_ilist_selected_set(cfdata->list, last_selected - deleted + 1);
/* This is harmless if an item is being selected by the previous line,
* and will fill data correctly if there is no window remembers anymore. */
_cb_list_change(cfdata, NULL);
}
static void
@ -297,21 +320,45 @@ _cb_list_change(void *data, Evas_Object *obj __UNUSED__)
{
E_Config_Dialog_Data *cfdata;
E_Remember *rem = NULL;
int n = 0;
const Eina_List *selected = NULL;
E_Ilist_Item *item = NULL;
if (!(cfdata = data)) return;
n = e_widget_ilist_selected_get(cfdata->list);
if ((rem = e_widget_ilist_nth_data_get(cfdata->list, n)))
if ((selected = e_widget_ilist_selected_items_get(cfdata->list)))
{
e_widget_label_text_set(cfdata->name, rem->name ?
rem->name : _("<No Name>"));
e_widget_label_text_set(cfdata->class, rem->class ?
rem->class : _("<No Class>"));
e_widget_label_text_set(cfdata->title, rem->title ?
rem->title : _("<No Title>"));
e_widget_label_text_set(cfdata->role, rem->role ?
rem->role : _("<No Role>"));
if ((item = eina_list_last_data_get(selected)))
rem = e_widget_ilist_item_data_get(item);
}
if (!rem)
{
e_widget_label_text_set(cfdata->name, _("No selection"));
e_widget_disabled_set(cfdata->name, 1);
e_widget_label_text_set(cfdata->class, _("No selection"));
e_widget_disabled_set(cfdata->class, 1);
e_widget_label_text_set(cfdata->title, _("No selection"));
e_widget_disabled_set(cfdata->title, 1);
e_widget_label_text_set(cfdata->role, _("No selection"));
e_widget_disabled_set(cfdata->role, 1);
}
else
{
e_widget_label_text_set(cfdata->name,
rem->name ? rem->name : _("Any"));
e_widget_disabled_set(cfdata->name, !rem->name);
e_widget_label_text_set(cfdata->class,
rem->class ? rem->class : _("Any"));
e_widget_disabled_set(cfdata->class, !rem->class);
e_widget_label_text_set(cfdata->title,
rem->title ? rem->title : _("Any"));
e_widget_disabled_set(cfdata->title, !rem->title);
e_widget_label_text_set(cfdata->role,
rem->role ? rem->role : _("Any"));
e_widget_disabled_set(cfdata->role, !rem->role);
}
if (e_widget_ilist_selected_count_get(cfdata->list) < 1)