From 6dcfb21d3ec60ef97975a55fd2919947fe374f13 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 26 Jan 2015 23:30:17 +0000 Subject: [PATCH 1/7] Update TODO with recent changes --- TODO | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 6fc0162..0970f14 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,12 @@ This project is in heavy development, we are currenty working towards the "Code aware editor" phase, the following work is still to be done: -* Replace in file +* Tidy test panel output - summarise run and click to show test + * Redo changes that have been undone * Add a menu for easier access to some features * Search / replace in project / directory -* Integrate elm_code project (cedric and TAsn) +* Integrate elm_code project (cedric, ajwillia-ms and TAsn) - Code folding - Automatic code indenting / formatting - Code expansion (nested display of function call body) From ff2057b494acd17d326963495fa0b6e5dff223c1 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 27 Jan 2015 09:23:33 +0000 Subject: [PATCH 2/7] Add TODO note to list --- TODO | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO b/TODO index 0970f14..bcbbe52 100644 --- a/TODO +++ b/TODO @@ -2,6 +2,7 @@ This project is in heavy development, we are currenty working towards the "Code aware editor" phase, the following work is still to be done: * Tidy test panel output - summarise run and click to show test +* Better skeleton template generation (including year) * Redo changes that have been undone * Add a menu for easier access to some features From 3ab9857e525018020b41b2ea1b1d5fa80478823d Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 27 Jan 2015 14:34:11 +0000 Subject: [PATCH 3/7] Allow up/down/left/right to participate in focus control. When we cannot move within the cursor availability then note it the callback from elm will see if the event should be propagated so we report the veto when we're contained or allow propagation when we overrun --- elm_code/lib/elm_code_widget.c | 74 +++++++++++++++++++++++++++++++--- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/elm_code/lib/elm_code_widget.c b/elm_code/lib/elm_code_widget.c index 0e74afe..ca471d7 100644 --- a/elm_code/lib/elm_code_widget.c +++ b/elm_code/lib/elm_code_widget.c @@ -19,6 +19,7 @@ typedef struct Evas_Font_Size font_size; unsigned int cursor_line, cursor_col; + Eina_Bool cursor_move_vetoed; Eina_Bool editable, focussed; } Elm_Code_Widget_Data; @@ -44,6 +45,7 @@ _elm_code_widget_eo_base_constructor(Eo *obj, Elm_Code_Widget_Data *pd EINA_UNUS pd->cursor_line = 1; pd->cursor_col = 1; + pd->cursor_move_vetoed = EINA_TRUE; } EOLIAN static void @@ -349,16 +351,64 @@ _elm_code_widget_cursor_move_right(Elm_Code_Widget *widget) _elm_code_widget_fill(pd); } +static Eina_Bool +_elm_code_widget_cursor_key_can_control(Evas_Event_Key_Down *event) +{ + if (!strcmp(event->key, "Up")) + return EINA_TRUE; + else if (!strcmp(event->key, "Down")) + return EINA_TRUE; + else if (!strcmp(event->key, "Left")) + return EINA_TRUE; + else if (!strcmp(event->key, "Right")) + return EINA_TRUE; + else + return EINA_FALSE; +} + +static Eina_Bool +_elm_code_widget_cursor_key_will_move(Elm_Code_Widget *widget, Evas_Event_Key_Down *event) +{ + Elm_Code_Widget_Data *pd; + Elm_Code_Line *line; + + pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); + line = elm_code_file_line_get(pd->code->file, pd->cursor_line); + + if (!strcmp(event->key, "Up")) + return pd->cursor_line > 1; + else if (!strcmp(event->key, "Down")) + return pd->cursor_line < elm_code_file_lines_get(pd->code->file); + else if (!strcmp(event->key, "Left")) + return pd->cursor_col > 1; + else if (!strcmp(event->key, "Right")) + return pd->cursor_col < (unsigned int) line->length + 1; + else + return EINA_FALSE; +} + static void _elm_code_widget_key_down_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { Elm_Code_Widget *widget; + Elm_Code_Widget_Data *pd; widget = (Elm_Code_Widget *)data; + pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); Evas_Event_Key_Down *ev = event_info; + if (!pd->editable) + return; + + pd->cursor_move_vetoed = EINA_TRUE; + if (_elm_code_widget_cursor_key_can_control(ev) && !_elm_code_widget_cursor_key_will_move(widget, ev)) + { + pd->cursor_move_vetoed = EINA_FALSE; + return; + } + if (!strcmp(ev->key, "Up")) _elm_code_widget_cursor_move_up(widget); else if (!strcmp(ev->key, "Down")) @@ -372,17 +422,28 @@ _elm_code_widget_key_down_cb(void *data, Evas *evas EINA_UNUSED, } static Eina_Bool -_elm_code_widget_event_veto_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, +_elm_code_widget_event_veto_cb(void *data, Evas_Object *obj EINA_UNUSED, Evas_Object *src EINA_UNUSED, Evas_Callback_Type type, void *event_info EINA_UNUSED) { - Eina_Bool veto = EINA_FALSE; + Elm_Code_Widget *widget; + Elm_Code_Widget_Data *pd; + Eina_Bool vetoed; -// TODO determine if we should allow up/down to be sent to our focus manager + widget = (Elm_Code_Widget *)data; + pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); + + if (!pd->editable) + return EINA_FALSE; + + vetoed = EINA_TRUE; if (type == EVAS_CALLBACK_KEY_DOWN) - veto = EINA_TRUE; + { + vetoed = pd->cursor_move_vetoed; + pd->cursor_move_vetoed = EINA_TRUE; + } - return veto; + return vetoed; } EOLIAN static Eina_Bool @@ -435,9 +496,10 @@ _elm_code_widget_code_get(Eo *obj EINA_UNUSED, Elm_Code_Widget_Data *pd) } EOLIAN static void -_elm_code_widget_editable_set(Eo *obj EINA_UNUSED, Elm_Code_Widget_Data *pd, Eina_Bool editable) +_elm_code_widget_editable_set(Eo *obj, Elm_Code_Widget_Data *pd, Eina_Bool editable) { pd->editable = editable; + elm_object_focus_allow_set(obj, editable); } EOLIAN static Eina_Bool From 01cb36f510e973445547c85dc9d43587af82d668 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 10 Jan 2015 17:43:12 +0000 Subject: [PATCH 4/7] More updates to correct API/export declarations for Windows. Various changes brought in. Patch from Vincent Torri - thanks --- src/bin/Makefile.am | 13 +++++------- src/bin/edi_consolepanel.c | 10 ++++----- src/bin/edi_consolepanel.h | 14 ++++++------ src/bin/edi_content_provider.c | 4 ++-- src/bin/edi_content_provider.h | 4 ++-- src/bin/edi_logpanel.c | 2 +- src/bin/edi_main.c | 8 +++---- src/bin/edi_private.h | 4 ++-- src/bin/editor/edi_editor.c | 2 +- src/bin/editor/edi_editor.h | 6 +++--- src/bin/editor/edi_editor_search.c | 4 ++-- src/bin/mainview/edi_mainview.c | 34 +++++++++++++++--------------- src/bin/mainview/edi_mainview.h | 34 +++++++++++++++--------------- src/bin/welcome/edi_welcome.c | 2 +- src/bin/welcome/edi_welcome.h | 2 +- 15 files changed, 70 insertions(+), 73 deletions(-) diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index e1b8eea..0a5bf9b 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -3,8 +3,9 @@ AUTOMAKE_OPTIONS = subdir-objects bin_PROGRAMS = edi edi_build -AM_CPPFLAGS = -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ --I$(top_builddir)/src/bin/ \ +AM_CPPFLAGS = \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +-DLOCALEDIR=\"$(datadir)/locale\" \ -I$(top_srcdir)/src/bin/ \ -I$(top_srcdir)/elm_code/lib \ -I$(top_builddir)/src/lib/ \ @@ -22,7 +23,8 @@ edi_logpanel.c \ edi_consolepanel.c \ mainview/edi_mainview_item.c \ mainview/edi_mainview.c \ -edi_main.c +edi_main.c \ +edi_private.h edi_LDADD = @EFL_LIBS@ $(top_builddir)/elm_code/lib/libelm_code.la $(top_builddir)/src/lib/libedi.la @@ -31,8 +33,3 @@ edi_build_main.c edi_build_LDADD = @EFL_LIBS@ $(top_builddir)/src/lib/libedi.la -localedir = $(datadir)/locale -DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ - -EXTRA_DIST = edi_private.h - diff --git a/src/bin/edi_consolepanel.c b/src/bin/edi_consolepanel.c index ccab71e..118ffd3 100644 --- a/src/bin/edi_consolepanel.c +++ b/src/bin/edi_consolepanel.c @@ -168,17 +168,17 @@ static void _edi_consolepanel_append_line_type(const char *line, Eina_Bool err) _edi_test_line_callback(line); } -EAPI void edi_consolepanel_append_line(const char *line) +void edi_consolepanel_append_line(const char *line) { _edi_consolepanel_append_line_type(line, EINA_FALSE); } -EAPI void edi_consolepanel_append_error_line(const char *line) +void edi_consolepanel_append_error_line(const char *line) { _edi_consolepanel_append_line_type(line, EINA_TRUE); } -EAPI void edi_consolepanel_clear() +void edi_consolepanel_clear() { elm_box_clear(_console_box); @@ -311,7 +311,7 @@ static void _edi_test_line_callback(const char *content) } } -EAPI void edi_consolepanel_add(Evas_Object *parent) +void edi_consolepanel_add(Evas_Object *parent) { Evas_Object *scroll, *vbx; @@ -333,7 +333,7 @@ EAPI void edi_consolepanel_add(Evas_Object *parent) ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error, NULL); } -EAPI void edi_testpanel_add(Evas_Object *parent) +void edi_testpanel_add(Evas_Object *parent) { Elm_Code *code; Elm_Code_Widget *widget; diff --git a/src/bin/edi_consolepanel.h b/src/bin/edi_consolepanel.h index 37cf1fc..858cf3c 100644 --- a/src/bin/edi_consolepanel.h +++ b/src/bin/edi_consolepanel.h @@ -29,18 +29,18 @@ extern "C" { * * @ingroup UI */ -EAPI void edi_consolepanel_add(Evas_Object *parent); +void edi_consolepanel_add(Evas_Object *parent); /** * Show the Edi consolepanel - animating on to screen if required. * * @ingroup UI */ -EAPI void edi_consolepanel_show(); +void edi_consolepanel_show(); -EAPI void edi_testpanel_add(Evas_Object *parent); +void edi_testpanel_add(Evas_Object *parent); -EAPI void edi_testpanel_show(); +void edi_testpanel_show(); /** * @} @@ -61,7 +61,7 @@ EAPI void edi_testpanel_show(); * * @ingroup Console */ -EAPI void edi_consolepanel_append_line(const char *line); +void edi_consolepanel_append_line(const char *line); /** * Append a new error line to the console. @@ -70,14 +70,14 @@ EAPI void edi_consolepanel_append_line(const char *line); * * @ingroup Console */ -EAPI void edi_consolepanel_append_error_line(const char *line); +void edi_consolepanel_append_error_line(const char *line); /** * Clear all lines from the console. * * @ingroup Console */ -EAPI void edi_consolepanel_clear(); +void edi_consolepanel_clear(); /** * @} diff --git a/src/bin/edi_content_provider.c b/src/bin/edi_content_provider.c index fdf5958..fba6811 100644 --- a/src/bin/edi_content_provider.c +++ b/src/bin/edi_content_provider.c @@ -54,7 +54,7 @@ static Edi_Content_Provider _edi_content_provider_registry[] = {NULL, EINA_FALSE, EINA_FALSE, NULL} }; -EAPI Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime) +Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime) { char *id; @@ -73,7 +73,7 @@ EAPI Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime) return edi_content_provider_for_id_get(id); } -EAPI Edi_Content_Provider *edi_content_provider_for_id_get(const char *id) +Edi_Content_Provider *edi_content_provider_for_id_get(const char *id) { Edi_Content_Provider *provider; diff --git a/src/bin/edi_content_provider.h b/src/bin/edi_content_provider.h index 4dbba7b..d870290 100644 --- a/src/bin/edi_content_provider.h +++ b/src/bin/edi_content_provider.h @@ -43,7 +43,7 @@ typedef struct _Edi_Content_Provider * * @ingroup Lookup */ -EAPI Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime); +Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime); /** * Look up a content provider based on a provider id. @@ -55,7 +55,7 @@ EAPI Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime); * * @ingroup Lookup */ -EAPI Edi_Content_Provider *edi_content_provider_for_id_get(const char *id); +Edi_Content_Provider *edi_content_provider_for_id_get(const char *id); /** * @} diff --git a/src/bin/edi_logpanel.c b/src/bin/edi_logpanel.c index f18a862..77a3973 100644 --- a/src/bin/edi_logpanel.c +++ b/src/bin/edi_logpanel.c @@ -38,7 +38,7 @@ static void _print_cb(const Eina_Log_Domain *domain, } } -EAPI void edi_logpanel_add(Evas_Object *parent) +void edi_logpanel_add(Evas_Object *parent) { Elm_Code_Widget *widget; Elm_Code *code; diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index 43388eb..24f04ee 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -282,14 +282,14 @@ _edi_panel_dragged_cb(void *data, Evas_Object *obj EINA_UNUSED, _edi_panel_size_save(data == _edi_filepanel); } -EAPI void +void edi_consolepanel_show() { if (_edi_selected_bottompanel != _edi_consolepanel_item) elm_toolbar_item_selected_set(_edi_consolepanel_item, EINA_TRUE); } -EAPI void +void edi_testpanel_show() { if (_edi_selected_bottompanel != _edi_testpanel_item) @@ -718,7 +718,7 @@ _edi_resize_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, _edi_config_save(); } -EAPI Evas_Object * +Evas_Object * edi_open(const char *inputpath) { Evas_Object *win, *vbx, *content, *tb; @@ -769,7 +769,7 @@ edi_open(const char *inputpath) return win; } -EAPI void +void edi_close() { elm_exit(); diff --git a/src/bin/edi_private.h b/src/bin/edi_private.h index 43f2a4c..a0850c4 100644 --- a/src/bin/edi_private.h +++ b/src/bin/edi_private.h @@ -28,8 +28,8 @@ extern int _edi_log_dom; #define EDI_CONTENT_AUTOSAVE EINA_TRUE -EAPI Evas_Object *edi_open(const char *path); +Evas_Object *edi_open(const char *path); -EAPI void edi_close(); +void edi_close(); #endif diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index adb264f..51cf60a 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -695,7 +695,7 @@ _text_set_done(void *data, Evas_Object *obj EINA_UNUSED, void *source EINA_UNUSE _reset_highlight(editor); } -EAPI Evas_Object *_edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item) +Evas_Object *_edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item) { Evas_Object *txt, *lines, *vbox, *box, *searchbar, *statusbar; Evas_Modifier_Mask ctrl, shift, alt; diff --git a/src/bin/editor/edi_editor.h b/src/bin/editor/edi_editor.h index 24daed7..3219aa7 100644 --- a/src/bin/editor/edi_editor.h +++ b/src/bin/editor/edi_editor.h @@ -75,7 +75,7 @@ struct _Edi_Editor * * @ingroup Editor */ -EAPI Evas_Object *_edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item); +Evas_Object *_edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item); /** * @} @@ -95,7 +95,7 @@ EAPI Evas_Object *_edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item); * * @ingroup Widgets */ -EAPI void _edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor); +void _edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor); /** * Start a search in the specified editor. @@ -104,7 +104,7 @@ EAPI void _edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor); * * @ingroup Widgets */ -EAPI void _edi_editor_search(Edi_Editor *editor); +void _edi_editor_search(Edi_Editor *editor); /** * @} diff --git a/src/bin/editor/edi_editor_search.c b/src/bin/editor/edi_editor_search.c index 7b15bb2..e7bb099 100644 --- a/src/bin/editor/edi_editor_search.c +++ b/src/bin/editor/edi_editor_search.c @@ -187,7 +187,7 @@ _edi_editor_search_hide(Edi_Editor *editor) elm_object_focus_set(editor->entry, EINA_TRUE); } -EAPI void +void _edi_editor_search(Edi_Editor *editor) { Edi_Editor_Search *search; @@ -269,7 +269,7 @@ _edi_search_key_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, } } -EAPI void +void _edi_editor_search_add(Evas_Object *parent, Edi_Editor *editor) { Evas_Object *entry, *lbl, *btn, *box, *big_box; diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index 1b2d08b..ece8551 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -26,7 +26,7 @@ static void dummy() {} -EAPI Edi_Mainview_Item * +Edi_Mainview_Item * edi_mainview_item_current_get() { Eina_List *item; @@ -46,7 +46,7 @@ edi_mainview_item_current_get() return NULL; } -EAPI void +void edi_mainview_item_prev() { Eina_List *item; @@ -68,7 +68,7 @@ edi_mainview_item_prev() } } -EAPI void +void edi_mainview_item_next() { Eina_List *item; @@ -91,7 +91,7 @@ edi_mainview_item_next() } } -EAPI void +void edi_mainview_item_select(Edi_Mainview_Item *item) { if (item->win) @@ -331,7 +331,7 @@ _edi_mainview_win_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Ein _edi_mainview_item_win_add(options, mime); } -EAPI void +void edi_mainview_open_path(const char *path) { Edi_Path_Options *options; @@ -349,7 +349,7 @@ edi_mainview_open_path(const char *path) eio_file_direct_stat(path, _edi_mainview_tab_stat_done, dummy, options); } -EAPI void +void edi_mainview_open(Edi_Path_Options *options) { Edi_Mainview_Item *it; @@ -373,7 +373,7 @@ edi_mainview_open(Edi_Path_Options *options) } } -EAPI void +void edi_mainview_open_window_path(const char *path) { Edi_Path_Options *options; @@ -394,7 +394,7 @@ edi_mainview_open_window_path(const char *path) eio_file_direct_stat(path, _edi_mainview_win_stat_done, dummy, options); } -EAPI void +void edi_mainview_open_window(Edi_Path_Options *options) { Edi_Mainview_Item *it; @@ -419,7 +419,7 @@ edi_mainview_open_window(Edi_Path_Options *options) } } -EAPI void +void edi_mainview_save() { Evas_Object *content; @@ -434,7 +434,7 @@ edi_mainview_save() elm_entry_file_save(editor->entry); } -EAPI void +void edi_mainview_new_window() { Edi_Mainview_Item *item; @@ -446,7 +446,7 @@ edi_mainview_new_window() edi_mainview_open_window_path(item->path); } -EAPI void +void edi_mainview_close() { Edi_Mainview_Item *item; @@ -462,7 +462,7 @@ edi_mainview_close() free(item); } -EAPI void +void edi_mainview_cut() { Evas_Object *content; @@ -477,7 +477,7 @@ edi_mainview_cut() elm_entry_selection_cut(editor->entry); } -EAPI void +void edi_mainview_copy() { Evas_Object *content; @@ -492,7 +492,7 @@ edi_mainview_copy() elm_entry_selection_copy(editor->entry); } -EAPI void +void edi_mainview_paste() { Evas_Object *content; @@ -507,7 +507,7 @@ edi_mainview_paste() elm_entry_selection_paste(editor->entry); } -EAPI void +void edi_mainview_search() { Evas_Object *content; @@ -522,7 +522,7 @@ edi_mainview_search() _edi_editor_search(editor); } -EAPI void +void edi_mainview_goto(int line) { Evas_Object *content; @@ -549,7 +549,7 @@ edi_mainview_goto(int line) elm_object_focus_set(editor->entry, EINA_TRUE); } -EAPI void +void edi_mainview_add(Evas_Object *parent, Evas_Object *win) { Evas_Object *box, *txt; diff --git a/src/bin/mainview/edi_mainview.h b/src/bin/mainview/edi_mainview.h index cf63b5e..7e0c57c 100644 --- a/src/bin/mainview/edi_mainview.h +++ b/src/bin/mainview/edi_mainview.h @@ -35,7 +35,7 @@ extern "C" { * * @ingroup UI */ -EAPI void edi_mainview_add(Evas_Object *parent, Evas_Object *win); +void edi_mainview_add(Evas_Object *parent, Evas_Object *win); /** * @} @@ -58,7 +58,7 @@ EAPI void edi_mainview_add(Evas_Object *parent, Evas_Object *win); * * @ingroup Content */ -EAPI void edi_mainview_open_path(const char *path); +void edi_mainview_open_path(const char *path); /** * Open the file described in the provided options - path and location etc. @@ -67,7 +67,7 @@ EAPI void edi_mainview_open_path(const char *path); * * @ingroup Content */ -EAPI void edi_mainview_open(Edi_Path_Options *options); +void edi_mainview_open(Edi_Path_Options *options); /** * Open the file at path for editing in a new window using the type specified. @@ -78,7 +78,7 @@ EAPI void edi_mainview_open(Edi_Path_Options *options); * * @ingroup Content */ -EAPI void edi_mainview_open_window_path(const char *path); +void edi_mainview_open_window_path(const char *path); /** * Open the file described in the provided options in a new window - path and location etc. @@ -87,7 +87,7 @@ EAPI void edi_mainview_open_window_path(const char *path); * * @ingroup Content */ -EAPI void edi_mainview_open_window(Edi_Path_Options *options); +void edi_mainview_open_window(Edi_Path_Options *options); /** @@ -95,49 +95,49 @@ EAPI void edi_mainview_open_window(Edi_Path_Options *options); * * @ingroup Content */ -EAPI void edi_mainview_save(); +void edi_mainview_save(); /** * Move the current tab to a new window. * * @ingroup Content */ -EAPI void edi_mainview_new_window(); +void edi_mainview_new_window(); /** * Close the current file. * * @ingroup Content */ -EAPI void edi_mainview_close(); +void edi_mainview_close(); /** * Cut the current selection into the clipboard. * * @ingroup Content */ -EAPI void edi_mainview_cut(); +void edi_mainview_cut(); /** * Copy the current selection into the clipboard. * * @ingroup Content */ -EAPI void edi_mainview_copy(); +void edi_mainview_copy(); /** * Paste the current clipboard contents at the current cursor position. * * @ingroup Content */ -EAPI void edi_mainview_paste(); +void edi_mainview_paste(); /** * Search the current view's contents. * * @ingroup Content */ -EAPI void edi_mainview_search(); +void edi_mainview_search(); /** * Go to a requested line in the current view's contents. @@ -146,7 +146,7 @@ EAPI void edi_mainview_search(); * * @ingroup Content */ -EAPI void edi_mainview_goto(int line); +void edi_mainview_goto(int line); /** * @} @@ -161,7 +161,7 @@ EAPI void edi_mainview_goto(int line); * */ -EAPI Edi_Mainview_Item *edi_mainview_item_current_get(); +Edi_Mainview_Item *edi_mainview_item_current_get(); /** * Select the passed item in the mainview UI. @@ -171,7 +171,7 @@ EAPI Edi_Mainview_Item *edi_mainview_item_current_get(); * * @ingroup Tabs */ -EAPI void edi_mainview_item_select(Edi_Mainview_Item *item); +void edi_mainview_item_select(Edi_Mainview_Item *item); /** * Select the previous open tab. @@ -179,7 +179,7 @@ EAPI void edi_mainview_item_select(Edi_Mainview_Item *item); * * @ingroup Tabs */ -EAPI void edi_mainview_item_prev(); +void edi_mainview_item_prev(); /** * Select the next open tab. @@ -187,7 +187,7 @@ EAPI void edi_mainview_item_prev(); * * @ingroup Tabs */ -EAPI void edi_mainview_item_next(); +void edi_mainview_item_next(); /** * @} diff --git a/src/bin/welcome/edi_welcome.c b/src/bin/welcome/edi_welcome.c index 5606730..43be047 100644 --- a/src/bin/welcome/edi_welcome.c +++ b/src/bin/welcome/edi_welcome.c @@ -307,7 +307,7 @@ _edi_welcome_add_recent_projects(Evas_Object *box) evas_object_show(list); } -EAPI Evas_Object *edi_welcome_show() +Evas_Object *edi_welcome_show() { Evas_Object *win, *hbx, *box, *button, *label, *image, *naviframe; Elm_Object_Item *item; diff --git a/src/bin/welcome/edi_welcome.h b/src/bin/welcome/edi_welcome.h index 3311245..8c0ffce 100644 --- a/src/bin/welcome/edi_welcome.h +++ b/src/bin/welcome/edi_welcome.h @@ -28,7 +28,7 @@ extern "C" { * @return The welcome window that is created * * @ingroup UI */ -EAPI Evas_Object *edi_welcome_show(); +Evas_Object *edi_welcome_show(); /** * @} From e6ddefedd5aac9ee47c205ede2d7a50ae319a9be Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 10 Jan 2015 17:55:04 +0000 Subject: [PATCH 5/7] Tidying some more headers to try and get windows builds working --- elm_code/lib/Elm_Code.h | 2 ++ elm_code/lib/elm_code_widget.c | 7 ------- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/elm_code/lib/Elm_Code.h b/elm_code/lib/Elm_Code.h index 21384c9..016f315 100644 --- a/elm_code/lib/Elm_Code.h +++ b/elm_code/lib/Elm_Code.h @@ -4,6 +4,8 @@ #include #include #include +#define ELM_INTERNAL_API_ARGESFSDFEFC +#include #ifdef EAPI # undef EAPI diff --git a/elm_code/lib/elm_code_widget.c b/elm_code/lib/elm_code_widget.c index ca471d7..9da73ec 100644 --- a/elm_code/lib/elm_code_widget.c +++ b/elm_code/lib/elm_code_widget.c @@ -2,14 +2,7 @@ # include "config.h" #endif -#include -#include -#include -#define ELM_INTERNAL_API_ARGESFSDFEFC -#include - #include -#include "elm_code_widget.eo.h" #include "elm_code_private.h" typedef struct From 203f2619e1c15d16f73d2a1ea80d7e8e8f55bbb3 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 27 Jan 2015 22:31:12 +0000 Subject: [PATCH 6/7] Fix crash when creating a new file --- src/bin/edi_content_provider.c | 3 +++ src/bin/edi_main.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bin/edi_content_provider.c b/src/bin/edi_content_provider.c index fba6811..f17a9ac 100644 --- a/src/bin/edi_content_provider.c +++ b/src/bin/edi_content_provider.c @@ -58,6 +58,9 @@ Edi_Content_Provider *edi_content_provider_for_mime_get(const char *mime) { char *id; + if (!mime) + return NULL; + if (!strcasecmp(mime, "text/plain") || !strcasecmp(mime, "application/x-shellscript")) id = "text"; else if (!strcasecmp(mime, "text/x-chdr") || !strcasecmp(mime, "text/x-csrc") diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index 24f04ee..80346df 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -447,7 +447,7 @@ _tb_new_create_cb(void *data, path = edi_project_file_path_get(name); fclose(fopen(path, "w")); - edi_mainview_open_path(path); + edi_mainview_open_path(eina_stringshare_add(path)); evas_object_del(_edi_new_popup); free((char*)path); From d65bc3bce927d868adb67a01ef9b5d20c93c055b Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 27 Jan 2015 22:41:36 +0000 Subject: [PATCH 7/7] windows support: remove the last fork --- src/bin/edi_filepanel.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/bin/edi_filepanel.c b/src/bin/edi_filepanel.c index 6e3600f..435fdbb 100644 --- a/src/bin/edi_filepanel.c +++ b/src/bin/edi_filepanel.c @@ -46,13 +46,16 @@ static void _item_menu_xdgopen_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - int pid = fork(); + char *cmd; + int cmdlen; + const char *format = "xdg-open \"%s\""; - if (pid == 0) - { - execlp("/usr/bin/xdg-open", "xdg-open", _menu_cb_path, NULL); - exit(0); - } + cmdlen = strlen(format) + strlen(_menu_cb_path) - 1; + cmd = malloc(sizeof(char) * cmdlen); + snprintf(cmd, cmdlen, format, _menu_cb_path); + + ecore_exe_run(cmd, NULL); + free(cmd); } static void