clouseau: Finilise save,load bmp file including GUI

Signed-off-by: Aharon Hillel <a.hillel@samsung.com>

SVN revision: 72344
This commit is contained in:
Aharon Hillel 2012-06-18 07:22:43 +00:00 committed by Tom Hacohen
parent 77963edfcb
commit 56111ff1bf
3 changed files with 263 additions and 43 deletions

View File

@ -32,7 +32,8 @@ struct _gui_elements
Evas_Object *gl; Evas_Object *gl;
Evas_Object *lb; /* Label showing backtrace */ Evas_Object *lb; /* Label showing backtrace */
Evas_Object *prop_list; Evas_Object *prop_list;
Evas_Object *inwin; Evas_Object *connect_inwin;
Evas_Object *save_inwin;
Evas_Object *en; Evas_Object *en;
Evas_Object *pb; /* Progress wheel shown when waiting for TREE_DATA */ Evas_Object *pb; /* Progress wheel shown when waiting for TREE_DATA */
char *address; char *address;
@ -139,22 +140,22 @@ _work_offline_popup(void)
{ {
Evas_Object *bxx, *lb, *bt_bx, *bt_ofl, *bt_exit; Evas_Object *bxx, *lb, *bt_bx, *bt_ofl, *bt_exit;
/* START - Popup asking user to close client or work offline */ /* START - Popup asking user to close client or work offline */
gui->inwin = elm_win_inwin_add(gui->win); gui->connect_inwin = elm_win_inwin_add(gui->win);
evas_object_show(gui->inwin); evas_object_show(gui->connect_inwin);
bxx = elm_box_add(gui->inwin); bxx = elm_box_add(gui->connect_inwin);
elm_object_style_set(gui->inwin, "minimal_vertical"); elm_object_style_set(gui->connect_inwin, "minimal_vertical");
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx); evas_object_show(bxx);
lb = elm_label_add(gui->inwin); lb = elm_label_add(gui->connect_inwin);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.0); evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.0);
elm_object_text_set(lb, "Connection to server failed."); elm_object_text_set(lb, "Connection to server failed.");
elm_box_pack_end(bxx, lb); elm_box_pack_end(bxx, lb);
evas_object_show(lb); evas_object_show(lb);
bt_bx = elm_box_add(gui->inwin); bt_bx = elm_box_add(gui->connect_inwin);
elm_box_horizontal_set(bt_bx, EINA_TRUE); elm_box_horizontal_set(bt_bx, EINA_TRUE);
elm_box_homogeneous_set(bt_bx, EINA_TRUE); elm_box_homogeneous_set(bt_bx, EINA_TRUE);
evas_object_size_hint_align_set(bt_bx, 0.5, 0.5); evas_object_size_hint_align_set(bt_bx, 0.5, 0.5);
@ -163,7 +164,7 @@ _work_offline_popup(void)
elm_box_pack_end(bxx, bt_bx); elm_box_pack_end(bxx, bt_bx);
/* Add the exit button */ /* Add the exit button */
bt_exit = elm_button_add(gui->inwin); bt_exit = elm_button_add(gui->connect_inwin);
elm_object_text_set(bt_exit, "Exit"); elm_object_text_set(bt_exit, "Exit");
evas_object_smart_callback_add(bt_exit, "clicked", evas_object_smart_callback_add(bt_exit, "clicked",
_cancel_bt_clicked, (void *) gui); _cancel_bt_clicked, (void *) gui);
@ -171,7 +172,7 @@ _work_offline_popup(void)
elm_box_pack_end(bt_bx, bt_exit); elm_box_pack_end(bt_bx, bt_exit);
evas_object_show(bt_exit); evas_object_show(bt_exit);
bt_ofl = elm_button_add(gui->inwin); bt_ofl = elm_button_add(gui->connect_inwin);
elm_object_text_set(bt_ofl, "Work Offline"); elm_object_text_set(bt_ofl, "Work Offline");
evas_object_smart_callback_add(bt_ofl, "clicked", evas_object_smart_callback_add(bt_ofl, "clicked",
_ofl_bt_clicked, (void *) gui); _ofl_bt_clicked, (void *) gui);
@ -179,7 +180,7 @@ _work_offline_popup(void)
elm_box_pack_end(bt_bx, bt_ofl); elm_box_pack_end(bt_bx, bt_ofl);
evas_object_show(bt_ofl); evas_object_show(bt_ofl);
elm_win_inwin_content_set(gui->inwin, bxx); elm_win_inwin_content_set(gui->connect_inwin, bxx);
/* END - Popup asking user to close client or work offline */ /* END - Popup asking user to close client or work offline */
} }
@ -327,7 +328,7 @@ _set_selected_app(void *data, Evas_Object *pobj,
} }
if (svr) if (svr)
{ /* Enable/Desable buttons only if we are online */ { /* Enable/Disable buttons only if we are online */
elm_object_disabled_set(gui->bt_load, (gui->sel_app == NULL)); elm_object_disabled_set(gui->bt_load, (gui->sel_app == NULL));
elm_object_disabled_set(gui->bt_save, (gui->sel_app == NULL)); elm_object_disabled_set(gui->bt_save, (gui->sel_app == NULL));
} }
@ -792,10 +793,19 @@ item_icon_get(void *data, Evas_Object *parent, const char *part)
"Show App Screenshot", EINA_FALSE); "Show App Screenshot", EINA_FALSE);
} }
else else
{ /* Set to Download */ { /* Set to Download or not available if offline */
_set_button(parent, bt, if (svr)
"/images/gtk-refresh.png", {
"Download Screenshot", EINA_FALSE); _set_button(parent, bt,
"/images/gtk-refresh.png",
"Download Screenshot", EINA_FALSE);
}
else
{ /* Make button display: screenshot NOT available */
_set_button(parent, bt,
"/images/gtk-close.png",
"Screenshot not available", EINA_TRUE);
}
} }
} }
@ -1098,26 +1108,157 @@ _bt_load_file(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
} }
} }
static void
_dismiss_save_dialog(void *data,
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ /* Just close save file save_inwin, do nothing */
gui_elements *g = data;
evas_object_del(g->save_inwin);
g->save_inwin = NULL;
}
static void static void
_bt_save_file(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) _bt_save_file(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{ {
gui_elements *g = data; app_info_st *app = gui->sel_app->app->data;
app_info_st *app = g->sel_app->app->data; tree_data_st *ftd = gui->sel_app->td->data;
tree_data_st *ftd = g->sel_app->td->data;
if (event_info) if (event_info)
{ {
/* FIXME: Handle failure. */ /* FIXME: Handle failure. */
eet_info_save(event_info, app, ftd); Eina_Bool s;
s = eet_info_save(event_info, app, ftd, data);
} }
eina_list_free(data);
if (event_info) /* Dismiss save dialog after saving */
_dismiss_save_dialog(gui, NULL, NULL);
} }
static void static void
_dismiss_inwin(gui_elements *g) _dismiss_inwin(gui_elements *g)
{ {
g->address = (g->en) ? strdup(elm_entry_entry_get(g->en)) : NULL; g->address = (g->en) ? strdup(elm_entry_entry_get(g->en)) : NULL;
evas_object_del(g->inwin); evas_object_del(g->connect_inwin);
g->en = NULL; g->en = NULL;
g->inwin = NULL; g->connect_inwin = NULL;
}
static void
_save_all(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Evas_Object *ck_bx = data;
Evas_Object *ck;
Eina_List *l;
Eina_List *ck_list = elm_box_children_get(ck_bx);
Eina_Bool val = elm_check_state_get(obj);
EINA_LIST_FOREACH(ck_list, l, ck)
{ /* Run through checkoxes, set / unset marks for all */
if (!elm_object_disabled_get(ck))
elm_check_state_set(ck, val);
}
eina_list_free(ck_list);
}
static void
_save_file_dialog(void *data,
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ /* START - Popup to save eet file */
gui_elements *g = data;
Evas_Object *scr, *bt_bx, *bx, *ck_bx,
*lb, *ck, *bt_cancel, *bt_save;
g->save_inwin = elm_win_inwin_add(g->win);
evas_object_show(g->save_inwin);
bx = elm_box_add(g->save_inwin);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
lb = elm_label_add(g->save_inwin);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.0);
elm_object_text_set(lb, "Select Screeenshots to save:");
elm_box_pack_end(bx, lb);
evas_object_show(lb);
/* Add checkboxes to select screenshots to save */
ck_bx = elm_box_add(g->save_inwin);
Eina_List *l;
app_info_st *a = g->sel_app->app->data;
tree_data_st *td = g->sel_app->td->data;
bmp_info_st *bmp;
Tree_Item *treeit;
char buf[256];
EINA_LIST_FOREACH(td->tree, l, treeit)
{ /* First search app->view list if already have the window bmp */
Variant_st *v = (Variant_st *)
eina_list_search_unsorted(a->view, _bmp_object_ptr_cmp,
(void *) (uintptr_t) treeit->ptr);
bmp = (v) ? v->data : NULL;
ck = elm_check_add(g->save_inwin);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 1.0);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.0);
elm_box_pack_end(ck_bx, ck);
elm_object_disabled_set(ck, !(bmp && bmp->bmp));
evas_object_data_set(ck, BMP_FIELD, bmp); /* Associate ck with bmp */
snprintf(buf, sizeof(buf), "%p %s", treeit->ptr, treeit->name);
elm_object_text_set(ck, buf);
evas_object_show(ck);
}
evas_object_show(ck_bx);
scr = elm_scroller_add(g->save_inwin);
elm_object_content_set(scr, ck_bx);
evas_object_size_hint_align_set(scr, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(scr);
elm_box_pack_end(bx, scr);
/* Add the save all checkbox */
ck = elm_check_add(g->save_inwin);
elm_object_text_set(ck, "Save All");
evas_object_smart_callback_add(ck, "changed", _save_all, ck_bx);
evas_object_show(ck);
elm_box_pack_end(bx, ck);
bt_bx = elm_box_add(g->save_inwin);
elm_box_horizontal_set(bt_bx, EINA_TRUE);
elm_box_homogeneous_set(bt_bx, EINA_TRUE);
evas_object_size_hint_align_set(bt_bx, 0.5, 1.0);
evas_object_size_hint_weight_set(bt_bx, EVAS_HINT_EXPAND, 0.0);
evas_object_show(bt_bx);
elm_box_pack_end(bx, bt_bx);
/* Add the cancel button */
bt_cancel = elm_button_add(g->save_inwin);
elm_object_text_set(bt_cancel, "Cancel");
evas_object_smart_callback_add(bt_cancel, "clicked",
_dismiss_save_dialog, g);
elm_box_pack_end(bt_bx, bt_cancel);
evas_object_show(bt_cancel);
/* Add the Save fileselector button */
bt_save = elm_fileselector_button_add(g->save_inwin);
elm_fileselector_button_is_save_set(bt_save, EINA_TRUE);
elm_box_pack_end(bt_bx, bt_save);
elm_object_text_set(bt_save, "Save File");
elm_fileselector_button_path_set(bt_save, getenv("HOME"));
evas_object_smart_callback_add(bt_save, "file,chosen",
_bt_save_file, elm_box_children_get(ck_bx));
elm_box_pack_end(bt_bx, bt_save);
evas_object_show(bt_save);
elm_win_inwin_content_set(g->save_inwin, bx);
/* END - Popup to save eet file */
} }
static void static void
@ -1171,14 +1312,14 @@ _show_gui(gui_elements *g, Eina_Bool work_offline)
elm_object_text_set(g->bt_load, "Load Tree"); elm_object_text_set(g->bt_load, "Load Tree");
evas_object_smart_callback_add(g->bt_load, "clicked", _bt_clicked, g); evas_object_smart_callback_add(g->bt_load, "clicked", _bt_clicked, g);
/* Add the Save button to open save dialog */
g->bt_save = elm_button_add(g->win);
elm_object_text_set(g->bt_save, "SAVE");
evas_object_smart_callback_add(g->bt_save, "clicked",
_save_file_dialog, (void *) gui);
g->bt_save = elm_fileselector_button_add(g->win);
elm_fileselector_button_is_save_set(g->bt_save, EINA_TRUE);
elm_box_pack_end(g->hbx, g->bt_save); elm_box_pack_end(g->hbx, g->bt_save);
elm_object_text_set(g->bt_save, "Save File"); evas_object_show(g->bt_save);
elm_fileselector_button_path_set(g->bt_save, getenv("HOME"));
evas_object_smart_callback_add(g->bt_save, "file,chosen",
_bt_save_file, g);
elm_object_disabled_set(g->bt_load, (g->sel_app == NULL)); elm_object_disabled_set(g->bt_load, (g->sel_app == NULL));
elm_object_disabled_set(g->bt_save, (g->sel_app == NULL)); elm_object_disabled_set(g->bt_save, (g->sel_app == NULL));
@ -1373,14 +1514,14 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
ecore_ipc_init(); ecore_ipc_init();
/* START - Popup to get IP, PORT from user */ /* START - Popup to get IP, PORT from user */
gui->inwin = elm_win_inwin_add(win); gui->connect_inwin = elm_win_inwin_add(win);
evas_object_show(gui->inwin); evas_object_show(gui->connect_inwin);
bxx = elm_box_add(gui->inwin); bxx = elm_box_add(gui->connect_inwin);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bxx); evas_object_show(bxx);
lb = elm_label_add(gui->inwin); lb = elm_label_add(gui->connect_inwin);
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.0); evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.0);
elm_object_text_set(lb, "Enter remote address[:port]"); elm_object_text_set(lb, "Enter remote address[:port]");
@ -1388,12 +1529,12 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
evas_object_show(lb); evas_object_show(lb);
/* Single line selected entry */ /* Single line selected entry */
gui->en = elm_entry_add(gui->inwin); gui->en = elm_entry_add(gui->connect_inwin);
elm_entry_scrollable_set(gui->en, EINA_TRUE); elm_entry_scrollable_set(gui->en, EINA_TRUE);
evas_object_size_hint_weight_set(gui->en, evas_object_size_hint_weight_set(gui->en,
EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gui->en, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(gui->en, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_style_set(gui->inwin, "minimal_vertical"); elm_object_style_set(gui->connect_inwin, "minimal_vertical");
elm_entry_scrollbar_policy_set(gui->en, ELM_SCROLLER_POLICY_OFF, elm_entry_scrollbar_policy_set(gui->en, ELM_SCROLLER_POLICY_OFF,
ELM_SCROLLER_POLICY_OFF); ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(gui->en, LOCALHOST); elm_object_text_set(gui->en, LOCALHOST);
@ -1402,7 +1543,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
elm_box_pack_end(bxx, gui->en); elm_box_pack_end(bxx, gui->en);
evas_object_show(gui->en); evas_object_show(gui->en);
bt_bx = elm_box_add(gui->inwin); bt_bx = elm_box_add(gui->connect_inwin);
elm_box_horizontal_set(bt_bx, EINA_TRUE); elm_box_horizontal_set(bt_bx, EINA_TRUE);
elm_box_homogeneous_set(bt_bx, EINA_TRUE); elm_box_homogeneous_set(bt_bx, EINA_TRUE);
evas_object_size_hint_align_set(bt_bx, 0.5, 0.5); evas_object_size_hint_align_set(bt_bx, 0.5, 0.5);
@ -1411,7 +1552,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
elm_box_pack_end(bxx, bt_bx); elm_box_pack_end(bxx, bt_bx);
/* Add the cancel button */ /* Add the cancel button */
bt_cancel = elm_button_add(gui->inwin); bt_cancel = elm_button_add(gui->connect_inwin);
elm_object_text_set(bt_cancel, "Cancel"); elm_object_text_set(bt_cancel, "Cancel");
evas_object_smart_callback_add(bt_cancel, "clicked", evas_object_smart_callback_add(bt_cancel, "clicked",
_cancel_bt_clicked, (void *) gui); _cancel_bt_clicked, (void *) gui);
@ -1420,7 +1561,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
evas_object_show(bt_cancel); evas_object_show(bt_cancel);
/* Add the OK button */ /* Add the OK button */
bt_ok = elm_button_add(gui->inwin); bt_ok = elm_button_add(gui->connect_inwin);
elm_object_text_set(bt_ok, "OK"); elm_object_text_set(bt_ok, "OK");
evas_object_smart_callback_add(bt_ok, "clicked", evas_object_smart_callback_add(bt_ok, "clicked",
_ok_bt_clicked, (void *) gui); _ok_bt_clicked, (void *) gui);
@ -1428,7 +1569,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
elm_box_pack_end(bt_bx, bt_ok); elm_box_pack_end(bt_bx, bt_ok);
evas_object_show(bt_ok); evas_object_show(bt_ok);
bt_ofl = elm_button_add(gui->inwin); bt_ofl = elm_button_add(gui->connect_inwin);
elm_object_text_set(bt_ofl, "Work Offline"); elm_object_text_set(bt_ofl, "Work Offline");
evas_object_smart_callback_add(bt_ofl, "clicked", evas_object_smart_callback_add(bt_ofl, "clicked",
_ofl_bt_clicked, (void *) gui); _ofl_bt_clicked, (void *) gui);
@ -1436,7 +1577,7 @@ elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
elm_box_pack_end(bt_bx, bt_ofl); elm_box_pack_end(bt_bx, bt_ofl);
evas_object_show(bt_ofl); evas_object_show(bt_ofl);
elm_win_inwin_content_set(gui->inwin, bxx); elm_win_inwin_content_set(gui->connect_inwin, bxx);
/* END - Popup to get IP, PORT from user */ /* END - Popup to get IP, PORT from user */
elm_run(); elm_run();

View File

@ -207,6 +207,21 @@ bmp_info_desc_make(void)
return d; return d;
} }
Eet_Data_Descriptor *
shot_list_desc_make(void)
{
Eet_Data_Descriptor *d;
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, shot_list_st);
d = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_LIST (d, shot_list_st,
"view", view, desc->bmp_info); /* Carefull - init this first */
return d;
}
Eet_Data_Descriptor * Eet_Data_Descriptor *
tree_data_desc_make(void) tree_data_desc_make(void)
{ {
@ -318,6 +333,7 @@ data_descriptors_init(void)
desc->bmp_req = bmp_req_desc_make(); desc->bmp_req = bmp_req_desc_make();
desc->bmp_info = bmp_info_desc_make(); desc->bmp_info = bmp_info_desc_make();
desc->shot_list = shot_list_desc_make();
desc->obj_info = Obj_Information_desc_make(); desc->obj_info = Obj_Information_desc_make();
desc->tree = tree_item_desc_make(); desc->tree = tree_item_desc_make();
desc->connect = connect_desc_make(); desc->connect = connect_desc_make();
@ -388,6 +404,7 @@ data_descriptors_shutdown(void)
eet_data_descriptor_free(desc->_variant_unified_descriptor); eet_data_descriptor_free(desc->_variant_unified_descriptor);
eet_data_descriptor_free(desc->bmp_req); eet_data_descriptor_free(desc->bmp_req);
eet_data_descriptor_free(desc->bmp_info); eet_data_descriptor_free(desc->bmp_info);
eet_data_descriptor_free(desc->shot_list);
free(desc); free(desc);
desc = NULL; desc = NULL;
@ -500,8 +517,9 @@ packet_info_get(void *data, int size)
} }
} }
Eina_Bool eet_info_save(const char *filename, Eina_Bool
app_info_st *a, tree_data_st *ftd) eet_info_save(const char *filename,
app_info_st *a, tree_data_st *ftd, Eina_List *ck_list)
{ {
data_desc *d = data_descriptors_init(); data_desc *d = data_descriptors_init();
Eet_File *fp = eet_open(filename, EET_FILE_MODE_WRITE); Eet_File *fp = eet_open(filename, EET_FILE_MODE_WRITE);
@ -510,6 +528,31 @@ Eina_Bool eet_info_save(const char *filename,
eet_data_write(fp, d->app_add, APP_ADD_ENTRY, a, EINA_TRUE); eet_data_write(fp, d->app_add, APP_ADD_ENTRY, a, EINA_TRUE);
eet_data_write(fp, d->tree_data, TREE_DATA_ENTRY, ftd, EINA_TRUE); eet_data_write(fp, d->tree_data, TREE_DATA_ENTRY, ftd, EINA_TRUE);
/* Build list of (bmp_info_st *) according to user selection */
shot_list_st t;
Eina_List *l;
Evas_Object *ck;
t.view = NULL;
EINA_LIST_FOREACH(ck_list, l , ck)
if (elm_check_state_get(ck) && evas_object_data_get(ck, BMP_FIELD))
t.view = eina_list_append(t.view,
evas_object_data_get(ck, BMP_FIELD));
if (t.view)
{ /* Write list and bitmaps */
char buf[1024];
bmp_info_st *st = NULL;
eet_data_write(fp, d->shot_list, BMP_LIST_ENTRY, &t, EINA_TRUE);
EINA_LIST_FOREACH(t.view, l , st)
{
sprintf(buf, "%s/%llx", BMP_DATA_ENTRY, st->object);
eet_data_image_write(fp, buf,
st->bmp, st->w, st->h, 1, 0, 100, 0);
}
eina_list_free(t.view);
}
eet_close(fp); eet_close(fp);
return EINA_TRUE; return EINA_TRUE;
@ -527,7 +570,33 @@ Eina_Bool eet_info_read(const char *filename,
{ {
*a = eet_data_read(fp, d->app_add, APP_ADD_ENTRY); *a = eet_data_read(fp, d->app_add, APP_ADD_ENTRY);
*ftd = eet_data_read(fp, d->tree_data, TREE_DATA_ENTRY); *ftd = eet_data_read(fp, d->tree_data, TREE_DATA_ENTRY);
shot_list_st *t = eet_data_read(fp, d->shot_list, BMP_LIST_ENTRY);
if (t->view)
{
Eina_List *l;
bmp_info_st *st = NULL;
EINA_LIST_FOREACH(t->view, l , st)
{
char buf[1024];
int alpha;
int compress;
int quality;
int lossy;
sprintf(buf, "%s/%llx", BMP_DATA_ENTRY, st->object);
st->bmp = eet_data_image_read(fp, buf,
(unsigned int *) &st->w, (unsigned int *) &st->h,
&alpha, &compress, &quality, &lossy);
/* Add the bitmaps to the actuall app data struct */
Variant_st *v = variant_alloc(BMP_DATA, sizeof(*st), st);
(*a)->view = eina_list_append((*a)->view, v);
}
eina_list_free(t->view);
}
free(t);
eet_close(fp); eet_close(fp);
return EINA_TRUE; return EINA_TRUE;

View File

@ -2,8 +2,11 @@
#define EET_DATA_H #define EET_DATA_H
#include "libclouseau.h" #include "libclouseau.h"
/* Global constants */ /* Global constants */
#define APP_ADD_ENTRY "add_add_entry" #define APP_ADD_ENTRY "/clouseau/app"
#define TREE_DATA_ENTRY "tree_data_entry" #define TREE_DATA_ENTRY "/clouseau/app/tree"
#define BMP_LIST_ENTRY "/clouseau/app/shot_list"
#define BMP_DATA_ENTRY "/clouseau/app/screenshot"
#define BMP_FIELD "bmp"
#define PORT (22522) #define PORT (22522)
#define MAX_LINE (1023) #define MAX_LINE (1023)
@ -136,12 +139,18 @@ struct _eet_message_type_mapping
}; };
typedef struct _eet_message_type_mapping eet_message_type_mapping; typedef struct _eet_message_type_mapping eet_message_type_mapping;
struct _shot_list_st
{ /* This will be used to write a shot list to eet file */
Eina_List *view; /* Screen views eahc is (bmp_info_st *) ptr */
};
typedef struct _shot_list_st shot_list_st;
struct _data_desc struct _data_desc
{ {
Eet_Data_Descriptor *bmp_data; Eet_Data_Descriptor *bmp_data;
Eet_Data_Descriptor *bmp_req; Eet_Data_Descriptor *bmp_req;
Eet_Data_Descriptor *bmp_info; Eet_Data_Descriptor *bmp_info;
Eet_Data_Descriptor *shot_list;
Eet_Data_Descriptor *connect; Eet_Data_Descriptor *connect;
Eet_Data_Descriptor *app_add; Eet_Data_Descriptor *app_add;
Eet_Data_Descriptor *data_req; Eet_Data_Descriptor *data_req;
@ -162,6 +171,7 @@ Eet_Data_Descriptor *data_req_desc_make(void);
Eet_Data_Descriptor *bmp_req_desc_make(void); Eet_Data_Descriptor *bmp_req_desc_make(void);
Eet_Data_Descriptor *bmp_data_desc_make(void); Eet_Data_Descriptor *bmp_data_desc_make(void);
Eet_Data_Descriptor *bmp_info_desc_make(void); Eet_Data_Descriptor *bmp_info_desc_make(void);
Eet_Data_Descriptor *shot_list_desc_make(void);
Eet_Data_Descriptor *tree_data_desc_make(void); Eet_Data_Descriptor *tree_data_desc_make(void);
Eet_Data_Descriptor *app_closed_desc_make(void); Eet_Data_Descriptor *app_closed_desc_make(void);
Eet_Data_Descriptor *highlight_desc_make(void); Eet_Data_Descriptor *highlight_desc_make(void);
@ -180,7 +190,7 @@ message_type packet_mapping_type_get(const char *name);
const char *packet_mapping_type_str_get(message_type t); const char *packet_mapping_type_str_get(message_type t);
void *packet_compose(message_type t, void *data, int data_size, int *size, void *blob, int blob_size); void *packet_compose(message_type t, void *data, int data_size, int *size, void *blob, int blob_size);
Variant_st *packet_info_get(void *data, int size); Variant_st *packet_info_get(void *data, int size);
Eina_Bool eet_info_save(const char *filename, app_info_st *app, tree_data_st *ftd); Eina_Bool eet_info_save(const char *filename, app_info_st *a, tree_data_st *ftd, Eina_List *ck_list);
Eina_Bool eet_info_read(const char *filename, app_info_st **app, tree_data_st **ftd); Eina_Bool eet_info_read(const char *filename, app_info_st **app, tree_data_st **ftd);
/* Highlight code, we may choose to move this to other file later */ /* Highlight code, we may choose to move this to other file later */