enventor - implementing group view switching.

This commit is contained in:
ChunEon Park 2013-09-18 16:48:05 +09:00
parent f6f95b5d31
commit 2e91d7700b
5 changed files with 94 additions and 15 deletions

View File

@ -23,7 +23,8 @@ enventor_SOURCES = \
ctxpopup.c \
syntax_helper.c \
indent.c \
globals.c
edj_mgr.c \
globals.c
# QuickLaunch
enventorql_SOURCES = $(enventor_SOURCES)

View File

@ -433,7 +433,6 @@ program_run(edit_data *ed, char *cur)
}
}
//This function is called when user press up/down key or mouse wheel up/down
static void
preview_img_relay_show(edit_data *ed, Evas_Object *ctxpopup, Eina_Bool next)
@ -603,6 +602,15 @@ part_name_get_cb(void *data, Eina_Stringshare *part_name)
ed->part_changed_cb(ed->part_changed_cb_data, ed->part_name);
}
static void
group_name_get_cb(void *data, Eina_Stringshare *part_name)
{
edit_data *ed = data;
/* ed->part_name = part_name;
if (ed->part_changed_cb)
ed->part_changed_cb(ed->part_changed_cb_data, ed->part_name); */
}
void
edit_cur_part_update(edit_data *ed)
{
@ -611,12 +619,19 @@ edit_cur_part_update(edit_data *ed)
parser_part_name_get(ed->pd, ed->en_edit, part_name_get_cb, ed);
}
static void
edit_cur_group_update(edit_data *ed)
{
parser_group_name_get(ed->pd, ed->en_edit, group_name_get_cb, ed);
}
static void
edit_cursor_changed_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
edit_data *ed = data;
cur_line_pos_set(ed);
edit_cur_group_update(ed);
edit_cur_part_update(ed);
}
@ -798,7 +813,7 @@ edit_edc_read(edit_data *ed, const char *file_path)
ed->line_max = line_num;
if (ed->group_name) eina_stringshare_del(ed->group_name);
ed->group_name = parser_group_name_get(ed->pd, ed->en_edit);
ed->group_name = parser_first_group_name_get(ed->pd, ed->en_edit);
stats_edc_file_set(ed->sd, ed->group_name);
ecore_animator_add(syntax_color_animator_cb, ed);

View File

@ -14,15 +14,15 @@ typedef struct parser_attr_s
attr_value value;
} parser_attr;
typedef struct part_name_thread_data_s
typedef struct cur_name_thread_data_s
{
parser_data *pd;
char *utf8;
int cur_pos;
const char *part_name;
void (*cb)(void *data, Eina_Stringshare *part_name);
const char *cur_name;
void (*cb)(void *data, Eina_Stringshare *cur_name);
void *cb_data;
} part_name_td;
} cur_name_td;
static void
parser_type_init(parser_data *pd)
@ -276,7 +276,7 @@ parser_markup_escape(parser_data *pd EINA_UNUSED, const char *str)
static void
part_name_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
{
part_name_td *td = data;
cur_name_td *td = data;
char *utf8 = td->utf8;
int cur_pos = td->cur_pos;
@ -359,14 +359,14 @@ end:
free(utf8);
td->utf8 = NULL;
}
td->part_name = part_name;
td->cur_name = part_name;
}
static void
part_name_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
{
part_name_td *td = data;
Eina_Stringshare *part_name = td->part_name;
cur_name_td *td = data;
Eina_Stringshare *part_name = td->cur_name;
td->cb(td->cb_data, part_name);
td->pd->thread = NULL;
free(td);
@ -375,7 +375,7 @@ part_name_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
static void
part_name_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
{
part_name_td *td = data;
cur_name_td *td = data;
td->pd->thread = NULL;
if (td->utf8) free(td->utf8);
free(td);
@ -469,12 +469,19 @@ parser_paragh_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry)
return NULL;
}
void
parser_group_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *group_name), void *data)
{
}
void
parser_part_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *part_name), void *data)
{
if (pd->thread) ecore_thread_cancel(pd->thread);
part_name_td *td = calloc(1, sizeof(part_name_td));
cur_name_td *td = calloc(1, sizeof(cur_name_td));
if (!td) return;
Evas_Object *tb = elm_entry_textblock_get(entry);
@ -497,7 +504,7 @@ parser_part_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data,
}
Eina_Stringshare
*parser_group_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry)
*parser_first_group_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry)
{
Evas_Object *tb = elm_entry_textblock_get(entry);
char *text = (char *) evas_object_textblock_text_markup_get(tb);

51
src/bin/edj_mgr.c Normal file
View File

@ -0,0 +1,51 @@
#include <Elementary.h>
#include "common.h"
struct edj_mgr_s
{
Eina_List *vds;
};
edj_mgr *
edj_mgr_init()
{
edj_mgr *em = calloc(1, sizeof(edj_mgr));
return em;
}
void
edj_mgr_term(edj_mgr *em)
{
view_data *vd;
EINA_LIST_FREE(em->vds, vd)
view_term(vd);
free(em);
}
view_data *
edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
{
view_data *vd = NULL;
Eina_List *l;
EINA_LIST_FOREACH(em->vds, l, vd)
{
if (view_group_name_get(vd) == group)
return vd;
}
return NULL;
}
view_data *
edj_mgr_view_new(edj_mgr *em, Evas_Object *parent, const char *group,
stats_data *sd, config_data *cd)
{
view_data *vd = view_init(parent, group, sd, cd);
if (!vd) return NULL;
em->vds = eina_list_append(em->vds, vd);
return vd;
}

View File

@ -244,7 +244,6 @@ view_term(view_data *vd)
if (vd->part_obj)
evas_object_event_callback_del(vd->part_obj, EVAS_CALLBACK_DEL,
part_obj_del_cb);
free(vd);
}
@ -309,3 +308,9 @@ view_part_highlight_set(view_data *vd, const char *part_name)
eina_stringshare_replace(&vd->part_name, part_name);
part_obj_geom_cb(vd, evas_object_evas_get(vd->layout), part_obj, NULL);
}
Eina_Stringshare *
view_group_name_get(view_data *vd)
{
return vd->group_name;
}