Ok, config_inwin is working, and is updated/can set the project details.

This commit is contained in:
Jaime Thomas 2009-01-11 02:14:02 +00:00
parent 0087017c94
commit f623f9b36f
8 changed files with 370 additions and 54 deletions

View File

@ -11,6 +11,7 @@ TODO
-> figure out what to do about dnd, should it be consolidated into one system, how to handle internel, etc. -> figure out what to do about dnd, should it be consolidated into one system, how to handle internel, etc.
-> don't load the sources all at one time (lots of memory consumed -- for my entire development tree containing 154256 files, ecdb uses 46mb) -> don't load the sources all at one time (lots of memory consumed -- for my entire development tree containing 154256 files, ecdb uses 46mb)
-> integrate exchange -> integrate exchange
-> instead of always swallowing widgets, allow theme to specify on a widget-by-widget basis if it wants to emit signals from internal parts
DONE DONE
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////

View File

@ -71,7 +71,7 @@ group {
rel2 { rel2 {
to: "bg"; to: "bg";
relative: 1.0 0.0; relative: 1.0 0.0;
offset: -11 50; offset: -11 30;
} }
} }
} }
@ -93,7 +93,7 @@ group {
rel2 { rel2 {
to: "ecdb/burn_data/return"; to: "ecdb/burn_data/return";
relative: 1.0 1.0; relative: 1.0 1.0;
offset: 0 50; offset: 0 30;
} }
} }
} }
@ -164,6 +164,28 @@ group {
} }
} }
part {
name: "ecdb/burn_data/settings";
type: SWALLOW;
repeat_events: 1;
description {
state: "default" 0.0;
rel1 {
to: "ecdb/burn_data/vol_name";
relative: 0.0 1.0;
offset: 0 5;
}
rel2 {
to: "ecdb/burn_data/vol_name";
relative: 1.0 1.0;
offset: 0 30;
}
}
}
/* Missing a description later */ /* Missing a description later */
part { part {
name: "ecdb/burn_data/filelist"; name: "ecdb/burn_data/filelist";
@ -182,7 +204,7 @@ group {
rel2 { rel2 {
to: "bg"; to: "bg";
relative: 1.0 1.0; relative: 1.0 1.0;
offset: -205 -26; offset: -235 -26;
} }
} }
} }

View File

@ -92,7 +92,7 @@ group {
rel2 { rel2 {
to: "bg"; to: "bg";
relative: 1.0 0.0; relative: 1.0 0.0;
offset: -11 50; offset: -11 30;
} }
} }
} }
@ -114,7 +114,7 @@ group {
rel2 { rel2 {
to: "ecdb/burn_image/return"; to: "ecdb/burn_image/return";
relative: 1.0 1.0; relative: 1.0 1.0;
offset: 0 50; offset: 0 30;
} }
} }
} }

View File

@ -54,16 +54,16 @@ group {
group { group {
name: "ecdb/config_inwin/popup"; name: "ecdb/config_inwin/popup";
max: 400 300;
parts { parts {
part { part {
name: "back"; name: "back";
type: IMAGE; mouse_events: 0;
description { description {
state: "default" 0.0; state: "default" 0.0;
color: 255 255 255 0; color: 255 255 255 0;
max: 308 128;
rel1 { rel1 {
relative: 0.0 0.0; relative: 0.0 0.0;
@ -81,8 +81,8 @@ group {
} }
description { description {
inherit: "default" 0.0;
state: "active" 0.0; state: "active" 0.0;
inherit: "default" 0.0;
color: 255 255 255 255; color: 255 255 255 255;
} }
} }
@ -90,11 +90,11 @@ group {
part { part {
name: "ecdb.table"; name: "ecdb.table";
type: TABLE; type: TABLE;
clip_to: "back";
description { description {
state: "default" 0.0; state: "default" 0.0;
color: 255 255 255 0; color: 255 255 255 0;
max: 300 120;
rel1 { rel1 {
relative: 0.0 0.0; relative: 0.0 0.0;
@ -107,11 +107,17 @@ group {
} }
table { table {
homogenous: TABLE; homogeneous: TABLE;
padding: 2 2; padding: 0 0;
align: 0.5 0.5; align: 0.5 0.5;
} }
} }
description {
state: "active" 0.0;
inherit: "default" 0.0;
color: 255 255 255 255;
}
} }
} }
@ -121,8 +127,8 @@ group {
signal: "ecdb,config_inwin,popup,show"; signal: "ecdb,config_inwin,popup,show";
source: "ecdb"; source: "ecdb";
action: STATE_SET "active" 0.0; action: STATE_SET "active" 0.0;
target: "back";
target: "ecdb.table"; target: "ecdb.table";
target: "active";
transition: DECELERATE 0.2; transition: DECELERATE 0.2;
} }
@ -130,9 +136,9 @@ group {
name: "collapse"; name: "collapse";
signal: "ecdb,config_inwin,popup,hide"; signal: "ecdb,config_inwin,popup,hide";
source: "ecdb"; source: "ecdb";
action: STATE_SET "active" 0.0; action: STATE_SET "default" 0.0;
target: "back";
target: "ecdb.table"; target: "ecdb.table";
target: "active";
transition: DECELERATE 0.2; transition: DECELERATE 0.2;
} }
} }

View File

@ -87,7 +87,7 @@ group {
rel2 { rel2 {
to: "bg"; to: "bg";
relative: 1.0 0.0; relative: 1.0 0.0;
offset: -11 50; offset: -11 30;
} }
} }
} }
@ -109,7 +109,7 @@ group {
rel2 { rel2 {
to: "ecdb/erase/return"; to: "ecdb/erase/return";
relative: 1.0 1.0; relative: 1.0 1.0;
offset: 0 50; offset: 0 30;
} }
} }
} }

View File

@ -17,6 +17,28 @@ static void _button_cb_begin(void *data, Evas_Object *obj, void *event_info);
static void _combo_cb_clicked(void *data, Evas_Object *obj, void *event_info); static void _combo_cb_clicked(void *data, Evas_Object *obj, void *event_info);
static int _update_capacity(void *data, int type, void *ev_data); static int _update_capacity(void *data, int type, void *ev_data);
// Config inwin updates
static void _joliet_clicked(void *data, Evas_Object *obj, void *event_info);
static void _rockridge_clicked(void *data, Evas_Object *obj, void *event_info);
static void _symlinks_clicked(void *data, Evas_Object *obj, void *event_info);
static void _hidden_clicked(void *data, Evas_Object *obj, void *event_info);
static void _multi_clicked(void *data, Evas_Object *obj, void *event_info);
static void _sim_clicked(void *data, Evas_Object *obj, void *event_info);
static void _underrun_clicked(void *data, Evas_Object *obj, void *event_info);
static void _apply_clicked(void *data, Evas_Object *obj, void *event_info);
static void _proj_name(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _settings_clicked(void *data, Evas_Object *obj, void *event_into);
// Update on showing to proper values
static void _joliet_config(void *data, Evas_Object *obj, void *event_info);
static void _rockridge_config(void *data, Evas_Object *obj, void *event_info);
static void _symlinks_config(void *data, Evas_Object *obj, void *event_info);
static void _hidden_config(void *data, Evas_Object *obj, void *event_info);
static void _multi_config(void *data, Evas_Object *obj, void *event_info);
static void _sim_config(void *data, Evas_Object *obj, void *event_info);
static void _underrun_config(void *data, Evas_Object *obj, void *event_info);
static void _proj_config(void *data, Evas_Object *obj, void *event_info);
static int static int
_update_capacity(void *data, int type, void *ev_data) _update_capacity(void *data, int type, void *ev_data)
{ {
@ -209,6 +231,199 @@ _combo_cb_clicked(void *data, Evas_Object *obj, void *event_info)
} }
} }
static void
_joliet_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->use_joliet = state;
}
static void
_joliet_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->use_joliet);
}
static void
_rockridge_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->use_rockridge = state;
}
static void
_rockridge_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->use_rockridge);
}
static void
_symlinks_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->follow_symlinks = state;
}
static void
_symlinks_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->follow_symlinks);
}
static void
_hidden_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->ignore_hidden = state;
}
static void
_hidden_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->ignore_hidden);
}
static void
_multi_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->multi = state;
}
static void
_multi_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->multi);
}
static void
_sim_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->simulate = state;
}
static void
_sim_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->simulate);
}
static void
_underrun_clicked(void *data, Evas_Object *obj, void *event_info)
{
int state;
Ecdb_Burn_Project *proj;
proj = data;
state = ecdb_check_checked_get(obj);
proj->underrun_proof = state;
}
static void
_underrun_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
ecdb_check_checked_set(obj, proj->underrun_proof);
}
static void
_apply_clicked(void *data, Evas_Object *obj, void *event_info)
{
ecdb_config_inwin_hide(data);
}
static void
_proj_name(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
const char *name;
Ecdb_Burn_Project *proj;
proj = data;
name = ecdb_entry_text_get(obj);
proj->volume_id = strdup(name);
}
static void
_proj_config(void *data, Evas_Object *obj, void *event_info)
{
Ecdb_Burn_Project *proj;
proj = data;
if (proj->volume_id)
ecdb_entry_text_set(obj, proj->volume_id);
else
ecdb_entry_text_set(obj, "Project Name");
}
static void
_settings_clicked(void *data, Evas_Object *obj, void *event_into)
{
Eina_Iterator *it;
const Evas_Object *table;
Evas_Object *o;
table = edje_object_part_object_get(data, "ecdb.table");
it = evas_object_table_iterator_new(table);
if (!it)
{
printf("_settings_clicked: NULL iterator!\n");
return;
}
while (eina_iterator_next(it, (void **)&o))
evas_object_smart_callback_call(o, "proj_config", NULL);
eina_iterator_free(it);
ecdb_config_inwin_show(data);
}
void void
ecdb_burn_data_page_show(void) ecdb_burn_data_page_show(void)
{ {
@ -221,7 +436,7 @@ ecdb_burn_data_page_show(void)
if (!swallow) if (!swallow)
{ {
Evas_Object *b, *c1, *c2; Evas_Object *b, *c1, *c2, *t;
Eina_List *l; Eina_List *l;
Ecdb_Drive_Info *drive; Ecdb_Drive_Info *drive;
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
@ -305,6 +520,7 @@ ecdb_burn_data_page_show(void)
b = edje_object_part_swallow_get(swallow, "ecdb/burn_data/filelist"); b = edje_object_part_swallow_get(swallow, "ecdb/burn_data/filelist");
ecdb_widget_focus_callback_add(b, "ecdb/burn_data/filelist"); ecdb_widget_focus_callback_add(b, "ecdb/burn_data/filelist");
// Use focus out callback here, same as below
b = ecdb_entry_add(swallow, "ecdb/burn_data/vol_name"); b = ecdb_entry_add(swallow, "ecdb/burn_data/vol_name");
ecdb_entry_text_set(b, "Volume Name"); ecdb_entry_text_set(b, "Volume Name");
evas_object_show(b); evas_object_show(b);
@ -318,6 +534,87 @@ ecdb_burn_data_page_show(void)
bdd); bdd);
evas_object_show(b); evas_object_show(b);
bdd->capacity = b; bdd->capacity = b;
t = ecdb_config_inwin_add(swallow, NULL);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Use Joliet");
evas_object_smart_callback_add(b, "clicked", _joliet_clicked, bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _joliet_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 0, 0, 1, 1);
evas_object_show(b);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Use Rockridge");
evas_object_smart_callback_add(b, "clicked", _rockridge_clicked,
bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _rockridge_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 0, 1, 1, 1);
evas_object_show(b);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Follow Symlinks");
evas_object_smart_callback_add(b, "clicked", _symlinks_clicked,
bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _symlinks_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 0, 2, 1, 1);
evas_object_show(b);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Ignore Hidden Files");
evas_object_smart_callback_add(b, "clicked", _hidden_clicked, bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _hidden_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 0, 3, 1, 1);
evas_object_show(b);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Multi-session");
evas_object_smart_callback_add(b, "clicked", _multi_clicked, bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _multi_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 1, 0, 1, 1);
evas_object_show(b);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Simulate");
evas_object_smart_callback_add(b, "clicked", _sim_clicked, bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _sim_config, bdd->proj);
ecdb_config_inwin_child_add(t, b, 1, 1, 1, 1);
evas_object_show(b);
b = ecdb_check_add(t, NULL);
ecdb_check_label_set(b, "Use Underrun Proof");
evas_object_smart_callback_add(b, "clicked", _underrun_clicked,
bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _underrun_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 1, 2, 1, 1);
evas_object_show(b);
b = ecdb_entry_add(t, NULL);
ecdb_entry_text_set(b, "Volume Name");
evas_object_event_callback_add(b, EVAS_CALLBACK_FOCUS_OUT,
_proj_name, bdd->proj);
evas_object_smart_callback_add(b, "proj_config", _proj_config,
bdd->proj);
ecdb_config_inwin_child_add(t, b, 1, 3, 1, 1);
evas_object_show(b);
b = ecdb_button_add(t, NULL);
ecdb_button_label_set(b, "Apply");
evas_object_smart_callback_add(b, "clicked", _apply_clicked, t);
ecdb_config_inwin_child_add(t, b, 0, 4, 2, 1);
evas_object_show(b);
// At the end so t is a valid pointer
b = ecdb_button_add(swallow, "ecdb/burn_data/settings");
ecdb_button_label_set(b, "Settings");
evas_object_smart_callback_add(b, "clicked", _settings_clicked, t);
evas_object_show(b);
} }
else if (edje_object_part_swallow_get(gui, "action_area") != swallow) else if (edje_object_part_swallow_get(gui, "action_area") != swallow)
{ {

View File

@ -321,6 +321,9 @@ ecdb_check_checked_set(Evas_Object *c, int state)
return; return;
} }
if (cd->checked == state)
return;
if (state) if (state)
{ {
cd->checked = 1; cd->checked = 1;
@ -1086,12 +1089,11 @@ _config_inwin_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
Config_Inwin_Data *iwd; Config_Inwin_Data *iwd;
int w, h; int w, h;
iwd = evas_object_data_get(data, "iwd"); iwd = data;
if (!iwd)
{ // We get a resize event even though the evas has been destroyed
printf("_config_inwin_resize: NULL data\n"); if ((!em) || (!em->main_win_ee))
return; return;
}
ecore_evas_geometry_get(em->main_win_ee, NULL, NULL, &w, &h); ecore_evas_geometry_get(em->main_win_ee, NULL, NULL, &w, &h);
evas_object_resize(iwd->popup, w, h); evas_object_resize(iwd->popup, w, h);
@ -1105,15 +1107,10 @@ _config_inwin_hide(void *data, Evas *e, Evas_Object *obj, void *event_info)
{ {
Config_Inwin_Data *iwd; Config_Inwin_Data *iwd;
iwd = evas_object_data_get(data, "iwd"); iwd = data;
if (!iwd)
{
printf("_config_inwin_hide: NULL data\n");
return;
}
ecore_evas_hide(iwd->popup); evas_object_hide(iwd->popup);
ecore_evas_hide(iwd->back); evas_object_hide(iwd->back);
} }
static void static void
@ -1121,18 +1118,13 @@ _config_inwin_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
{ {
Config_Inwin_Data *iwd; Config_Inwin_Data *iwd;
iwd = evas_object_data_get(data, "iwd"); iwd = data;
if (!iwd) FREE(iwd);
{
printf("_config_inwin_del: NULL data\n");
return;
}
} }
Evas_Object * Evas_Object *
ecdb_config_inwin_add(Evas_Object *parent, const char *name) ecdb_config_inwin_add(Evas_Object *parent, const char *name)
{ {
Evas_Object *iw;
Config_Inwin_Data *iwd; Config_Inwin_Data *iwd;
iwd = calloc(1, sizeof(Config_Inwin_Data)); iwd = calloc(1, sizeof(Config_Inwin_Data));
@ -1143,7 +1135,7 @@ ecdb_config_inwin_add(Evas_Object *parent, const char *name)
} }
iwd->popup = ecdb_widget_add(parent, NULL); iwd->popup = ecdb_widget_add(parent, NULL);
if (!iw) if (!iwd->popup)
{ {
printf("ecdb_config_inwin_add: NULL return!\n"); printf("ecdb_config_inwin_add: NULL return!\n");
return NULL; return NULL;
@ -1154,13 +1146,13 @@ ecdb_config_inwin_add(Evas_Object *parent, const char *name)
evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE,
_config_inwin_resize, _config_inwin_resize,
iwd->popup); iwd);
evas_object_event_callback_add(parent, EVAS_CALLBACK_HIDE, evas_object_event_callback_add(parent, EVAS_CALLBACK_HIDE,
_config_inwin_hide, _config_inwin_hide,
iwd->popup); iwd);
evas_object_event_callback_add(iwd->popup, EVAS_CALLBACK_DEL, evas_object_event_callback_add(iwd->popup, EVAS_CALLBACK_DEL,
_config_inwin_del, _config_inwin_del,
iwd->popup); iwd);
iwd->back = edje_object_add(evas_object_evas_get(parent)); iwd->back = edje_object_add(evas_object_evas_get(parent));
edje_object_file_set(iwd->back, em->theme_path, edje_object_file_set(iwd->back, em->theme_path,
@ -1168,13 +1160,12 @@ ecdb_config_inwin_add(Evas_Object *parent, const char *name)
evas_object_pass_events_set(iwd->back, 1); evas_object_pass_events_set(iwd->back, 1);
evas_object_show(iwd->back); evas_object_show(iwd->back);
iwd->popup = edje_object_add(evas_object_evas_get(parent));
iwd->name = eina_stringshare_add(name); iwd->name = eina_stringshare_add(name);
evas_object_data_set(iw, "iwd", iwd); iwd->parent = parent;
evas_object_data_set(iwd->popup, "iwd", iwd);
iwd->visible = 0; iwd->visible = 0;
return iw; return iwd->popup;
} }
void void
@ -1197,14 +1188,13 @@ ecdb_config_inwin_show(Evas_Object *inwin)
} }
evas_object_pass_events_set(iwd->back, 0); evas_object_pass_events_set(iwd->back, 0);
evas_object_layer_set(iwd->back, evas_object_layer_get(inwin) + 1); evas_object_layer_set(iwd->back, evas_object_layer_get(iwd->parent) + 1);
edje_object_signal_emit(iwd->back, "ecdb,config_inwin,back,show", "ecdb"); edje_object_signal_emit(iwd->back, "ecdb,config_inwin,back,show", "ecdb");
evas_object_pass_events_set(iwd->popup, 0); evas_object_pass_events_set(iwd->popup, 0);
evas_object_layer_set(iwd->popup, evas_object_layer_get(inwin->back) + 1); evas_object_layer_set(iwd->popup, evas_object_layer_get(iwd->back) + 1);
evas_object_signal_emit(iwd->popup, "ecdb,config_inwin,popup,show", edje_object_signal_emit(iwd->popup, "ecdb,config_inwin,popup,show",
"ecdb"); "ecdb");
iwd->visible = 1; iwd->visible = 1;
} }
@ -1238,7 +1228,7 @@ ecdb_config_inwin_hide(Evas_Object *inwin)
void void
ecdb_config_inwin_child_add(Evas_Object *inwin, Evas_Object *child, ecdb_config_inwin_child_add(Evas_Object *inwin, Evas_Object *child,
int sc, int ec, int sr, int er) int c, int r, int cs, int rs)
{ {
if (!inwin) if (!inwin)
{ {
@ -1248,7 +1238,7 @@ ecdb_config_inwin_child_add(Evas_Object *inwin, Evas_Object *child,
if (!child) if (!child)
return; return;
if (!edje_object_part_table_pack(inwin, "ecdb.table", child, sc, sr, ec, er)) if (!edje_object_part_table_pack(inwin, "ecdb.table", child, c, r, cs, rs))
{ {
printf("ecdb_config_inwin_child_add: Couldn't append to table!\n"); printf("ecdb_config_inwin_child_add: Couldn't append to table!\n");
} }

View File

@ -51,9 +51,9 @@ void ecdb_label_text_set(Evas_Object *l, const char *text);
Evas_Object *ecdb_config_inwin_add(Evas_Object *parent, const char *name); Evas_Object *ecdb_config_inwin_add(Evas_Object *parent, const char *name);
void ecdb_config_inwin_show(Evas_Object *inwin); void ecdb_config_inwin_show(Evas_Object *inwin);
void ecbd_config_inwin_hide(Evas_Object *inwin); void ecdb_config_inwin_hide(Evas_Object *inwin);
void ecdb_config_inwin_child_add(Evas_Object *inwin, Evas_Object *child, void ecdb_config_inwin_child_add(Evas_Object *inwin, Evas_Object *child,
int sc, int ec, int c, int r,
int sr, int er); int cs, int rs);
#endif #endif