diff --git a/README b/README index ecc9a53..cd545c3 100644 --- a/README +++ b/README @@ -39,6 +39,7 @@ F7 - Toggle Tools F8 - Toggle Status F9 - Toggle File Browser F10 - Toggle EDC Navigator +F11 - Toggle File Tab F12 - Settings Ctrl+S - Quick Save + Update Live View diff --git a/data/themes/default/images.edc b/data/themes/default/images.edc index 9b09c24..20f0d92 100644 --- a/data/themes/default/images.edc +++ b/data/themes/default/images.edc @@ -10,7 +10,6 @@ images { image: "highlight.png" COMP; image: "lines.png" COMP; image: "console.png" COMP; - image: "status.png" COMP; image: "dummy.png" COMP; image: "mirror.png" COMP; image: "goto.png" COMP; @@ -46,6 +45,9 @@ images { image: "brows_font.png" COMP; image: "template.png" COMP; image: "part_outline.png" COMP; + image: "left.png" COMP; + image: "right.png" COMP; + image: "filetab.png" COMP; } #define ICON_GROUP(_group_name, _image_path) \ @@ -64,7 +66,6 @@ ICON_GROUP("find", "find.png") ICON_GROUP("highlight", "highlight.png") ICON_GROUP("lines", "lines.png") ICON_GROUP("console", "console.png") -ICON_GROUP("status", "status.png") ICON_GROUP("dummy", "dummy.png") ICON_GROUP("mirror", "mirror.png") ICON_GROUP("up", "slider_up.png") @@ -105,5 +106,8 @@ ICON_GROUP("brows_sound", "brows_sound.png") ICON_GROUP("brows_font", "brows_font.png") ICON_GROUP("template", "template.png") ICON_GROUP("part_outline", "part_outline.png") +ICON_GROUP("left_arrow", "left.png") +ICON_GROUP("right_arrow", "right.png") +ICON_GROUP("filetab", "filetab.png") #undef ICON_GROUP diff --git a/data/themes/default/images/Makefile.am b/data/themes/default/images/Makefile.am index 4540b8d..717c0a9 100644 --- a/data/themes/default/images/Makefile.am +++ b/data/themes/default/images/Makefile.am @@ -45,7 +45,6 @@ EXTRA_DIST = \ lines.png \ setting_icon.png \ console.png \ - status.png \ dummy.png \ mirror.png \ goto.png \ @@ -94,4 +93,7 @@ EXTRA_DIST = \ brows_image.png \ brows_sound.png \ brows_font.png \ - template.png + template.png \ + left.png \ + right.png \ + filetab.png diff --git a/data/themes/default/images/filetab.png b/data/themes/default/images/filetab.png new file mode 100644 index 0000000..10bdb97 Binary files /dev/null and b/data/themes/default/images/filetab.png differ diff --git a/data/themes/default/images/left.png b/data/themes/default/images/left.png new file mode 100644 index 0000000..6f9fbc6 Binary files /dev/null and b/data/themes/default/images/left.png differ diff --git a/data/themes/default/images/right.png b/data/themes/default/images/right.png new file mode 100644 index 0000000..759af1f Binary files /dev/null and b/data/themes/default/images/right.png differ diff --git a/data/themes/default/layout_common.edc b/data/themes/default/layout_common.edc index 4e7d126..898b024 100644 --- a/data/themes/default/layout_common.edc +++ b/data/themes/default/layout_common.edc @@ -1772,6 +1772,11 @@ group { "colorselector_layout"; group { "statusbar_layout"; parts { + rect { "bg"; + desc { "default"; + color: 64 64 64 255; + } + } rect { "base_clip"; desc { "default"; color: 255 255 255 255; @@ -2309,7 +2314,7 @@ group { "main_layout"; spacer { "base"; scale: 1; desc { - min: 810 440; + min: 810 475; } } swallow { "elm.swallow.panes"; @@ -2322,7 +2327,7 @@ group { "main_layout"; rel2 { relative: 0.0 0.0; to_x: "elm.swallow.edc_navigator"; - to_y: "elm.swallow.statusbar"; + to_y: "elm.swallow.file_tab"; } } } @@ -2338,6 +2343,31 @@ group { "main_layout"; color: 200 0 0 175; } } + swallow { "elm.swallow.file_tab"; + scale: 1; + desc { "default"; + rel1 { to: "elm.swallow.statusbar"; relative: 0 0; } + rel2 { to: "elm.swallow.statusbar"; relative: 1 0; } + align: 0.5 0; + min: 0 22; + fixed: 0 1; + } + desc { "visible"; + inherit: "default"; + align: 0.5 1; + } + } + rect { "separator"; + scale: 1; + desc { "default"; + rel1 { to: "elm.swallow.file_tab"; relative: 0 1; offset: 0 -2; } + rel2 { to: "elm.swallow.file_tab"; relative: 1 1; offset: -1 -3; } + align: 0.5 0; + min: 0 1; + fixed: 0 1; + color: 50 50 50 100; + } + } swallow { "elm.swallow.statusbar"; scale: 1; desc { "default"; @@ -2360,7 +2390,7 @@ group { "main_layout"; } rel2 { relative: 0.0 0.0; - to_y: "elm.swallow.statusbar"; + to_y: "elm.swallow.file_tab"; } align: 1 0; min: 200 0; @@ -2381,7 +2411,7 @@ group { "main_layout"; } rel2 { relative: 1.0 0.0; - to_y: "elm.swallow.statusbar"; + to_y: "elm.swallow.file_tab"; } align: 0 0; min: 200 0; @@ -2397,7 +2427,7 @@ group { "main_layout"; } rel2 { relative: 1.0 0.0; - to_y: "elm.swallow.statusbar"; + to_y: "elm.swallow.file_tab"; } visible: 1; } @@ -2440,6 +2470,18 @@ group { "main_layout"; target: "elm.swallow.statusbar"; transition: DECELERATE 0.25; } + program { "file_tab_show"; + signal: "elm,state,file_tab,show"; + action: STATE_SET "visible"; + target: "elm.swallow.file_tab"; + transition: DECELERATE 0.25; + } + program { "file_tab_hide"; + signal: "elm,state,file_tab,hide"; + action: STATE_SET "default"; + target: "elm.swallow.file_tab"; + transition: DECELERATE 0.25; + } program { "alert_show"; signal: "elm,state,alert,show"; action: STATE_SET "visible"; @@ -3028,7 +3070,7 @@ group { "text_editor_tools_layout"; align: 1.0 0.5; } } - swallow { "elm.swallow.status"; + swallow { "elm.swallow.file_tab"; scale: 1; desc { "default"; rel.to: "padding10"; @@ -3040,7 +3082,7 @@ group { "text_editor_tools_layout"; spacer { "padding11"; scale: 1; desc { "default"; - rel.to: "elm.swallow.status"; + rel.to: "elm.swallow.file_tab"; rel2.relative: 0.0 1.0; min: 8 0; fixed: 1 0; diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 52bf3ed..4108157 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -33,7 +33,8 @@ enventor_SOURCES = \ file_browser.c \ build_setting.c \ preference_setting.c \ - help.c + help.c \ + file_tab.c enventor_LDADD = \ $(top_builddir)/src/lib/libenventor.la \ diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c index 686993a..9d80dcd 100644 --- a/src/bin/base_gui.c +++ b/src/bin/base_gui.c @@ -82,6 +82,20 @@ base_statusbar_toggle(Eina_Bool toggle) elm_object_signal_emit(bd->layout, "elm,state,statusbar,hide", ""); } +void +base_file_tab_toggle(Eina_Bool toggle) +{ + base_data *bd = g_bd; + assert(bd); + + if (toggle) config_file_tab_set(!config_file_tab_get()); + + if (config_file_tab_get()) + elm_object_signal_emit(bd->layout, "elm,state,file_tab,show", ""); + else + elm_object_signal_emit(bd->layout, "elm,state,file_tab,hide", ""); +} + void base_file_browser_toggle(Eina_Bool toggle) { base_data *bd = g_bd; @@ -245,6 +259,7 @@ base_gui_term(void) ecore_timer_del(bd->edc_navi_update_timer); file_browser_term(); edc_navigator_term(); + file_tab_term(); panes_term(); free(bd); @@ -338,6 +353,10 @@ base_gui_init(void) Evas_Object *edc_navigator = edc_navigator_init(layout); elm_object_part_content_set(layout, "elm.swallow.edc_navigator", edc_navigator); + //File Tab + Evas_Object *file_tab = file_tab_init(layout); + elm_object_part_content_set(layout, "elm.swallow.file_tab", file_tab); + bd->win = win; bd->layout = layout; bd->console = console; diff --git a/src/bin/config_data.c b/src/bin/config_data.c index 9bd2a0d..27695ed 100644 --- a/src/bin/config_data.c +++ b/src/bin/config_data.c @@ -45,6 +45,7 @@ typedef struct config_s Eina_Bool file_browser_loaded; Eina_Bool edc_navigator; Eina_Bool red_alert; + Eina_Bool file_tab; } config_data; static config_data *g_cd = NULL; @@ -194,9 +195,10 @@ config_load(void) cd->auto_complete = EINA_TRUE; cd->version = ENVENTOR_CONFIG_VERSION; cd->smart_undo_redo = EINA_FALSE; - cd->file_browser = EINA_TRUE; + cd->file_browser = EINA_FALSE; cd->edc_navigator = EINA_TRUE; cd->red_alert = EINA_TRUE; + cd->file_tab = EINA_FALSE; } g_cd = cd; @@ -325,6 +327,8 @@ eddc_init(void) edc_navigator, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "red_alert", red_alert, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "file_tab", file_tab, + EET_T_UCHAR); } void @@ -683,13 +687,6 @@ config_linenumber_get(void) return cd->linenumber; } -Eina_Bool -config_stats_bar_get(void) -{ - config_data *cd = g_cd; - return cd->stats_bar; -} - void config_linenumber_set(Eina_Bool enabled) { @@ -697,6 +694,27 @@ config_linenumber_set(Eina_Bool enabled) cd->linenumber = enabled; } +Eina_Bool +config_file_tab_get(void) +{ + config_data *cd = g_cd; + return cd->file_tab; +} + +void +config_file_tab_set(Eina_Bool enabled) +{ + config_data *cd = g_cd; + cd->file_tab = enabled; +} + +Eina_Bool +config_stats_bar_get(void) +{ + config_data *cd = g_cd; + return cd->stats_bar; +} + void config_stats_bar_set(Eina_Bool enabled) { diff --git a/src/bin/file_tab.c b/src/bin/file_tab.c new file mode 100644 index 0000000..2cef99a --- /dev/null +++ b/src/bin/file_tab.c @@ -0,0 +1,156 @@ +#include "common.h" + +typedef struct file_tab_s +{ + Evas_Object *in_box; + Evas_Object *scroller; + Evas_Object *out_box; +} file_data; + +typedef struct file_tab_it_s +{ + Enventor_Item *it; + file_data *fd; + +} file_tab_it; + +file_data *g_fd = NULL; + +/*****************************************************************************/ +/* Internal method implementation */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* Externally accessible calls */ +/*****************************************************************************/ + +Eina_Bool file_tab_it_add(Enventor_Item *enventor_it) +{ + if (!enventor_it) + { + EINA_LOG_ERR("enventor_it = NULL?"); + return EINA_FALSE; + } + + file_data *fd = g_fd; + if (!fd) return EINA_FALSE; + + file_tab_it *fti = NULL; + fti = calloc(1, sizeof(file_tab_it)); + if (!fti) + { + EINA_LOG_ERR("Failed to allocate Memory!"); + return EINA_FALSE; + } + + const char *filepath = enventor_item_file_get(enventor_it); + if (!filepath) + { + EINA_LOG_ERR("No file path??"); + goto err; + } + + //Filter out file path and just have a file name without extension. + char *filename = ecore_file_strip_ext(ecore_file_file_get(filepath)); + if (!filename) + { + EINA_LOG_ERR("no filename??"); + goto err; + } + + Evas_Object *btn = elm_button_add(fd->in_box); + elm_object_text_set(btn, filename); + elm_object_style_set(btn, "enventor"); + evas_object_size_hint_weight_set(btn, 0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, 0, 0.5); + evas_object_show(btn); + + elm_box_pack_end(fd->in_box, btn); + + free(filename); + + return EINA_TRUE; + +err: + free(fti); + return EINA_FALSE; +} + +Evas_Object * +file_tab_init(Evas_Object *parent) +{ + file_data *fd = calloc(1, sizeof(file_data)); + if (!fd) + { + EINA_LOG_ERR("Failed to allocate Memory!"); + return NULL; + } + g_fd = fd; + + //Outer Box + Evas_Object *out_box = elm_box_add(parent); + elm_box_padding_set(out_box, ELM_SCALE_SIZE(5), 0); + elm_box_horizontal_set(out_box, EINA_TRUE); + + //Left Button + Evas_Object *left_btn = elm_button_add(out_box); + elm_object_style_set(left_btn, ENVENTOR_NAME); + evas_object_size_hint_weight_set(left_btn, 0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(left_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(left_btn); + elm_box_pack_end(out_box, left_btn); + + //Left Button Icon + Evas_Object *img1 = elm_image_add(left_btn); + elm_image_file_set(img1, EDJE_PATH, "left_arrow"); + elm_object_content_set(left_btn, img1); + + //Right Button + Evas_Object *right_btn = elm_button_add(out_box); + evas_object_size_hint_weight_set(right_btn, 0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(right_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_style_set(right_btn, ENVENTOR_NAME); + evas_object_show(right_btn); + elm_box_pack_end(out_box, right_btn); + + //Right Button Icon + Evas_Object *img2 = elm_image_add(right_btn); + elm_image_file_set(img2, EDJE_PATH, "right_arrow"); + elm_object_content_set(right_btn, img2); + + //Scroller + Evas_Object *scroller = elm_scroller_add(out_box); + elm_object_style_set(scroller, ENVENTOR_NAME); + elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, + ELM_SCROLLER_POLICY_OFF); + evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(scroller); + elm_box_pack_end(out_box, scroller); + + //Inner Box + Evas_Object *in_box = elm_box_add(scroller); + elm_box_horizontal_set(in_box, EINA_TRUE); + evas_object_size_hint_weight_set(in_box, 0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(in_box, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_content_set(scroller, in_box); + + fd->out_box = out_box; + fd->in_box = in_box; + fd->scroller = scroller; + + return out_box; +} + +void +file_tab_term(void) +{ + file_data *fd = g_fd; + if (!fd) return; + + evas_object_del(fd->out_box); + + free(fd); + g_fd = NULL; +} diff --git a/src/bin/main.c b/src/bin/main.c index a90d7a5..60bafed 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -44,7 +44,7 @@ tools_update(void) tools_dummy_update(EINA_FALSE); tools_outline_update(EINA_FALSE); tools_mirror_mode_update(EINA_FALSE); - tools_status_update(EINA_FALSE); + tools_file_tab_update(EINA_FALSE); tools_file_browser_update(EINA_FALSE); tools_edc_navigator_update(EINA_FALSE); } @@ -594,6 +594,7 @@ enventor_setup(app_data *ad) ad->main_it = enventor_object_main_file_set(enventor, config_input_path_get()); + file_tab_it_add(ad->main_it); base_enventor_set(enventor); base_text_editor_set(ad->main_it); @@ -828,6 +829,13 @@ keygrabber_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, tools_edc_navigator_update(EINA_TRUE); return; } + //File Tab + if (!strcmp(ev->key, "F11")) + { + enventor_object_ctxpopup_dismiss(base_enventor_get()); + tools_file_tab_update(EINA_TRUE); + return; + } //Setting if (!strcmp(ev->key, "F12")) { diff --git a/src/bin/preference_setting.c b/src/bin/preference_setting.c index 2ce69a2..0d196d6 100644 --- a/src/bin/preference_setting.c +++ b/src/bin/preference_setting.c @@ -227,7 +227,7 @@ preference_setting_content_get(preference_setting_data *psd, toggle_create(box, _("Tools"), config_tools_get(), _("Tools (F7)
" - "Display the tools on the top area.
" + "Display Tools on the top area.
" "Tools displays the essential function
" "toggles to edit the layout.")); elm_box_pack_end(box, toggle_tools); @@ -236,8 +236,8 @@ preference_setting_content_get(preference_setting_data *psd, Evas_Object *toggle_status = toggle_create(box, _("Status"), config_stats_bar_get(), _("Status (F8)
" - "Display Status bar on the bottom area.
" - "Status bar displays subsidiary information for
" + "Display Status bar, which shows subsidiary
" + "information for editing in the bottom area." "editing.")); elm_box_pack_end(box, toggle_status); diff --git a/src/bin/tools.c b/src/bin/tools.c index 9b1a846..e797986 100644 --- a/src/bin/tools.c +++ b/src/bin/tools.c @@ -8,7 +8,7 @@ typedef struct tools_s { Evas_Object *swallow_btn; Evas_Object *outline_btn; - Evas_Object *status_btn; + Evas_Object *file_tab; Evas_Object *file_browser_btn; Evas_Object *edc_navigator_btn; Evas_Object *lines_btn; @@ -93,10 +93,10 @@ edc_navigator_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, } static void -status_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +file_tab_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) { - tools_status_update(EINA_TRUE); + tools_file_tab_update(EINA_TRUE); } static void @@ -370,15 +370,16 @@ tools_init(Evas_Object *parent) btn); td->edc_navigator_btn = btn; - btn = tools_btn_create(text_editor_ly, "status", - _("Status (F11)
" - "Display the status bar, which shows subsidiary
" - "information for editing in the bottom area."), - status_cb); + btn = tools_btn_create(text_editor_ly, "filetab", + _("File Tab (F11)
" + "Display the file tab in the bottom area
" + "It shows an opened file list to switch
" + "files quickly. to switch files quickly."), + file_tab_cb); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_part_content_set(text_editor_ly, "elm.swallow.status", btn); - td->status_btn = btn; + elm_object_part_content_set(text_editor_ly, "elm.swallow.file_tab", btn); + td->file_tab = btn; btn = tools_btn_create(text_editor_ly, "menu", _("Enventor menu (Esc)
" @@ -576,18 +577,18 @@ tools_mirror_mode_update(Eina_Bool toggle) } void -tools_status_update(Eina_Bool toggle) +tools_file_tab_update(Eina_Bool toggle) { tools_data *td = g_td; if (!td) return; - base_statusbar_toggle(toggle); + base_file_tab_toggle(toggle); //Toggle on/off - if (config_stats_bar_get()) - elm_object_signal_emit(td->status_btn, "icon,highlight,enabled", ""); + if (config_file_tab_get()) + elm_object_signal_emit(td->file_tab, "icon,highlight,enabled", ""); else - elm_object_signal_emit(td->status_btn, "icon,highlight,disabled", ""); + elm_object_signal_emit(td->file_tab, "icon,highlight,disabled", ""); } void diff --git a/src/include/common.h b/src/include/common.h index e976490..88217b6 100644 --- a/src/include/common.h +++ b/src/include/common.h @@ -57,14 +57,14 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" #define ROUNDING(x, dig) (floor((x) * pow(10, dig) + 0.5) / pow(10, dig)) -#define ENVENTOR_CONFIG_VERSION 10 +#define ENVENTOR_CONFIG_VERSION 11 #define EVENT_KEY_MODIFIER_CHECK(NAME, MASK) \ ((MASK & ECORE_EVENT_MODIFIER_##NAME) && \ !((0xFF ^ ECORE_EVENT_MODIFIER_##NAME) & (MASK & 0x0F))) #define WIN_DEFAULT_W 900 -#define WIN_DEFAULT_H 440 +#define WIN_DEFAULT_H 475 #define ENVENTOR_BETA_API_SUPPORT 1 #include @@ -85,6 +85,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" #include "build_setting.h" #include "preference_setting.h" #include "help.h" +#include "file_tab.h" /* localization */ #ifdef HAVE_GETTEXT diff --git a/src/include/config_data.h b/src/include/config_data.h index b4eb3f8..8ea200e 100644 --- a/src/include/config_data.h +++ b/src/include/config_data.h @@ -25,8 +25,10 @@ const char *config_syntax_color_get(Enventor_Syntax_Color_Type color_type); void config_update_cb_set(void (*cb)(void *data), void *data); void config_stats_bar_set(Eina_Bool enabled); void config_linenumber_set(Eina_Bool enabled); +void config_file_tab_set(Eina_Bool enabled); Eina_Bool config_stats_bar_get(void); Eina_Bool config_linenumber_get(void); +Eina_Bool config_file_tab_get(void); void config_apply(void); void config_input_path_set(const char *input_path); void config_view_size_get(Evas_Coord *w, Evas_Coord *h); diff --git a/src/include/file_tab.h b/src/include/file_tab.h new file mode 100644 index 0000000..768975d --- /dev/null +++ b/src/include/file_tab.h @@ -0,0 +1,3 @@ +Evas_Object *file_tab_init(Evas_Object *parent); +void file_tab_term(void); + diff --git a/src/include/tools.h b/src/include/tools.h index eef1c5b..f28be6f 100644 --- a/src/include/tools.h +++ b/src/include/tools.h @@ -5,7 +5,7 @@ void tools_lines_update(Eina_Bool toggle); void tools_dummy_update(Eina_Bool toggle); void tools_outline_update(Eina_Bool toggle); void tools_mirror_mode_update(Eina_Bool toggle); -void tools_status_update(Eina_Bool toggle); +void tools_file_tab_update(Eina_Bool toggle); void tools_file_browser_update(Eina_Bool toggle); void tools_edc_navigator_update(Eina_Bool toggle); void tools_goto_update(void); diff --git a/src/lib/Enventor_Legacy.h b/src/lib/Enventor_Legacy.h index e53f324..698fbf3 100644 --- a/src/lib/Enventor_Legacy.h +++ b/src/lib/Enventor_Legacy.h @@ -4,7 +4,7 @@ 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); +EAPI const char *enventor_item_file_get(const Enventor_Item *it); #include "enventor_object.eo.legacy.h" diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index 0d016ad..4d63d08 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -29,6 +29,7 @@ struct editor_s Evas_Object *layout; Evas_Object *ctxpopup; Enventor_Object *enventor; + Eina_Stringshare *filepath; syntax_helper *sh; parser_data *pd; @@ -1012,6 +1013,9 @@ edit_edc_load(edit_data *ed, const char *file_path) ret = EINA_TRUE; + eina_stringshare_del(ed->filepath); + ed->filepath = eina_stringshare_add(file_path); + err: //Even any text is not inserted, line number should start with 1 if (ed->line_max == 0) line_init(ed); @@ -1444,6 +1448,7 @@ edit_term(edit_data *ed) ecore_thread_cancel(ed->syntax_color_thread); ecore_timer_del(ed->syntax_color_timer); evas_object_del(ed->scroller); + eina_stringshare_del(ed->filepath); free(ed); @@ -1744,6 +1749,13 @@ edit_key_up_event_dispatch(edit_data *ed, const char *key) return EINA_FALSE; } + +const char * +edit_file_get(edit_data *ed) +{ + return ed->filepath; +} + void edit_selection_region_center_set(edit_data *ed, int start, int end) { diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h index 2c6461f..ea57c4d 100644 --- a/src/lib/enventor_private.h +++ b/src/lib/enventor_private.h @@ -275,5 +275,6 @@ void edit_text_insert(edit_data *ed, const char *text); void edit_part_cursor_set(edit_data *ed, const char *group_name, const char *part_name); redoundo_data *edit_redoundo_get(edit_data *ed); void edit_selection_region_center_set(edit_data *ed, int start, int end); +const char *edit_file_get(edit_data *ed); #endif diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c index 7464342..bd3a51e 100644 --- a/src/lib/enventor_smart.c +++ b/src/lib/enventor_smart.c @@ -975,6 +975,9 @@ enventor_object_main_file_set(Enventor_Object *obj, const char *file) return &pd->main_it; } +/////////////////////////////////////////////////////////////////////////////// +/* Enventor_Item Functions. */ +/////////////////////////////////////////////////////////////////////////////// Evas_Object * enventor_item_editor_get(const Enventor_Item *it) { @@ -985,4 +988,15 @@ enventor_item_editor_get(const Enventor_Item *it) return edit_obj_get(it->ed); } +const char * +enventor_item_file_get(const Enventor_Item *it) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(it, NULL); + + if (!it->ed) return NULL; + + return edit_file_get(it->ed); +} + + #include "enventor_object.eo.c"