From 0b693bb6cac06353cff7705c1700e6ab88eadce5 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 11 Jun 2016 11:59:34 +0100 Subject: [PATCH] elementary: merge code test widgets to main test app --- src/Makefile_Elementary.am | 20 +- src/bin/elementary/elm_code_test_main.c | 439 ----------------------------- src/bin/elementary/elm_code_test_private.h | 6 - src/bin/elementary/test.c | 15 + src/bin/elementary/test_code.c | 297 +++++++++++++++++++ 5 files changed, 314 insertions(+), 463 deletions(-) delete mode 100644 src/bin/elementary/elm_code_test_main.c delete mode 100644 src/bin/elementary/elm_code_test_private.h create mode 100644 src/bin/elementary/test_code.c diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index fee5372..dec763f 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -727,8 +727,7 @@ bin_PROGRAMS += \ bin/elementary/elementary_test \ bin/elementary/elementary_config \ bin/elementary/elementary_codegen \ -bin/elementary/elm_prefs_cc \ -bin/elementary/elementary_code +bin/elementary/elm_prefs_cc if BUILD_QUICKLAUNCH bin_PROGRAMS += \ @@ -756,6 +755,7 @@ bin/elementary/test_calendar.c \ bin/elementary/test_check.c \ bin/elementary/test_clock.c \ bin/elementary/test_cnp.c \ +bin/elementary/test_code.c \ bin/elementary/test_colorselector.c \ bin/elementary/test_colorclass.c \ bin/elementary/test_combobox.c \ @@ -868,22 +868,6 @@ bin_elementary_elementary_test_CPPFLAGS = \ -DPACKAGE_DATA_DIR=\"$(datadir)/elementary\" \ @ELEMENTARY_CFLAGS@ -bin_elementary_elementary_code_SOURCES = \ -bin/elementary/elm_code_test_main.c \ -bin/elementary/elm_code_test_private.h -bin_elementary_elementary_code_LDADD = @USE_ELEMENTARY_LIBS@ -bin_elementary_elementary_code_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@ -bin_elementary_elementary_code_CPPFLAGS = \ --I$(top_srcdir) \ --I$(top_srcdir)/src/lib/elementary \ --I$(top_builddir)/src/lib/elementary \ --I$(top_srcdir)/src/bin/elementary \ --DPACKAGE_BIN_DIR=\"$(bindir)\" \ --DPACKAGE_LIB_DIR=\"$(libdir)\" \ --DPACKAGE_DATA_DIR=\"$(datadir)/elementary\" \ --DLOCALE_DIR=\"$(localedir)\" \ -@ELEMENTARY_CFLAGS@ - bin_elementary_elementary_config_SOURCES = bin/elementary/config.c bin_elementary_elementary_config_LDADD = @USE_ELEMENTARY_LIBS@ bin_elementary_elementary_config_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@ diff --git a/src/bin/elementary/elm_code_test_main.c b/src/bin/elementary/elm_code_test_main.c deleted file mode 100644 index 80588ae..0000000 --- a/src/bin/elementary/elm_code_test_main.c +++ /dev/null @@ -1,439 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -/* NOTE: Respecting header order is important for portability. - * Always put system first, then EFL, then your public header, - * and finally your private one. */ - -#if ENABLE_NLS -# include -#endif - -#include -#include - -#include "elm_code_test_private.h" - -#define COPYRIGHT "Copyright © 2014 andy and various contributors (see AUTHORS)." - -static void -_elm_code_test_win_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - elm_exit(); -} - -static void _append_line(Elm_Code_File *file, const char *line) -{ - int length; - - length = strlen(line); - elm_code_file_line_append(file, line, length, NULL); -} - -static Eina_Bool -_elm_code_test_line_clicked_cb(void *data EINA_UNUSED, const Eo_Event *event) -{ - Elm_Code_Line *line; - - line = (Elm_Code_Line *)event->info; - - printf("CLICKED line %d\n", line->number); - return EO_CALLBACK_CONTINUE; -} - -static Eina_Bool -_elm_code_test_line_done_cb(void *data EINA_UNUSED, const Eo_Event *event) -{ - Elm_Code_Line *line; - - line = (Elm_Code_Line *)event->info; - - if (line->number == 1) - elm_code_line_token_add(line, 17, 24, 1, ELM_CODE_TOKEN_TYPE_COMMENT); - else if (line->number == 4) - line->status = ELM_CODE_STATUS_TYPE_ERROR; - - return EO_CALLBACK_STOP; -} - -static Evas_Object * -_elm_code_test_welcome_setup(Evas_Object *parent) -{ - Elm_Code *code; - Elm_Code_Widget *widget; - - code = elm_code_create(); - widget = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); - elm_obj_code_widget_font_set(widget, NULL, 12); - eo_event_callback_add(widget, &ELM_CODE_EVENT_LINE_LOAD_DONE, _elm_code_test_line_done_cb, NULL); - eo_event_callback_add(widget, ELM_OBJ_CODE_WIDGET_EVENT_LINE_CLICKED, _elm_code_test_line_clicked_cb, code); - - _append_line(code->file, "❤ Hello World, Elm Code! ❤"); - _append_line(code->file, ""); - _append_line(code->file, "This is a demo of elm_code's capabilities."); - _append_line(code->file, "⚑ *** Currently experimental ***"); - - evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(widget); - - elm_code_widget_selection_start(widget, 1, 3); - elm_code_widget_selection_end(widget, 1, 13); - - return widget; -} - -static Evas_Object * -_elm_code_test_editor_setup(Evas_Object *parent, Eina_Bool log) -{ - Elm_Code *code; - Elm_Code_Line *line; - Elm_Code_Widget *widget; - - code = elm_code_create(); - widget = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); - elm_obj_code_widget_font_set(widget, NULL, 14); - elm_obj_code_widget_editable_set(widget, EINA_TRUE); - elm_obj_code_widget_show_whitespace_set(widget, EINA_TRUE); - elm_obj_code_widget_line_numbers_set(widget, EINA_TRUE); - - if (!log) - { - _append_line(code->file, "Edit me :)"); - _append_line(code->file, ""); - _append_line(code->file, ""); - _append_line(code->file, "...Please?"); - - line = elm_code_file_line_get(code->file, 1); - elm_code_line_token_add(line, 5, 6, 1, ELM_CODE_TOKEN_TYPE_COMMENT); - elm_code_callback_fire(code, &ELM_CODE_EVENT_LINE_LOAD_DONE, line); - } - - evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(widget); - - return widget; -} - -static Evas_Object * -_elm_code_test_mirror_setup(Elm_Code *code, char *font_name, Evas_Object *parent) -{ - Elm_Code_Widget *widget; - - widget = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); - elm_obj_code_widget_font_set(widget, font_name, 11); - elm_obj_code_widget_line_numbers_set(widget, EINA_TRUE); - - evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(widget); - - return widget; -} - -static Evas_Object * -_elm_code_test_diff_inline_setup(Evas_Object *parent) -{ - Evas_Object *diff; - Elm_Code *code; - - code = elm_code_create(); - diff = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); - - evas_object_size_hint_weight_set(diff, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(diff, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(diff); - - elm_code_parser_standard_add(code, ELM_CODE_PARSER_STANDARD_DIFF); - elm_code_file_open(code, PACKAGE_DATA_DIR "testdiff.diff"); - - return diff; -} - -static Evas_Object * -_elm_code_test_diff_setup(Evas_Object *parent) -{ - Evas_Object *diff; - Elm_Code *code; - - code = elm_code_create(); - elm_code_file_open(code, PACKAGE_DATA_DIR "testdiff.diff"); - - diff = elm_code_diff_widget_add(parent, code); - return diff; -} - -static Eina_Bool -_elm_code_test_log_timer(void *data) -{ - Elm_Code *code = data; - static int line = 0; - char buf[250]; - - sprintf(buf, "line %d", ++line); - _append_line(code->file, buf); - - return ECORE_CALLBACK_RENEW; -} - -static void -_elm_code_test_log_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) -{ - static Ecore_Timer *t = NULL; - - if (t) - { - elm_object_text_set(obj, "Start"); - ecore_timer_del(t); - t = NULL; - return; - } - - t = ecore_timer_add(0.05, _elm_code_test_log_timer, data); - elm_object_text_set(obj, "Stop"); -} - -static void -_elm_code_test_welcome_editor_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *naviframe, *screen; - - naviframe = (Evas_Object *)data; - screen = elm_box_add(naviframe); - evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(screen, _elm_code_test_editor_setup(screen, EINA_FALSE)); - evas_object_show(screen); - - elm_naviframe_item_push(naviframe, "Editor", - NULL, NULL, screen, NULL); -} - -static void -_elm_code_test_welcome_log_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *naviframe, *screen, *o, *code; - - naviframe = (Evas_Object *)data; - screen = elm_box_add(naviframe); - evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - code = _elm_code_test_editor_setup(screen, EINA_TRUE); - elm_box_pack_end(screen, code); - - o = elm_button_add(screen); - elm_object_text_set(o, "log"); - evas_object_smart_callback_add(o, "clicked", _elm_code_test_log_clicked, elm_obj_code_widget_code_get(code)); - elm_box_pack_end(screen, o); - evas_object_show(o); - - evas_object_show(screen); - - elm_naviframe_item_push(naviframe, "Editor", - NULL, NULL, screen, NULL); -} - -static void -_elm_code_test_welcome_mirror_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_Code *code; - Evas_Object *naviframe, *screen, *widget; - - naviframe = (Evas_Object *)data; - screen = elm_box_add(naviframe); - elm_box_homogeneous_set(screen, EINA_TRUE); - evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - widget = _elm_code_test_editor_setup(screen, EINA_FALSE); - code = elm_obj_code_widget_code_get(widget); - elm_box_pack_end(screen, widget); - - elm_box_pack_end(screen, _elm_code_test_mirror_setup(code, "Mono:style=Oblique", screen)); - elm_box_pack_end(screen, _elm_code_test_mirror_setup(code, "Nimbus Mono", screen)); - - evas_object_show(screen); - elm_naviframe_item_push(naviframe, "Mirrored editor", - NULL, NULL, screen, NULL); -} - -static void -_elm_code_test_welcome_diff_inline_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *naviframe, *screen; - - naviframe = (Evas_Object *)data; - screen = elm_box_add(naviframe); - evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(screen, _elm_code_test_diff_inline_setup(screen)); - evas_object_show(screen); - - elm_naviframe_item_push(naviframe, "Diff widget (inline)", - NULL, NULL, screen, NULL); -} - -static void -_elm_code_test_welcome_diff_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *naviframe, *screen; - - naviframe = (Evas_Object *)data; - screen = elm_box_add(naviframe); - evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(screen, _elm_code_test_diff_setup(screen)); - evas_object_show(screen); - - elm_naviframe_item_push(naviframe, "Diff widget (comparison)", - NULL, NULL, screen, NULL); -} - -static Evas_Object * -elm_code_test_win_setup(void) -{ - Evas_Object *win, *vbox, *text, *button, *naviframe; - Elm_Object_Item *item; - - win = elm_win_util_standard_add("main", "Elm_Code Demo"); - if (!win) return NULL; - - naviframe = elm_naviframe_add(win); - evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, naviframe); - evas_object_show(naviframe); - - vbox = elm_box_add(win); - evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(vbox); - - text = _elm_code_test_welcome_setup(vbox); - evas_object_size_hint_weight_set(text, EVAS_HINT_EXPAND, 0.5); - elm_box_pack_end(vbox, text); - - button = elm_button_add(vbox); - elm_object_text_set(button, "Editor"); - evas_object_size_hint_weight_set(button, 0.5, 0.25); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 1.0); - evas_object_smart_callback_add(button, "clicked", - _elm_code_test_welcome_editor_cb, naviframe); - elm_box_pack_end(vbox, button); - evas_object_show(button); - - button = elm_button_add(vbox); - elm_object_text_set(button, "Log viewer"); - evas_object_size_hint_weight_set(button, 0.5, 0.0); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 1.0); - evas_object_smart_callback_add(button, "clicked", - _elm_code_test_welcome_log_cb, naviframe); - elm_box_pack_end(vbox, button); - evas_object_show(button); - - button = elm_button_add(vbox); - elm_object_text_set(button, "Mirrored editor"); - evas_object_size_hint_weight_set(button, 0.5, 0.0); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5); - evas_object_smart_callback_add(button, "clicked", - _elm_code_test_welcome_mirror_cb, naviframe); - elm_box_pack_end(vbox, button); - evas_object_show(button); - - button = elm_button_add(vbox); - elm_object_text_set(button, "Diff (inline)"); - evas_object_size_hint_weight_set(button, 0.5, 0.0); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5); - evas_object_smart_callback_add(button, "clicked", - _elm_code_test_welcome_diff_inline_cb, naviframe); - elm_box_pack_end(vbox, button); - evas_object_show(button); - - button = elm_button_add(vbox); - elm_object_text_set(button, "Diff (comparison)"); - evas_object_size_hint_weight_set(button, 0.5, 0.25); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.0); - evas_object_smart_callback_add(button, "clicked", - _elm_code_test_welcome_diff_cb, naviframe); - elm_box_pack_end(vbox, button); - evas_object_show(button); - - item = elm_naviframe_item_push(naviframe, "Choose Demo", - NULL, NULL,vbox, NULL); - elm_naviframe_item_title_enabled_set(item, EINA_FALSE, EINA_FALSE); - elm_win_resize_object_add(win, naviframe); - - evas_object_smart_callback_add(win, "delete,request", _elm_code_test_win_del, NULL); - evas_object_resize(win, 400 * elm_config_scale_get(), 320 * elm_config_scale_get()); - evas_object_show(win); - - return win; -} - -static const Ecore_Getopt optdesc = { - "elm_code_test", - "%prog [options]", - PACKAGE_VERSION, - COPYRIGHT, - "BSD with advertisement clause", - "An EFL elm_code_test program", - 0, - { - ECORE_GETOPT_LICENSE('L', "license"), - ECORE_GETOPT_COPYRIGHT('C', "copyright"), - ECORE_GETOPT_VERSION('V', "version"), - ECORE_GETOPT_HELP('h', "help"), - ECORE_GETOPT_SENTINEL - } -}; - -EAPI_MAIN int -elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) -{ - Evas_Object *win; - int args; - Eina_Bool quit_option = EINA_FALSE; - - Ecore_Getopt_Value values[] = { - ECORE_GETOPT_VALUE_BOOL(quit_option), - ECORE_GETOPT_VALUE_BOOL(quit_option), - ECORE_GETOPT_VALUE_BOOL(quit_option), - ECORE_GETOPT_VALUE_BOOL(quit_option), - ECORE_GETOPT_VALUE_NONE - }; - -#if ENABLE_NLS - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALE_DIR); - bind_textdomain_codeset(PACKAGE, "UTF-8"); - textdomain(PACKAGE); -#endif - - elm_code_init(); - - args = ecore_getopt_parse(&optdesc, values, argc, argv); - if (args < 0) - { - EINA_LOG_CRIT("Could not parse arguments."); - goto end; - } - else if (quit_option) - { - goto end; - } - - /* tell elm about our app so it can figure out where to get files */ - elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR); - elm_app_compile_lib_dir_set(PACKAGE_LIB_DIR); - elm_app_compile_data_dir_set(PACKAGE_DATA_DIR); - elm_app_info_set(elm_main, "elm_code_test", "images/elm_code.png"); - - if (!(win = elm_code_test_win_setup())) - goto end; - - elm_run(); - - end: - elm_code_shutdown(); - elm_shutdown(); - - return 0; -} -ELM_MAIN() diff --git a/src/bin/elementary/elm_code_test_private.h b/src/bin/elementary/elm_code_test_private.h deleted file mode 100644 index 04fb817..0000000 --- a/src/bin/elementary/elm_code_test_private.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef ELM_CODE_TEST_PRIVATE_H_ -# define ELM_CODE_TEST_PRIVATE_H_ - -// FIXME: put some private stuff related to your binary - -#endif diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c index b43fad9..6dd37be 100644 --- a/src/bin/elementary/test.c +++ b/src/bin/elementary/test.c @@ -279,6 +279,13 @@ void test_layout_disable(void *data, Evas_Object *obj, void *event_info); void test_colorclass(void *data, Evas_Object *obj, void *event_info); +void test_code_welcome(void *data, Evas_Object *obj, void *event_info); +void test_code_editor(void *data, Evas_Object *obj, void *event_info); +void test_code_mirror(void *data, Evas_Object *obj, void *event_info); +void test_code_log(void *data, Evas_Object *obj, void *event_info); +void test_code_diff(void *data, Evas_Object *obj, void *event_info); +void test_code_diff_inline(void *data, Evas_Object *obj, void *event_info); + Evas_Object *win, *tbx; // TODO: refactoring void *tt; Eina_List *tests; @@ -625,6 +632,14 @@ add_tests: ADD_TEST(NULL, "Entries", "Entry Emoticon", test_entry_emoticon); //------------------------------// + ADD_TEST(NULL, "Advanced Entries", "Code Entry Markup", test_code_welcome); + ADD_TEST(NULL, "Advanced Entries", "Code Editor", test_code_editor); + ADD_TEST(NULL, "Advanced Entries", "Mirrored Editor", test_code_mirror); + ADD_TEST(NULL, "Advanced Entries", "Logger", test_code_log); + ADD_TEST(NULL, "Advanced Entries", "Diff Comparison", test_code_diff); + ADD_TEST(NULL, "Advanced Entries", "Diff Inline", test_code_diff_inline); + + //------------------------------// ADD_TEST(NULL, "Buttons", "Button", test_button); //------------------------------// diff --git a/src/bin/elementary/test_code.c b/src/bin/elementary/test_code.c new file mode 100644 index 0000000..ed2d7ad --- /dev/null +++ b/src/bin/elementary/test_code.c @@ -0,0 +1,297 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif +#include + +static Evas_Object *_test_code_win_create(const char *id, const char *name) +{ + Evas_Object *win; + + win = elm_win_add(NULL, id, ELM_WIN_BASIC); + elm_win_title_set(win, name); + elm_win_autodel_set(win, EINA_TRUE); + + evas_object_resize(win, 360 * elm_config_scale_get(), 220 * elm_config_scale_get()); + return win; +} + +static void _append_line(Elm_Code_File *file, const char *line) +{ + int length; + + length = strlen(line); + elm_code_file_line_append(file, line, length, NULL); +} + +static Eina_Bool +_elm_code_test_line_clicked_cb(void *data EINA_UNUSED, const Eo_Event *event) +{ + Elm_Code_Line *line; + + line = (Elm_Code_Line *)event->info; + + printf("CLICKED line %d\n", line->number); + return EO_CALLBACK_CONTINUE; +} + +static Eina_Bool +_elm_code_test_line_done_cb(void *data EINA_UNUSED, const Eo_Event *event) +{ + Elm_Code_Line *line; + + line = (Elm_Code_Line *)event->info; + + if (line->number == 1) + elm_code_line_token_add(line, 17, 24, 1, ELM_CODE_TOKEN_TYPE_COMMENT); + else if (line->number == 4) + line->status = ELM_CODE_STATUS_TYPE_ERROR; + + return EO_CALLBACK_STOP; +} + +static Evas_Object * +_elm_code_test_welcome_setup(Evas_Object *parent) +{ + Elm_Code *code; + Elm_Code_Widget *widget; + + code = elm_code_create(); + widget = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); + elm_obj_code_widget_font_set(widget, NULL, 12); + eo_event_callback_add(widget, &ELM_CODE_EVENT_LINE_LOAD_DONE, _elm_code_test_line_done_cb, NULL); + eo_event_callback_add(widget, ELM_OBJ_CODE_WIDGET_EVENT_LINE_CLICKED, _elm_code_test_line_clicked_cb, code); + + _append_line(code->file, "❤ Hello World, Elm Code! ❤"); + _append_line(code->file, ""); + _append_line(code->file, "This is a demo of elm_code's capabilities."); + _append_line(code->file, "⚑ *** Currently experimental ***"); + + evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(widget); + + elm_code_widget_selection_start(widget, 1, 3); + elm_code_widget_selection_end(widget, 1, 13); + + return widget; +} + +static Evas_Object * +_elm_code_test_editor_setup(Evas_Object *parent, Eina_Bool log) +{ + Elm_Code *code; + Elm_Code_Line *line; + Elm_Code_Widget *widget; + + code = elm_code_create(); + widget = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); + elm_obj_code_widget_font_set(widget, NULL, 14); + elm_obj_code_widget_editable_set(widget, EINA_TRUE); + elm_obj_code_widget_show_whitespace_set(widget, EINA_TRUE); + elm_obj_code_widget_line_numbers_set(widget, EINA_TRUE); + + if (!log) + { + _append_line(code->file, "Edit me :)"); + _append_line(code->file, ""); + _append_line(code->file, ""); + _append_line(code->file, "...Please?"); + + line = elm_code_file_line_get(code->file, 1); + elm_code_line_token_add(line, 5, 6, 1, ELM_CODE_TOKEN_TYPE_COMMENT); + elm_code_callback_fire(code, &ELM_CODE_EVENT_LINE_LOAD_DONE, line); + } + + evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(widget); + + return widget; +} + +static Evas_Object * +_elm_code_test_mirror_setup(Elm_Code *code, char *font_name, Evas_Object *parent) +{ + Elm_Code_Widget *widget; + + widget = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); + elm_obj_code_widget_font_set(widget, font_name, 11); + elm_obj_code_widget_line_numbers_set(widget, EINA_TRUE); + + evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(widget); + + return widget; +} + +static Evas_Object * +_elm_code_test_diff_inline_setup(Evas_Object *parent) +{ + Evas_Object *diff; + Elm_Code *code; + + code = elm_code_create(); + diff = eo_add(ELM_CODE_WIDGET_CLASS, parent, elm_obj_code_widget_code_set(eo_self, code)); + + evas_object_size_hint_weight_set(diff, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(diff, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(diff); + + elm_code_parser_standard_add(code, ELM_CODE_PARSER_STANDARD_DIFF); + elm_code_file_open(code, PACKAGE_DATA_DIR "testdiff.diff"); + + return diff; +} + +static Evas_Object * +_elm_code_test_diff_setup(Evas_Object *parent) +{ + Evas_Object *diff; + Elm_Code *code; + + code = elm_code_create(); + elm_code_file_open(code, PACKAGE_DATA_DIR "testdiff.diff"); + + diff = elm_code_diff_widget_add(parent, code); + return diff; +} + +static Eina_Bool +_elm_code_test_log_timer(void *data) +{ + Elm_Code *code = data; + static int line = 0; + char buf[250]; + + sprintf(buf, "line %d", ++line); + _append_line(code->file, buf); + + return ECORE_CALLBACK_RENEW; +} + +static void +_elm_code_test_log_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + static Ecore_Timer *t = NULL; + + if (t) + { + elm_object_text_set(obj, "Start"); + ecore_timer_del(t); + t = NULL; + return; + } + + t = ecore_timer_add(0.05, _elm_code_test_log_timer, data); + elm_object_text_set(obj, "Stop"); +} + +void +test_code_editor(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *screen; + + win = _test_code_win_create("code-editor", "Code Editor"); + screen = elm_box_add(win); + evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(screen, _elm_code_test_editor_setup(screen, EINA_FALSE)); + elm_win_resize_object_add(win, screen); + evas_object_show(screen); + + evas_object_show(win); +} + +void +test_code_log(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *screen, *o, *code; + + win = _test_code_win_create("code-log", "Code Log"); + screen = elm_box_add(win); + evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + code = _elm_code_test_editor_setup(screen, EINA_TRUE); + elm_box_pack_end(screen, code); + + o = elm_button_add(screen); + elm_object_text_set(o, "log"); + evas_object_smart_callback_add(o, "clicked", _elm_code_test_log_clicked, elm_obj_code_widget_code_get(code)); + elm_box_pack_end(screen, o); + evas_object_show(o); + + elm_win_resize_object_add(win, screen); + evas_object_show(screen); + + evas_object_show(win); +} + +void +test_code_mirror(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Code *code; + Evas_Object *win, *screen, *widget; + + win = _test_code_win_create("code-mirror", "Code Mirror"); + screen = elm_box_add(win); + elm_box_homogeneous_set(screen, EINA_TRUE); + evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + widget = _elm_code_test_editor_setup(screen, EINA_FALSE); + code = elm_obj_code_widget_code_get(widget); + elm_box_pack_end(screen, widget); + + elm_box_pack_end(screen, _elm_code_test_mirror_setup(code, "Mono:style=Oblique", screen)); + elm_box_pack_end(screen, _elm_code_test_mirror_setup(code, "Nimbus Mono", screen)); + + elm_win_resize_object_add(win, screen); + evas_object_show(screen); + + evas_object_show(win); +} + +void +test_code_diff_inline(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *screen; + + win = _test_code_win_create("code-diff-inline", "Code Diff Inline"); + screen = elm_box_add(win); + evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(screen, _elm_code_test_diff_inline_setup(screen)); + elm_win_resize_object_add(win, screen); + evas_object_show(screen); + + evas_object_show(win); +} + +void +test_code_diff(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *screen; + + win = _test_code_win_create("code-diff", "Code Diff"); + screen = elm_box_add(win); + evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(screen, _elm_code_test_diff_setup(screen)); + elm_win_resize_object_add(win, screen); + evas_object_show(screen); + + evas_object_show(win); +} + +void +test_code_welcome(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *screen; + + win = _test_code_win_create("code-welcome", "Code Welcome"); + screen = elm_box_add(win); + evas_object_size_hint_weight_set(screen, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_box_pack_end(screen, _elm_code_test_welcome_setup(screen)); + elm_win_resize_object_add(win, screen); + evas_object_show(screen); + + evas_object_show(win); +} + -- 2.7.4