make terminology foward compatible with upcoming efl/elm 1.10

This commit is contained in:
Boris Faure 2014-05-17 11:01:07 +02:00
parent c5f6b7cfeb
commit 1b5c54d924
1 changed files with 50 additions and 34 deletions

View File

@ -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);