implementing multi editor support.

this feature will be come gradually...
This commit is contained in:
Hermet Park 2016-05-18 23:38:18 +09:00
parent b6ffc80449
commit e16ff998b1
11 changed files with 78 additions and 30 deletions

View File

@ -359,5 +359,12 @@ base_enventor_set(Enventor_Object *enventor)
base_data *bd = g_bd;
assert(bd);
bd->enventor = enventor;
panes_text_editor_set(enventor);
}
void
base_text_editor_set(Enventor_Item *it)
{
base_data *bd = g_bd;
assert(bd);
panes_text_editor_set(enventor_item_editor_get(it));
}

View File

@ -53,7 +53,9 @@ warning_replace_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
file_mgr_data *fmd = data;
enventor_object_main_file_set(base_enventor_get(), config_input_path_get());
Enventor_Item *it = enventor_object_main_file_set(base_enventor_get(),
config_input_path_get());
base_text_editor_set(it);
warning_close(fmd);
}

View File

@ -565,9 +565,11 @@ enventor_setup(app_data *ad)
enventor_common_setup(enventor);
enventor_object_main_file_set(enventor, config_input_path_get());
Enventor_Item *it =
enventor_object_main_file_set(enventor, config_input_path_get());
base_enventor_set(enventor);
base_text_editor_set(it);
base_title_set(config_input_path_get());
base_live_view_set(enventor_object_live_view_get(enventor));
}

View File

@ -432,7 +432,8 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info)
eina_stringshare_del(selected);
return;
}
enventor_object_main_file_set(enventor, selected);
Enventor_Item *it = enventor_object_main_file_set(enventor, selected);
base_text_editor_set(it);
base_title_set(selected);
}
else if (is_edj)
@ -507,7 +508,9 @@ fileselector_load_done_cb(void *data, Evas_Object *obj, void *event_info)
return;
}
config_input_path_set(selected);
enventor_object_main_file_set(base_enventor_get(), selected);
Enventor_Item *it = enventor_object_main_file_set(base_enventor_get(),
selected);
base_text_editor_set(it);
base_title_set(selected);
base_console_reset();
fileselector_close(md);

View File

@ -57,7 +57,9 @@ newfile_set(Eina_Bool template_new)
EINA_LOG_ERR(_("Cannot find file! \"%s\""), buf);
return;
}
enventor_object_main_file_set(base_enventor_get(), path);
Enventor_Item *eit =
enventor_object_main_file_set(base_enventor_get(), path);
base_text_editor_set(eit);
base_title_set(path);
base_console_reset();
file_mgr_reset();

View File

@ -23,6 +23,8 @@ typedef struct _panes_data
{
pane_data horiz; //horizontal pane data (live view, text editor)
pane_data vert; //vertical pane data (editors, console)
Evas_Object *text_tool_layout;
Evas_Object *live_tool_layout;
} panes_data;
static panes_data *g_pd = NULL;
@ -283,30 +285,14 @@ void
panes_text_editor_set(Evas_Object *text_editor)
{
panes_data *pd = g_pd;
Evas_Object *base_layout = elm_layout_add(pd->horiz.obj);
elm_layout_file_set(base_layout, EDJE_PATH, "tools_layout");
evas_object_size_hint_weight_set(base_layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(base_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(base_layout, text_editor);
elm_object_part_content_set(pd->horiz.obj, "right", base_layout);
elm_object_content_set(pd->text_tool_layout, text_editor);
}
void
panes_live_view_set(Evas_Object *live_view)
{
panes_data *pd = g_pd;
Evas_Object *base_layout = elm_layout_add(pd->horiz.obj);
elm_layout_file_set(base_layout, EDJE_PATH, "tools_layout");
evas_object_size_hint_weight_set(base_layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(base_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(base_layout, live_view);
elm_object_part_content_set(pd->horiz.obj, "left", base_layout);
elm_object_content_set(pd->live_tool_layout, live_view);
}
void
@ -372,6 +358,28 @@ panes_init(Evas_Object *parent)
elm_panes_content_right_size_set(panes_h, config_editor_size_get());
elm_panes_content_right_size_set(panes_v, config_console_size_get());
//Text Tools
Evas_Object *text_tool_layout = elm_layout_add(pd->horiz.obj);
elm_layout_file_set(text_tool_layout, EDJE_PATH, "tools_layout");
evas_object_size_hint_weight_set(text_tool_layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(text_tool_layout, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_object_part_content_set(pd->horiz.obj, "right", text_tool_layout);
pd->text_tool_layout = text_tool_layout;
//Live Edit Tools
Evas_Object *live_tool_layout = elm_layout_add(pd->horiz.obj);
elm_layout_file_set(live_tool_layout, EDJE_PATH, "tools_layout");
evas_object_size_hint_weight_set(live_tool_layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(live_tool_layout, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_object_part_content_set(pd->horiz.obj, "left", live_tool_layout);
pd->live_tool_layout = live_tool_layout;
return panes_v;
}

View File

@ -21,6 +21,7 @@ void base_console_auto_hide(void);
void base_console_toggle(void);
void base_live_view_set(Evas_Object *live_view);
void base_enventor_set(Enventor_Object *enventor);
void base_text_editor_set(Enventor_Item *it);
void base_gui_term(void);
void base_console_reset(void);
void base_error_msg_set(const char *msg);

View File

@ -1,6 +1,10 @@
typedef struct _Enventor_Item_Data Enventor_Item;
EAPI Evas_Object *enventor_object_add(Evas_Object *parent);
//FIXME: Should be eofied.
EAPI Enventor_Item *enventor_object_main_file_set(Evas_Object *obj, const char *file);
EAPI Evas_Object *enventor_item_editor_get(const Enventor_Item *it);
#include "enventor_object.eo.legacy.h"

View File

@ -1407,8 +1407,6 @@ edit_init(Enventor_Object *enventor)
elm_object_focus_set(en_edit, EINA_TRUE);
elm_object_part_content_set(layout, "elm.swallow.edit", en_edit);
evas_object_smart_member_add(scroller, enventor);
ed->scroller = scroller;
ed->en_line = en_line;
ed->en_edit = en_edit;

View File

@ -727,15 +727,15 @@ _enventor_object_font_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
eina_stringshare_replace(&pd->font_style, font_style);
char *font = NULL;
if (font_name) font = elm_font_fontconfig_name_get(font_name, font_style);
if (font_name) font = elm_font_fontconfig_name_get(font_name, font_style);
elm_config_font_overlay_set("enventor_entry", font, -100);
elm_config_font_overlay_apply();
elm_config_save();
elm_font_fontconfig_name_free(font);
//Main Item
edit_font_update(pd->main_it.ed);
edit_font_update(pd->main_it.ed);
}
EOLIAN static void
@ -842,7 +842,8 @@ _enventor_object_template_part_insert(Eo *obj EINA_UNUSED,
char *rel2_x_to, char *rel2_y_to,
float align_x, float align_y,
int min_w, int min_h,
float rel1_x, float rel1_y, float rel2_x,float rel2_y,
float rel1_x, float rel1_y,
float rel2_x,float rel2_y,
char *syntax, size_t n)
{
// if mirror mode, exchange properties about left and right
@ -957,4 +958,14 @@ enventor_object_main_file_set(Enventor_Object *obj, const char *file)
return &pd->main_it;
}
Evas_Object *
enventor_item_editor_get(const Enventor_Item *it)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(it, NULL);
if (!it->ed) return NULL;
return edit_obj_get(it->ed);
}
#include "enventor_object.eo.c"

View File

@ -40,6 +40,14 @@ struct redoundo_s
/*****************************************************************************/
/* Internal method implementation */
/*****************************************************************************/
static void
entry_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
redoundo_data *rd = data;
rd->cursor = NULL;
}
Eina_Bool
_input_timer_cb(void *data)
{
@ -408,6 +416,8 @@ redoundo_init(edit_data *ed, Enventor_Object *enventor)
//FIXME: Why signal callback? not smart callback?
elm_object_signal_callback_add(rd->entry, "entry,changed,user", "*",
entry_changed_user_cb, rd);
evas_object_event_callback_add(entry, EVAS_CALLBACK_DEL,
entry_del_cb, rd);
return rd;
}