ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0b693bb6cac06353cff7705c1700e6ab88eadce5

commit 0b693bb6cac06353cff7705c1700e6ab88eadce5
Author: Andy Williams <[email protected]>
Date:   Sat Jun 11 11:59:34 2016 +0100

    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(-)

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 <libintl.h>
-#endif
-
-#include <Ecore_Getopt.h>
-#include <Elementary.h>
-
-#include "elm_code_test_private.h"
-
-#define COPYRIGHT "Copyright © 2014 andy <[email protected]> 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 <Elementary.h>
+
+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);
+}
+

-- 


Reply via email to