summaryrefslogtreecommitdiff
path: root/src/bin/elementary/test_efl_ui_text.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/elementary/test_efl_ui_text.c')
-rw-r--r--src/bin/elementary/test_efl_ui_text.c205
1 files changed, 200 insertions, 5 deletions
diff --git a/src/bin/elementary/test_efl_ui_text.c b/src/bin/elementary/test_efl_ui_text.c
index b53c427b9a..e28ba3bc64 100644
--- a/src/bin/elementary/test_efl_ui_text.c
+++ b/src/bin/elementary/test_efl_ui_text.c
@@ -144,8 +144,8 @@ static void
my_efl_ui_text_bt_4(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *en = data;
- efl_text_cursor_object_item_insert(en, efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_MAIN),
- "size=32x32 href=emoticon/evil-laugh");
+ efl_text_cursor_item_insert(en, efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_MAIN),
+ "emoticon/evil-laugh", "size=32x32");
}
static void
@@ -187,6 +187,7 @@ test_efl_ui_text(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
{
Evas_Object *win, *bx, *bx2, *bx3, *bt, *en;
Efl_Text_Cursor_Cursor *main_cur, *cur;
+ char buf[128];
win = elm_win_util_standard_add("entry", "Entry");
elm_win_autodel_set(win, EINA_TRUE);
@@ -215,9 +216,10 @@ test_efl_ui_text(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
cur = efl_text_cursor_new(en);
efl_text_cursor_position_set(en, cur, 2);
- efl_text_cursor_object_item_insert(en, cur, "size=32x32 href=emoticon");
+ efl_text_cursor_item_insert(en, cur, "emoticon/happy", "size=32x32");
efl_text_cursor_position_set(en, cur, 50);
- efl_text_cursor_object_item_insert(en, cur, "size=32x32 href=emoticon");
+ sprintf(buf, "file://%s/images/sky_01.jpg", elm_app_data_dir_get());
+ efl_text_cursor_item_insert(en, cur, buf, "size=32x32");
efl_text_cursor_position_set(en, main_cur, 5);
efl_text_cursor_position_set(en, cur, 20);
@@ -297,7 +299,7 @@ test_efl_ui_text_async(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
- en = efl_add(EFL_UI_TEXT_ASYNC_CLASS, win,
+ en = efl_add(EFL_UI_TEXT_CLASS, win,
efl_text_wrap_set(efl_added, EFL_TEXT_FORMAT_WRAP_WORD),
efl_text_multiline_set(efl_added, EINA_TRUE)
);
@@ -332,3 +334,196 @@ test_efl_ui_text_async(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
evas_object_resize(win, 480, 320);
evas_object_show(win);
}
+
+#define IMAGES_SZ 5
+
+static const char *images[IMAGES_SZ] = {
+ "sky", "logo", "dog", "eet_rock", "eet_plant" };
+
+static void
+my_efl_ui_text_item_factory_bt_image(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *en = data;
+ static int image_idx = 0;
+
+ image_idx = (image_idx + 1) % IMAGES_SZ;
+ efl_text_cursor_item_insert(en,
+ efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_MAIN),
+ images[image_idx], "size=32x32");
+ printf("Inserted image: key = %s\n", images[image_idx]);
+}
+
+static void
+my_efl_ui_text_item_factory_bt_emoticon(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *en = data;
+ efl_text_cursor_item_insert(en, efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_MAIN),
+ "emoticon/evil-laugh", "size=32x32");
+}
+
+static struct
+{
+ const char *name;
+ Eo *item_factory;
+} factories[3];
+
+static void
+my_efl_ui_text_item_factory_bt_change(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *en = data;
+ static int item_factory_idx = 0;
+
+ item_factory_idx = (item_factory_idx + 1) % 3;
+ efl_ui_text_item_factory_set(en, factories[item_factory_idx].item_factory);
+ printf("Factory set to: %s\n", factories[item_factory_idx].name);
+}
+
+#define FACTORY_NONE 0
+#define FACTORY_IMAGE 1
+#define FACTORY_EMOTICON 2
+
+static void
+_ui_text_factory_del(void *data, const Efl_Event *ev EINA_UNUSED)
+{
+ Eina_File *f = data;
+ eina_file_close(f);
+ efl_del(factories[FACTORY_IMAGE].item_factory);
+ efl_del(factories[FACTORY_EMOTICON].item_factory);
+}
+
+void
+test_ui_text_item_factory(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *bx, *bx2, *bx3, *bt, *en;
+ Efl_Text_Cursor_Cursor *main_cur, *cur;
+ char buf[128];
+ Eina_File *f;
+
+ win = elm_win_util_standard_add("entry", "Entry");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ en = efl_add(EFL_UI_TEXT_CLASS, win,
+ efl_text_multiline_set(efl_added, EINA_TRUE));
+
+ factories[FACTORY_NONE].name = "None (Fallback)";
+ factories[FACTORY_NONE].item_factory = NULL;
+
+ factories[FACTORY_IMAGE].name = "Image Factory";
+ factories[FACTORY_IMAGE].item_factory =
+ efl_add(EFL_UI_TEXT_FACTORY_IMAGES_CLASS, win);
+
+ factories[FACTORY_EMOTICON].name = "Emoticon Factory";
+ factories[FACTORY_EMOTICON].item_factory =
+ efl_add(EFL_UI_TEXT_FACTORY_EMOTICONS_CLASS, win);
+
+ // Test assigning file path source
+ sprintf(buf, "%s/images/sky_01.jpg", elm_app_data_dir_get());
+ efl_ui_text_factory_images_matches_add(factories[FACTORY_IMAGE].item_factory,
+ images[0], buf, NULL);
+ sprintf(buf, "%s/images/logo.png", elm_app_data_dir_get());
+ efl_ui_text_factory_images_matches_add(factories[FACTORY_IMAGE].item_factory,
+ images[1], buf, NULL);
+ sprintf(buf, "%s/images/mystrale.jpg", elm_app_data_dir_get());
+ efl_ui_text_factory_images_matches_add(factories[FACTORY_IMAGE].item_factory,
+ images[2], buf, NULL);
+
+ // Open EET source w/ key
+ sprintf(buf, "%s/images/image_items.eet", elm_app_data_dir_get());
+ f = eina_file_open(buf, EINA_FALSE);
+ if (f)
+ {
+ efl_event_callback_add(en, EFL_EVENT_DEL, _ui_text_factory_del, f);
+
+ efl_ui_text_factory_images_matches_mmap_add(
+ factories[FACTORY_IMAGE].item_factory,
+ "eet_rock", f, "rock");
+ efl_ui_text_factory_images_matches_mmap_add(
+ factories[FACTORY_IMAGE].item_factory,
+ "eet_plant", f, "plant");
+ }
+ else
+ {
+ printf("Error loading test file. Please review test.");
+ }
+
+
+ printf("Added Efl.Ui.Text object\n");
+ efl_text_set(en, "Hello world! Goodbye world! This is a test text for the"
+ " new UI Text widget.\xE2\x80\xA9This is the next paragraph.\nThis"
+ " is the next line.\nThis is Yet another line! Line and paragraph"
+ " separators are actually different!");
+ efl_text_font_set(en, "Sans", 14);
+ efl_text_normal_color_set(en, 255, 255, 255, 255);
+
+ main_cur = efl_text_cursor_get(en, EFL_TEXT_CURSOR_GET_MAIN);
+ cur = efl_text_cursor_new(en);
+
+ efl_text_cursor_position_set(en, cur, 2);
+ efl_text_cursor_item_insert(en, cur, "emoticon/happy", "size=32x32");
+ efl_text_cursor_position_set(en, cur, 50);
+
+ sprintf(buf, "file://%s/images/sky_01.jpg", elm_app_data_dir_get());
+ efl_text_cursor_item_insert(en, cur, buf, "size=32x32");
+ efl_text_cursor_position_set(en, main_cur, 5);
+
+ efl_ui_text_interactive_editable_set(en, EINA_TRUE);
+ efl_ui_text_scrollable_set(en, EINA_TRUE);
+ elm_box_pack_end(bx, en);
+ elm_object_focus_set(en, EINA_TRUE);
+
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Image");
+ evas_object_smart_callback_add(bt, "clicked",
+ my_efl_ui_text_item_factory_bt_image, en);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ elm_object_focus_allow_set(bt, EINA_FALSE);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Emoticon");
+ evas_object_smart_callback_add(bt, "clicked",
+ my_efl_ui_text_item_factory_bt_emoticon, en);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ elm_object_focus_allow_set(bt, EINA_FALSE);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Factory");
+ evas_object_smart_callback_add(bt, "clicked",
+ my_efl_ui_text_item_factory_bt_change, en);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ elm_object_focus_allow_set(bt, EINA_FALSE);
+ evas_object_show(bt);
+
+ bx3 = elm_box_add(win);
+ elm_box_horizontal_set(bx3, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_box_pack_end(bx, bx3);
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx3);
+ evas_object_show(bx2);
+
+ evas_object_resize(win, 480, 320);
+ evas_object_show(win);
+}