|
|
|
@ -6,7 +6,23 @@ |
|
|
|
|
#include "termio.h" |
|
|
|
|
#include "app_server_eet.h" |
|
|
|
|
|
|
|
|
|
#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR >= 8) |
|
|
|
|
#if (ELM_VERSION_MAJOR > 1) || (ELM_VERSION_MINOR >= 10) |
|
|
|
|
|
|
|
|
|
#ifndef ELM_APP_SERVER_VIEW_EVENT_CLOSED |
|
|
|
|
#define ELM_APP_SERVER_VIEW_EVENT_CLOSED ELM_APP_SERVER_VIEW_EV_CLOSED |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifndef ELM_APP_SERVER_VIEW_EVENT_RESUMED |
|
|
|
|
#define ELM_APP_SERVER_VIEW_EVENT_RESUMED ELM_APP_SERVER_VIEW_EV_RESUMED |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifndef ELM_APP_SERVER_VIEW_EVENT_SAVE |
|
|
|
|
#define ELM_APP_SERVER_VIEW_EVENT_SAVE ELM_APP_SERVER_VIEW_EV_SAVE |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifndef ELM_APP_SERVER_EVENT_TERMINATE |
|
|
|
|
#define ELM_APP_SERVER_EVENT_TERMINATE ELM_APP_SERVER_EV_TERMINATE |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
static Elm_App_Server *_server = NULL; |
|
|
|
|
static Eina_Bool _ignore_term_add = EINA_FALSE; |
|
|
|
@ -31,13 +47,13 @@ void |
|
|
|
|
app_server_term_del(Evas_Object *term) |
|
|
|
|
{ |
|
|
|
|
Elm_App_Server_View *view; |
|
|
|
|
const char *id; |
|
|
|
|
const char *id = NULL; |
|
|
|
|
|
|
|
|
|
view = evas_object_data_del(term, "app_view"); |
|
|
|
|
if (!view) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
eo_do(view, elm_app_server_view_id_get(&id)); |
|
|
|
|
eo_do(view, id = elm_app_server_view_id_get()); |
|
|
|
|
terminology_item_term_entries_del(views_eet, id); |
|
|
|
|
|
|
|
|
|
eo_del(view); |
|
|
|
@ -49,7 +65,7 @@ _view_closed_cb(void *data, Eo *view, |
|
|
|
|
void *event_info EINA_UNUSED) |
|
|
|
|
{ |
|
|
|
|
Term *term = data; |
|
|
|
|
const char *id; |
|
|
|
|
const char *id = NULL; |
|
|
|
|
|
|
|
|
|
if (term) |
|
|
|
|
{ |
|
|
|
@ -61,7 +77,7 @@ _view_closed_cb(void *data, Eo *view, |
|
|
|
|
term_object); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
eo_do(view, elm_app_server_view_id_get(&id)); |
|
|
|
|
eo_do(view, id = elm_app_server_view_id_get()); |
|
|
|
|
terminology_item_term_entries_del(views_eet, id); |
|
|
|
|
|
|
|
|
|
eo_del(view); |
|
|
|
@ -92,7 +108,7 @@ _view_save_cb(void *data EINA_UNUSED, |
|
|
|
|
{ |
|
|
|
|
char dir[PATH_MAX]; |
|
|
|
|
Evas_Object *term_object; |
|
|
|
|
const char *id; |
|
|
|
|
const char *id = NULL; |
|
|
|
|
Term_Item *term_eet; |
|
|
|
|
|
|
|
|
|
term_object = main_term_evas_object_get(data); |
|
|
|
@ -104,7 +120,7 @@ _view_save_cb(void *data EINA_UNUSED, |
|
|
|
|
evas_object_data_del(term_object, "app_view"); |
|
|
|
|
|
|
|
|
|
termio_cwd_get(term_object, dir, sizeof(dir)); |
|
|
|
|
eo_do(view, elm_app_server_view_id_get(&id)); |
|
|
|
|
eo_do(view, id = elm_app_server_view_id_get()); |
|
|
|
|
|
|
|
|
|
term_eet = terminology_item_term_entries_get(views_eet, id); |
|
|
|
|
if (term_eet) |
|
|
|
@ -126,8 +142,8 @@ _view_resumed_cb(void *data, Eo *view, |
|
|
|
|
{ |
|
|
|
|
Term *term = data; |
|
|
|
|
Win *wn; |
|
|
|
|
Eina_List **wins; |
|
|
|
|
const char *title, *id; |
|
|
|
|
Eina_List **wins = NULL; |
|
|
|
|
const char *title, *id = NULL; |
|
|
|
|
Evas_Object *term_object; |
|
|
|
|
const char *dir = NULL; |
|
|
|
|
Term_Item *term_eet; |
|
|
|
@ -138,9 +154,8 @@ _view_resumed_cb(void *data, Eo *view, |
|
|
|
|
return EINA_TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
eo_do(_server, eo_base_data_get("wins", (void **)&wins)); |
|
|
|
|
wn = eina_list_data_get(*wins); |
|
|
|
|
if (!wn) |
|
|
|
|
eo_do(_server, wins = eo_key_data_get("wins")); |
|
|
|
|
if (!wins || !(wn = eina_list_data_get(*wins))) |
|
|
|
|
{ |
|
|
|
|
ERR("There is no window open"); |
|
|
|
|
return EINA_TRUE; |
|
|
|
@ -148,7 +163,7 @@ _view_resumed_cb(void *data, Eo *view, |
|
|
|
|
|
|
|
|
|
term = eina_list_data_get(main_win_terms_get(wn)); |
|
|
|
|
|
|
|
|
|
eo_do(view, elm_app_server_view_id_get(&id)); |
|
|
|
|
eo_do(view, id = elm_app_server_view_id_get()); |
|
|
|
|
term_eet = terminology_item_term_entries_get(views_eet, id); |
|
|
|
|
if (term_eet) |
|
|
|
|
{ |
|
|
|
@ -179,15 +194,15 @@ _view_resumed_cb(void *data, Eo *view, |
|
|
|
|
eo_do(view, elm_app_server_view_title_set(title), |
|
|
|
|
elm_app_server_view_window_set( |
|
|
|
|
main_win_evas_object_get(main_term_win_get(term))), |
|
|
|
|
eo_event_callback_del(ELM_APP_SERVER_VIEW_EV_CLOSED, _view_closed_cb, |
|
|
|
|
eo_event_callback_del(ELM_APP_SERVER_VIEW_EVENT_CLOSED, _view_closed_cb, |
|
|
|
|
NULL), |
|
|
|
|
eo_event_callback_del(ELM_APP_SERVER_VIEW_EV_RESUMED, _view_resumed_cb, |
|
|
|
|
eo_event_callback_del(ELM_APP_SERVER_VIEW_EVENT_RESUMED, _view_resumed_cb, |
|
|
|
|
NULL), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_CLOSED, _view_closed_cb, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_CLOSED, _view_closed_cb, |
|
|
|
|
term), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_RESUMED, _view_resumed_cb, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_RESUMED, _view_resumed_cb, |
|
|
|
|
term), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_SAVE, _view_save_cb, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_SAVE, _view_save_cb, |
|
|
|
|
term)); |
|
|
|
|
|
|
|
|
|
evas_object_smart_callback_add(term_object, "title,change", |
|
|
|
@ -245,14 +260,14 @@ app_server_win_del_request_cb(void *data EINA_UNUSED, |
|
|
|
|
Evas_Object *obj EINA_UNUSED, |
|
|
|
|
void *event_info EINA_UNUSED) |
|
|
|
|
{ |
|
|
|
|
Eina_List **wins; |
|
|
|
|
Eina_List **wins = NULL; |
|
|
|
|
|
|
|
|
|
if (!_server) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
eo_do(_server, eo_base_data_get("wins", (void **)&wins)); |
|
|
|
|
eo_do(_server, wins = eo_key_data_get("wins")); |
|
|
|
|
|
|
|
|
|
if (eina_list_count(*wins) > 1) |
|
|
|
|
if (wins && eina_list_count(*wins) > 1) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -283,11 +298,11 @@ _app_server_term_add(Term *term) |
|
|
|
|
elm_app_server_view_window_set( |
|
|
|
|
main_win_evas_object_get(main_term_win_get(term))), |
|
|
|
|
elm_app_server_view_resume(), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_CLOSED, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_CLOSED, |
|
|
|
|
_view_closed_cb, term), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_RESUMED, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_RESUMED, |
|
|
|
|
_view_resumed_cb, term), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_SAVE, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_SAVE, |
|
|
|
|
_view_save_cb, term)); |
|
|
|
|
|
|
|
|
|
evas_object_smart_callback_add(term_object, "title,change", |
|
|
|
@ -321,11 +336,10 @@ _app_server_create_view_cb(Elm_App_Server *server, const Eina_Value *args EINA_U |
|
|
|
|
{ |
|
|
|
|
Win *wn; |
|
|
|
|
Term *term; |
|
|
|
|
Eina_List **wins; |
|
|
|
|
Eina_List **wins = NULL; |
|
|
|
|
|
|
|
|
|
eo_do(server, eo_base_data_get("wins", (void **)&wins)); |
|
|
|
|
wn = eina_list_data_get(*wins); |
|
|
|
|
if (!wn) |
|
|
|
|
eo_do(server, wins = eo_key_data_get("wins")); |
|
|
|
|
if (!wins || !(wn = eina_list_data_get(*wins))) |
|
|
|
|
{ |
|
|
|
|
ERR("There is no window open"); |
|
|
|
|
*error_name = eina_stringshare_add("There is no window open"); |
|
|
|
@ -355,12 +369,14 @@ void |
|
|
|
|
app_server_init(Eina_List **wins, Eina_Bool restore_views) |
|
|
|
|
{ |
|
|
|
|
Win *wn; |
|
|
|
|
Eina_Iterator *views; |
|
|
|
|
Eina_Iterator *views = NULL; |
|
|
|
|
Elm_App_Server_View *view; |
|
|
|
|
const char *title; |
|
|
|
|
char lock_file[PATH_MAX], eet_dir[PATH_MAX]; |
|
|
|
|
FILE *f; |
|
|
|
|
|
|
|
|
|
if (!wins) |
|
|
|
|
return; |
|
|
|
|
wn = eina_list_data_get(*wins); |
|
|
|
|
if (!wn) |
|
|
|
|
return; |
|
|
|
@ -392,9 +408,9 @@ app_server_init(Eina_List **wins, Eina_Bool restore_views) |
|
|
|
|
_app_server_create_view_cb)); |
|
|
|
|
|
|
|
|
|
eo_do(_server, elm_app_server_title_set(title), |
|
|
|
|
eo_base_data_set("wins", wins, NULL), |
|
|
|
|
elm_app_server_views_get(&views), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_EV_TERMINATE, |
|
|
|
|
eo_key_data_set("wins", wins, NULL), |
|
|
|
|
views = elm_app_server_views_get(), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_EVENT_TERMINATE, |
|
|
|
|
_server_terminate_cb, wins)); |
|
|
|
|
//views saved
|
|
|
|
|
EINA_ITERATOR_FOREACH(views, view) |
|
|
|
@ -402,9 +418,9 @@ app_server_init(Eina_List **wins, Eina_Bool restore_views) |
|
|
|
|
if (restore_views) |
|
|
|
|
ecore_idler_add(_restore_view_cb, view); |
|
|
|
|
eo_do(view, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_CLOSED, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_CLOSED, |
|
|
|
|
_view_closed_cb, NULL), |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EV_RESUMED, |
|
|
|
|
eo_event_callback_add(ELM_APP_SERVER_VIEW_EVENT_RESUMED, |
|
|
|
|
_view_resumed_cb, NULL)); |
|
|
|
|
} |
|
|
|
|
eina_iterator_free(views); |
|
|
|
|