Add and Use the config list widget
* Config list widget is used to have an editable ilist * Config list widget will be reused in the paths configuration dialog SVN revision: 21894
This commit is contained in:
parent
227d31fbf5
commit
29541f7dbb
|
@ -119,6 +119,7 @@ e_livethumb.h \
|
|||
e_int_border_border.h \
|
||||
e_widget_ilist.h \
|
||||
e_widget_tlist.h \
|
||||
e_widget_config_list.h \
|
||||
e_slider.h \
|
||||
e_widget_slider.h \
|
||||
e_int_config_window_manipulation.h \
|
||||
|
@ -249,6 +250,7 @@ e_livethumb.c \
|
|||
e_int_border_border.c \
|
||||
e_widget_ilist.c \
|
||||
e_widget_tlist.c \
|
||||
e_widget_config_list.c \
|
||||
e_slider.c \
|
||||
e_widget_slider.c \
|
||||
e_int_config_window_manipulation.c \
|
||||
|
|
|
@ -97,6 +97,7 @@
|
|||
#include "e_livethumb.h"
|
||||
#include "e_int_border_border.h"
|
||||
#include "e_widget_ilist.h"
|
||||
#include "e_widget_config_list.h"
|
||||
#include "e_slider.h"
|
||||
#include "e_widget_slider.h"
|
||||
#include "e_int_config_window_manipulation.h"
|
||||
|
|
|
@ -14,13 +14,7 @@ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Co
|
|||
static void _ilist_font_cb_change(void *data, Evas_Object *obj);
|
||||
static void _enabled_font_cb_change(void *data, Evas_Object *obj);
|
||||
|
||||
static void _ilist_fallback_cb_change(void *data, Evas_Object *obj);
|
||||
static void _enabled_fallback_cb_change(void *data, Evas_Object *obj);
|
||||
static void _button_fallback_cb_add(void *data, void *obj);
|
||||
static void _button_fallback_cb_remove(void *data, void *obj);
|
||||
static void _button_fallback_cb_up(void *data, void *obj);
|
||||
static void _button_fallback_cb_down(void *data, void *obj);
|
||||
static void _list_select_num(E_Config_Dialog_Data *cfdata, int indx);
|
||||
|
||||
struct _E_Text_Class_Pair
|
||||
{
|
||||
|
@ -80,7 +74,6 @@ struct _E_Config_Dialog_Data
|
|||
int cur_index;
|
||||
|
||||
/* Font Fallbacks */
|
||||
char *cur_fallback;
|
||||
int cur_fallbacks_enabled;
|
||||
|
||||
/* Font Hinting */
|
||||
|
@ -97,12 +90,6 @@ struct _E_Config_Dialog_Data
|
|||
|
||||
/* Font Fallbacks */
|
||||
Evas_Object *fallback_list; /* Selecting a list entry starts edit*/
|
||||
|
||||
Evas_Object *fallback; /* Text Entry */
|
||||
Evas_Object *fallback_up; /* Move selected list entry up */
|
||||
Evas_Object *fallback_down; /* Move selected list entry down */
|
||||
Evas_Object *fallback_add; /* create and select a new list entry */
|
||||
Evas_Object *fallback_remove; /* remove the selected entry */
|
||||
}
|
||||
gui;
|
||||
};
|
||||
|
@ -249,10 +236,10 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
|
||||
if (cfdata->cur_fallbacks_enabled)
|
||||
{
|
||||
for (i = 0; i < e_widget_ilist_count(cfdata->gui.fallback_list); i++)
|
||||
for (i = 0; i < e_widget_config_list_count(cfdata->gui.fallback_list); i++)
|
||||
{
|
||||
const char *fallback;
|
||||
fallback = e_widget_ilist_nth_label_get(cfdata->gui.fallback_list, i);
|
||||
fallback = e_widget_config_list_nth_get(cfdata->gui.fallback_list, i);
|
||||
if (fallback != NULL && strlen(fallback) > 0)
|
||||
e_font_fallback_append(fallback);
|
||||
}
|
||||
|
@ -369,88 +356,35 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* Create Fallbacks Widgets */
|
||||
option_enable = (e_font_fallback_list() != NULL);
|
||||
of = e_widget_frametable_add(evas, _("Font Fallbacks"), 1);
|
||||
of = e_widget_framelist_add(evas, _("Font Fallbacks"), 0);
|
||||
e_widget_framelist_content_align_set(of, 0.5, 0.5);
|
||||
|
||||
ob = e_widget_button_add(evas, _("Move Up"), "widget/up_arrow", _button_fallback_cb_up, cfdata, NULL);
|
||||
cfdata->gui.fallback_up = ob;
|
||||
e_widget_disabled_set(ob, 1);
|
||||
e_widget_frametable_object_append( of,
|
||||
ob,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
ob = e_widget_config_list_add(evas, e_widget_entry_add, _("Fallback Name"));
|
||||
cfdata->gui.fallback_list = ob;
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
|
||||
ob = e_widget_button_add(evas, _("Move Down"), "widget/down_arrow", _button_fallback_cb_down, cfdata, NULL);
|
||||
cfdata->gui.fallback_down = ob;
|
||||
e_widget_disabled_set(ob, 1);
|
||||
e_widget_frametable_object_append( of,
|
||||
ob,
|
||||
1, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
|
||||
cfdata->gui.fallback_list = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_list, !option_enable);
|
||||
e_widget_min_size_set(cfdata->gui.fallback_list, 100, 100);
|
||||
e_widget_on_change_hook_set(cfdata->gui.fallback_list, _ilist_fallback_cb_change, cfdata);
|
||||
/* Fill In Ilist */
|
||||
option_enable = 0;
|
||||
for (i = 0; i < evas_list_count(e_font_fallback_list()); i++)
|
||||
{
|
||||
E_Font_Fallback *eff;
|
||||
|
||||
eff = evas_list_nth(e_font_fallback_list(), i);
|
||||
e_widget_ilist_append(cfdata->gui.fallback_list, NULL, eff->name, NULL, NULL, NULL);
|
||||
e_widget_config_list_append(ob, eff->name);
|
||||
option_enable = 1;
|
||||
}
|
||||
e_widget_ilist_go(cfdata->gui.fallback_list);
|
||||
e_widget_frametable_object_append( of,
|
||||
cfdata->gui.fallback_list,
|
||||
2, /* Col Start*/
|
||||
0, /* Row Start */
|
||||
1, /* Col Span*/
|
||||
4, /* Row Span*/
|
||||
1, 1, 1, 1);
|
||||
|
||||
ob = e_widget_label_add(evas, _("Fallback Name"));
|
||||
e_widget_frametable_object_append( of,
|
||||
ob,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
cfdata->gui.fallback = e_widget_entry_add(evas, &(cfdata->cur_fallback));
|
||||
e_widget_disabled_set(cfdata->gui.fallback, !option_enable);
|
||||
e_widget_min_size_set(cfdata->gui.fallback, 100, 25);
|
||||
e_widget_frametable_object_append(of, cfdata->gui.fallback,
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
cfdata->gui.fallback_add = e_widget_button_add(evas, _("Add"), NULL, _button_fallback_cb_add, cfdata, NULL);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_add, !option_enable);
|
||||
e_widget_frametable_object_append( of,
|
||||
cfdata->gui.fallback_add,
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
cfdata->gui.fallback_remove = e_widget_button_add(evas, _("Remove"), NULL, _button_fallback_cb_remove, cfdata, NULL);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_remove, !option_enable);
|
||||
e_widget_frametable_object_append( of,
|
||||
cfdata->gui.fallback_remove ,
|
||||
1, 2, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
ob = e_widget_check_add(evas, _("Enable Fallbacks"), &(cfdata->cur_fallbacks_enabled));
|
||||
e_widget_frametable_object_append(of, ob,
|
||||
e_widget_config_list_object_append( cfdata->gui.fallback_list,
|
||||
ob,
|
||||
0, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
e_widget_on_change_hook_set(ob, _enabled_fallback_cb_change, cfdata);
|
||||
e_widget_check_checked_set(ob, option_enable);
|
||||
e_widget_on_change_hook_set(ob, _enabled_fallback_cb_change, cfdata);
|
||||
|
||||
if (e_widget_ilist_count(cfdata->gui.fallback_list) > 0)
|
||||
{
|
||||
e_widget_ilist_selected_set(cfdata->gui.fallback_list, 0);
|
||||
}
|
||||
e_widget_change(ob);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -511,171 +445,13 @@ _enabled_font_cb_change(void *data, Evas_Object *obj)
|
|||
}
|
||||
|
||||
/* Private Font Fallback Functions */
|
||||
static void _ilist_fallback_cb_change(void *data, Evas_Object *obj)
|
||||
{
|
||||
int indx;
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
indx = e_widget_ilist_selected_get(cfdata->gui.fallback_list);
|
||||
_list_select_num(cfdata, indx);
|
||||
}
|
||||
static void _enabled_fallback_cb_change(void *data, Evas_Object *obj)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
if (cfdata->cur_fallbacks_enabled)
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_list, 0);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_add, 0);
|
||||
e_widget_disabled_set(cfdata->gui.fallback, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
_list_select_num(cfdata, -1);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_list, 1);
|
||||
e_widget_disabled_set(cfdata->gui.fallback, 1);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_add, 1);
|
||||
}
|
||||
}
|
||||
static void _button_fallback_cb_add(void *data, void *obj)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
if (cfdata->cur_fallback && strlen(cfdata->cur_fallback) > 0)
|
||||
{
|
||||
int count;
|
||||
int i;
|
||||
|
||||
/* If it already esists just select the existing one */
|
||||
for (i = 0; i < e_widget_ilist_count(cfdata->gui.fallback_list); i++)
|
||||
{
|
||||
const char *fallback;
|
||||
fallback = e_widget_ilist_nth_label_get(cfdata->gui.fallback_list, i);
|
||||
if ( fallback != NULL &&
|
||||
strlen(fallback) > 0 &&
|
||||
!strcmp(fallback, cfdata->cur_fallback) )
|
||||
{
|
||||
e_widget_ilist_selected_set(cfdata->gui.fallback_list, i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
e_widget_ilist_append(cfdata->gui.fallback_list, NULL, cfdata->cur_fallback, NULL, NULL, NULL);
|
||||
e_widget_ilist_go(cfdata->gui.fallback_list);
|
||||
count = e_widget_ilist_count(cfdata->gui.fallback_list);
|
||||
e_widget_ilist_selected_set(cfdata->gui.fallback_list, count - 1);
|
||||
|
||||
e_widget_entry_text_set(cfdata->gui.fallback, "");
|
||||
}
|
||||
|
||||
e_widget_disabled_set(cfdata->gui.fallback_list, !cfdata->cur_fallbacks_enabled);
|
||||
}
|
||||
|
||||
static void _button_fallback_cb_remove(void *data, void *obj)
|
||||
{
|
||||
int indx;
|
||||
int count;
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
indx = e_widget_ilist_selected_get(cfdata->gui.fallback_list);
|
||||
count = e_widget_ilist_count(cfdata->gui.fallback_list);
|
||||
|
||||
e_widget_ilist_remove_num(cfdata->gui.fallback_list, indx);
|
||||
|
||||
e_widget_ilist_go(cfdata->gui.fallback_list);
|
||||
e_widget_ilist_selected_set(cfdata->gui.fallback_list, indx);
|
||||
if (count == 1)
|
||||
{
|
||||
_list_select_num(cfdata, -1);
|
||||
}
|
||||
}
|
||||
static void _button_fallback_cb_up(void *data, void *obj)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
int idx_sel;
|
||||
const char *label_sel;
|
||||
const char *label_rep;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
idx_sel = e_widget_ilist_selected_get(cfdata->gui.fallback_list);
|
||||
|
||||
label_sel = e_widget_ilist_nth_label_get(cfdata->gui.fallback_list, idx_sel);
|
||||
label_rep = e_widget_ilist_nth_label_get(cfdata->gui.fallback_list, idx_sel - 1);
|
||||
|
||||
e_widget_ilist_nth_label_set(cfdata->gui.fallback_list, idx_sel - 1, label_sel);
|
||||
e_widget_ilist_nth_label_set(cfdata->gui.fallback_list, idx_sel, label_rep);
|
||||
|
||||
e_widget_ilist_selected_set(cfdata->gui.fallback_list, idx_sel - 1);
|
||||
}
|
||||
static void _button_fallback_cb_down(void *data, void *obj)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
int idx_sel;
|
||||
const char *label_sel;
|
||||
const char *label_rep;
|
||||
|
||||
cfdata = data;
|
||||
if (!cfdata) return;
|
||||
|
||||
idx_sel = e_widget_ilist_selected_get(cfdata->gui.fallback_list);
|
||||
|
||||
label_sel = e_widget_ilist_nth_label_get(cfdata->gui.fallback_list, idx_sel);
|
||||
label_rep = e_widget_ilist_nth_label_get(cfdata->gui.fallback_list, idx_sel + 1);
|
||||
|
||||
e_widget_ilist_nth_label_set(cfdata->gui.fallback_list, idx_sel + 1, label_sel);
|
||||
e_widget_ilist_nth_label_set(cfdata->gui.fallback_list, idx_sel, label_rep);
|
||||
|
||||
e_widget_ilist_selected_set(cfdata->gui.fallback_list, idx_sel + 1);
|
||||
}
|
||||
|
||||
static void _list_select_num(E_Config_Dialog_Data *cfdata, int indx)
|
||||
{
|
||||
int count;
|
||||
|
||||
/* Disable selecting the list while we are disabled */
|
||||
if (indx >= 0 && !cfdata->cur_fallbacks_enabled) return;
|
||||
|
||||
count = e_widget_ilist_count(cfdata->gui.fallback_list);
|
||||
|
||||
if (count == 0 || indx < 0)
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_remove, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_remove, 0);
|
||||
}
|
||||
|
||||
if (count == 1 || indx < 0)
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_up, 1);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_down, 1);
|
||||
}
|
||||
else if (indx == 0)
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_up, 1);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_down, 0);
|
||||
}
|
||||
else if (indx + 1 == count)
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_up, 0);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_down, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_disabled_set(cfdata->gui.fallback_up, 0);
|
||||
e_widget_disabled_set(cfdata->gui.fallback_down, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,348 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
typedef struct _E_Widget_Data E_Widget_Data;
|
||||
|
||||
/* subsystem functions */
|
||||
static void _list_cb_change(void *data, Evas_Object *obj);
|
||||
static void _button_cb_add(void *data, void *obj);
|
||||
static void _button_cb_remove(void *data, void *obj);
|
||||
static void _button_cb_up(void *data, void *obj);
|
||||
static void _button_cb_down(void *data, void *obj);
|
||||
static void _list_select_num(E_Widget_Data *wd, int indx);
|
||||
|
||||
static void _e_wid_disable_hook(Evas_Object *obj);
|
||||
static void _e_wid_del_hook(Evas_Object *obj);
|
||||
|
||||
struct _E_Widget_Data
|
||||
{
|
||||
/* Current Data */
|
||||
char *cur_entry;
|
||||
int cur_enabled;
|
||||
|
||||
struct
|
||||
{
|
||||
Evas_Object *list; /* Selecting a list entry starts edit*/
|
||||
Evas_Object *table;
|
||||
|
||||
Evas_Object *entry; /* Generic Entry */
|
||||
Evas_Object *up; /* Move selected list entry up */
|
||||
Evas_Object *down; /* Move selected list entry down */
|
||||
Evas_Object *add; /* create and select a new list entry */
|
||||
Evas_Object *remove; /* remove the selected entry */
|
||||
}
|
||||
gui;
|
||||
};
|
||||
|
||||
/* Externally accessible functions */
|
||||
EAPI Evas_Object *
|
||||
e_widget_config_list_add(Evas *evas, Evas_Object* (*func_entry_add) (Evas *evas, char **val), const char *label)
|
||||
{
|
||||
Evas_Object *obj, *o;
|
||||
E_Widget_Data *wd;
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
obj = e_widget_add(evas);
|
||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||
e_widget_disable_hook_set(obj, _e_wid_disable_hook);
|
||||
wd = E_NEW(E_Widget_Data, 1);
|
||||
e_widget_data_set(obj, wd);
|
||||
|
||||
o = e_widget_table_add(evas, 1);
|
||||
wd->gui.table = o;
|
||||
e_widget_sub_object_add(obj, o);
|
||||
|
||||
o = e_widget_button_add(evas, _("Move Up"), "widget/up_arrow", _button_cb_up, wd, NULL);
|
||||
wd->gui.up = o;
|
||||
e_widget_disabled_set(o, 1);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
1, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
|
||||
o = e_widget_button_add(evas, _("Move Down"), "widget/down_arrow", _button_cb_down, wd, NULL);
|
||||
wd->gui.down = o;
|
||||
e_widget_disabled_set(o, 1);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
1, 3, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
|
||||
o = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
wd->gui.list = o;
|
||||
e_widget_disabled_set(o, 1);
|
||||
e_widget_min_size_set(o, 100, 100);
|
||||
e_widget_on_change_hook_set(o, _list_cb_change, wd);
|
||||
e_widget_ilist_go(o);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
2, 0, 1, 4,
|
||||
1, 1, 1, 1);
|
||||
|
||||
o = e_widget_label_add(evas, label);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
0, 0, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
o = func_entry_add(evas, &(wd->cur_entry));
|
||||
wd->gui.entry = o;
|
||||
e_widget_disabled_set(o, 1);
|
||||
e_widget_min_size_set(o, 100, 25);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
0, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
o = e_widget_button_add(evas, _("Add"), NULL, _button_cb_add, wd, obj);
|
||||
wd->gui.add = o;
|
||||
e_widget_disabled_set(o, 1);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
o = e_widget_button_add(evas, _("Remove"), NULL, _button_cb_remove, wd, obj);
|
||||
wd->gui.remove = o;
|
||||
e_widget_disabled_set(o, 1);
|
||||
e_widget_table_object_append( wd->gui.table,
|
||||
o,
|
||||
1, 2, 1, 1,
|
||||
1, 1, 1, 1);
|
||||
|
||||
e_widget_min_size_get(wd->gui.table, &mw, &mh);
|
||||
e_widget_min_size_set(obj, mw, mh);
|
||||
e_widget_resize_object_set(obj, wd->gui.table);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_widget_config_list_count(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
return e_widget_ilist_count(wd->gui.list);
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
e_widget_config_list_nth_get(Evas_Object *obj, int n)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
return e_widget_ilist_nth_label_get(wd->gui.list, n);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_widget_config_list_append(Evas_Object *obj, const char *entry)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
int count;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
e_widget_ilist_append(wd->gui.list, NULL, entry, NULL, NULL, NULL);
|
||||
e_widget_ilist_go(wd->gui.list);
|
||||
count = e_widget_ilist_count(wd->gui.list);
|
||||
e_widget_ilist_selected_set(wd->gui.list, count - 1);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_widget_config_list_object_append(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
e_widget_table_object_append(wd->gui.table, sobj, col, row, colspan, rowspan, fill_w, fill_h, expand_w, expand_h);
|
||||
}
|
||||
|
||||
/* Private Function defs */
|
||||
static void _list_cb_change(void *data, Evas_Object *obj)
|
||||
{
|
||||
int indx;
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = data;
|
||||
if (!wd) return;
|
||||
|
||||
indx = e_widget_ilist_selected_get(wd->gui.list);
|
||||
_list_select_num(wd, indx);
|
||||
}
|
||||
|
||||
|
||||
static void _button_cb_add(void *data, void *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
Evas_Object *o;
|
||||
|
||||
o = obj;
|
||||
wd = data;
|
||||
if (!o) return;
|
||||
if (!wd) return;
|
||||
|
||||
if (wd->cur_entry && strlen(wd->cur_entry) > 0)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* If it already esists just select the existing one */
|
||||
for (i = 0; i < e_widget_ilist_count(wd->gui.list); i++)
|
||||
{
|
||||
const char *label;
|
||||
label = e_widget_ilist_nth_label_get(wd->gui.list, i);
|
||||
if ( label != NULL &&
|
||||
strlen(label) > 0 &&
|
||||
!strcmp(label, wd->cur_entry) )
|
||||
{
|
||||
e_widget_ilist_selected_set(wd->gui.list, i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
e_widget_config_list_append(o, wd->cur_entry);
|
||||
e_widget_entry_text_set(wd->gui.entry, "");
|
||||
}
|
||||
}
|
||||
|
||||
static void _button_cb_remove(void *data, void *obj)
|
||||
{
|
||||
int indx;
|
||||
int count;
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = data;
|
||||
if (!wd) return;
|
||||
|
||||
indx = e_widget_ilist_selected_get(wd->gui.list);
|
||||
count = e_widget_ilist_count(wd->gui.list);
|
||||
|
||||
e_widget_ilist_remove_num(wd->gui.list, indx);
|
||||
|
||||
e_widget_ilist_go(wd->gui.list);
|
||||
e_widget_ilist_selected_set(wd->gui.list, indx);
|
||||
if (count == 1)
|
||||
{
|
||||
_list_select_num(wd, -1);
|
||||
}
|
||||
}
|
||||
|
||||
static void _button_cb_up(void *data, void *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
int idx_sel;
|
||||
const char *label_sel;
|
||||
const char *label_rep;
|
||||
|
||||
wd = data;
|
||||
if (!wd) return;
|
||||
|
||||
idx_sel = e_widget_ilist_selected_get(wd->gui.list);
|
||||
|
||||
label_sel = e_widget_ilist_nth_label_get(wd->gui.list, idx_sel);
|
||||
label_rep = e_widget_ilist_nth_label_get(wd->gui.list, idx_sel - 1);
|
||||
|
||||
e_widget_ilist_nth_label_set(wd->gui.list, idx_sel - 1, label_sel);
|
||||
e_widget_ilist_nth_label_set(wd->gui.list, idx_sel, label_rep);
|
||||
|
||||
e_widget_ilist_selected_set(wd->gui.list, idx_sel - 1);
|
||||
}
|
||||
|
||||
static void _button_cb_down(void *data, void *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
int idx_sel;
|
||||
const char *label_sel;
|
||||
const char *label_rep;
|
||||
|
||||
wd = data;
|
||||
if (!wd) return;
|
||||
|
||||
idx_sel = e_widget_ilist_selected_get(wd->gui.list);
|
||||
|
||||
label_sel = e_widget_ilist_nth_label_get(wd->gui.list, idx_sel);
|
||||
label_rep = e_widget_ilist_nth_label_get(wd->gui.list, idx_sel + 1);
|
||||
|
||||
e_widget_ilist_nth_label_set(wd->gui.list, idx_sel + 1, label_sel);
|
||||
e_widget_ilist_nth_label_set(wd->gui.list, idx_sel, label_rep);
|
||||
|
||||
e_widget_ilist_selected_set(wd->gui.list, idx_sel + 1);
|
||||
}
|
||||
|
||||
static void _list_select_num(E_Widget_Data *wd, int indx)
|
||||
{
|
||||
int count;
|
||||
|
||||
/* Disable selecting the list while we are disabled */
|
||||
if (indx >= 0 && !wd->cur_enabled) return;
|
||||
|
||||
count = e_widget_ilist_count(wd->gui.list);
|
||||
|
||||
if (count == 0 || indx < 0)
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.remove, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.remove, 0);
|
||||
}
|
||||
|
||||
if (count == 1 || indx < 0)
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.up, 1);
|
||||
e_widget_disabled_set(wd->gui.down, 1);
|
||||
}
|
||||
else if (indx == 0)
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.up, 1);
|
||||
e_widget_disabled_set(wd->gui.down, 0);
|
||||
}
|
||||
else if (indx + 1 == count)
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.up, 0);
|
||||
e_widget_disabled_set(wd->gui.down, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.up, 0);
|
||||
e_widget_disabled_set(wd->gui.down, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Callback Functions */
|
||||
static void
|
||||
_e_wid_del_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_wid_disable_hook(Evas_Object *obj)
|
||||
{
|
||||
E_Widget_Data *wd;
|
||||
|
||||
wd = e_widget_data_get(obj);
|
||||
if (!wd) return;
|
||||
|
||||
wd->cur_enabled = !e_widget_disabled_get(obj);
|
||||
|
||||
if (wd->cur_enabled)
|
||||
{
|
||||
e_widget_disabled_set(wd->gui.list, 0);
|
||||
e_widget_disabled_set(wd->gui.add, 0);
|
||||
e_widget_disabled_set(wd->gui.entry, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
_list_select_num(wd, -1);
|
||||
e_widget_disabled_set(wd->gui.list, 1);
|
||||
e_widget_disabled_set(wd->gui.entry, 1);
|
||||
e_widget_disabled_set(wd->gui.add, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_WIDGET_CONFIG_LIST_H
|
||||
#define E_WIDGET_CONFIG_LIST_H
|
||||
|
||||
EAPI Evas_Object *e_widget_config_list_add(Evas *evas, Evas_Object* (*func_entry_add) (Evas *evas, char **val), const char *label);
|
||||
EAPI int e_widget_config_list_count(Evas_Object *obj);
|
||||
EAPI const char *e_widget_config_list_nth_get(Evas_Object *obj, int n);
|
||||
EAPI void e_widget_config_list_append(Evas_Object *obj, const char *entry);
|
||||
EAPI void e_widget_config_list_object_append(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h);
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
/* externally accessible functions */
|
||||
EAPI Evas_Object *
|
||||
e_widget_label_add(Evas *evas, char *label)
|
||||
e_widget_label_add(Evas *evas, const char *label)
|
||||
{
|
||||
Evas_Object *obj, *o;
|
||||
Evas_Coord mw, mh;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#ifndef E_WIDGET_LABEL_H
|
||||
#define E_WIDGET_LABEL_H
|
||||
|
||||
EAPI Evas_Object *e_widget_label_add(Evas *evas, char *label);
|
||||
EAPI Evas_Object *e_widget_label_add(Evas *evas, const char *label);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue