summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Andreoli <dave@gurumeditation.it>2014-12-30 23:02:24 +0100
committerDave Andreoli <dave@gurumeditation.it>2014-12-30 23:03:12 +0100
commita782d808ed5757111b6f37ece33b640e091dff58 (patch)
treee2bc4b93ae0747e0f8396f1951db7041bf28c653
parent58979d7abb934033793f5dbaa9b545511f4f2469 (diff)
downloadenlightenment-a782d808ed5757111b6f37ece33b640e091dff58.tar.gz
Icon theme: added standard freedesktop names.
OK, this commit try to fix the mess we have done with icon names in elm. I just added standard names to icons yet existing in the elm theme, the old name are, of course, preserved. But I marked them as -deprecated-. Also added a new test: Icon Standard. It show all the icon that have standard fdo names. This can be really usefull for user that need to choose icons to use. I put some guidelines comment in the icons.edc files, I hope people will follow the rules from now on... or will recive my personal spanking :D I will work on those icons more in the next days: will add the new names to elm docs, will try to match better fdo icon names, and maybe also add some new icons... Suggestions are always welcome. @feature (maybe)
-rw-r--r--data/themes/edc/elm/icon.edc70
-rw-r--r--src/bin/test.c2
-rw-r--r--src/bin/test_icon.c112
3 files changed, 183 insertions, 1 deletions
diff --git a/data/themes/edc/elm/icon.edc b/data/themes/edc/elm/icon.edc
index 755119054f..f07495e80c 100644
--- a/data/themes/edc/elm/icon.edc
+++ b/data/themes/edc/elm/icon.edc
@@ -1,3 +1,71 @@
+
+
+/*
+ * Standard FreeDesktop icons:
+ *
+ * WARNING: When you add new icons you MUST ensure to use standard names as per:
+ * http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
+ * If you can't find the name in the spec then you MUST search in the Tango
+ * and/or the Oxigen theme to find a suitable name. IF you really cannot find
+ * anything try at least to be consistent with other existing names.
+ * NOTE: icons marked with an empty comment are names that I cannot
+ * find anywhere else, so they are not really standard.
+ */
+#define IC(Name, File, Min, Max) \
+ group { name: "elm/icon/"##Name##"/default"; min: Min Min; max: Max Max; \
+ images.image: File COMP; parts { part { name: "base"; \
+ description { aspect: 1.0 1.0; aspect_preference: BOTH; \
+ image.normal: File; } } } }
+IC("folder", "icon_folder.png", 16, 0);
+IC("user-home", "icon_home.png", 16, 0);
+IC("user-trash", "icon_delete.png", 16, 0);
+
+IC("view-close", "icon_close.png", 16, 0);
+IC("view-refresh", "icon_refresh.png", 16, 0);
+
+IC("window-close", "icon_close.png", 16, 0);
+
+IC("document-close", "icon_close.png", 16, 0);
+IC("document-edit", "icon_edit.png", 16, 0);
+
+IC("dialog-info", "icon_info.png", 16, 0);
+IC("dialog-close", "icon_close.png", 16, 0);
+
+IC("arrow-up", "icon_arrow_up.png", 16, 0);
+IC("arrow-down", "icon_arrow_down.png", 16, 0);
+IC("arrow-left", "icon_arrow_left.png", 16, 0);
+IC("arrow-right", "icon_arrow_right.png", 16, 0);
+IC("arrow-up-left", "icon_arrow_up_left.png", 16, 0); /* */
+IC("arrow-up-right", "icon_arrow_up_right.png", 16, 0); /* */
+IC("arrow-down-left", "icon_arrow_down_left.png", 16, 0); /* */
+IC("arrow-down-right", "icon_arrow_down_right.png", 16, 0); /* */
+
+IC("edit-delete", "icon_delete.png", 16, 0);
+
+IC("application-chat", "icon_chat.png", 16, 0); /* */
+IC("application-clock", "icon_clock.png", 16, 0); /* */
+
+IC("media-seek-forward", "icon_forward.png", 16, 0);
+IC("media-seek-backward", "icon_rewind.png", 16, 0);
+IC("media-skip-forward", "icon_next.png", 16, 0);
+IC("media-skip-backward", "icon_prev.png", 16, 0);
+IC("media-playback-pause", "icon_pause.png", 16, 0);
+IC("media-playback-start", "icon_play.png", 16, 0);
+IC("media-playback-stop", "icon_stop.png", 16, 0);
+IC("media-eject", "icon_eject.png", 16, 0);
+
+IC("audio-volume", "icon_volume.png", 16, 0); /* */
+IC("audio-volume-muted", "icon_mute.png", 16, 0);
+
+/// TODO emoticons, file, no_photo
+#undef IC
+
+
+/*
+ * All the icons below this point are not standard and are to be considered
+ * deprecated or at least just for internal usage only.
+ */
+
#define IC(Name, Alias, File, Min, Max) \
group { name: "elm/icon/"##Name##"/default"; min: Min Min; max: Max Max; \
alias: "elm/icon/"##Alias##"/default"; \
@@ -16,7 +84,6 @@ IC("clock", "toolbar/clock", "icon_clock.png", 16, 0);
IC("delete", "toolbar/delete", "icon_delete.png", 16, 0);
IC("edit", "toolbar/edit", "icon_edit.png", 16, 0);
IC("refresh", "toolbar/refresh", "icon_refresh.png", 16, 0);
-IC("folder", "toolbar/folder", "icon_folder.png", 16, 0);
IC("file", "toolbar/file", "icon_file.png", 16, 0);
IC("no_photo", "photo/no_photo", "icon_head.png", 16, 0);
#undef IC
@@ -28,6 +95,7 @@ IC("no_photo", "photo/no_photo", "icon_head.png", 16, 0);
image.normal: File; } } } }
IC("toolbar/more_menu", "icon_arrow_down.png", 16, 0);
+IC("toolbar/folder", "icon_folder.png", 16, 0);
IC("arrow_up_left", "icon_arrow_up_left.png", 16, 0);
IC("arrow_up_right", "icon_arrow_up_right.png", 16, 0);
diff --git a/src/bin/test.c b/src/bin/test.c
index a56423f2b5..664772968a 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -17,6 +17,7 @@ void test_bg_image(void *data, Evas_Object *obj, void *event_info);
void test_bg_options(void *data, Evas_Object *obj, void *event_info);
void test_icon(void *data, Evas_Object *obj, void *event_info);
void test_icon_transparent(void *data, Evas_Object *obj, void *event_info);
+void test_icon_standard(void *data, Evas_Object *obj, void *event_info);
void test_box_vert(void *data, Evas_Object *obj, void *event_info);
void test_box_vert2(void *data, Evas_Object *obj, void *event_info);
void test_box_pack(void *data, Evas_Object *obj, void *event_info);
@@ -535,6 +536,7 @@ add_tests:
ADD_TEST(NULL, "Images", "Icon", test_icon);
ADD_TEST(NULL, "Images", "Icon Transparent", test_icon_transparent);
ADD_TEST(NULL, "Images", "Icon Animation", test_icon_animated);
+ ADD_TEST(NULL, "Images", "Icon Standard", test_icon_standard);
ADD_TEST(NULL, "Images", "Photocam", test_photocam);
ADD_TEST(NULL, "Images", "Photocam Remote", test_photocam_remote);
ADD_TEST(NULL, "Images", "Photo", test_photo);
diff --git a/src/bin/test_icon.c b/src/bin/test_icon.c
index 992d8ebefd..97cd393e87 100644
--- a/src/bin/test_icon.c
+++ b/src/bin/test_icon.c
@@ -111,6 +111,7 @@ test_icon(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info
evas_object_show(win);
}
+/* Test: Icon Transparent */
static void
icon_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
@@ -142,3 +143,114 @@ test_icon_transparent(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
evas_object_show(win);
}
+
+/* Test: Icon Standard */
+static void
+_standard_list_populate(Evas_Object *list, Elm_Icon_Lookup_Order order)
+{
+ Evas_Object *ic;
+ Eina_List* l;
+ const char *group;
+ char name[128], *p;
+
+ elm_list_clear(list);
+ l = elm_theme_group_base_list(NULL, "elm/icon/");
+ EINA_LIST_FREE(l, group)
+ {
+ // group = "/elm/icon/standard-name/style/maybe_another_style??"
+ snprintf(name, sizeof(name), "%s", group + 9);
+ p = strrchr(name, '/');
+ *p = '\0';
+ printf("Found group:%s Name:%s\n", group, name);
+
+ // quick hack to show only standard-compliant icons
+ // apart from the "folder" one, all the others have "-" in the name
+ if ((strrchr(name, '-') != NULL) || !strcmp(name, "folder"))
+ {
+ ic = elm_icon_add(list);
+ elm_icon_order_lookup_set(ic, order);
+ elm_icon_standard_set(ic, name);
+ evas_object_size_hint_min_set(ic, 32, 32);
+ elm_list_item_append(list, name, ic, NULL, NULL, NULL);
+ }
+
+ eina_stringshare_del(group);
+ }
+ eina_list_free(l);
+ elm_list_go(list);
+}
+
+static void
+_rdg_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ _standard_list_populate(data, elm_radio_value_get(obj));
+}
+
+void
+test_icon_standard(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *li, *box, *hbox, *fr, *rd, *rdg;
+
+
+ win = elm_win_util_standard_add("icon-test-std", "Icon Standard");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(win, box);
+ evas_object_show(box);
+
+ fr = elm_frame_add(box);
+ elm_object_text_set(fr, "standard icon order lookup");
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.0);
+ elm_box_pack_end(box, fr);
+ evas_object_show(fr);
+
+ li = elm_list_add(box);
+ evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, li);
+ evas_object_show(li);
+ _standard_list_populate(li, ELM_ICON_LOOKUP_FDO_THEME);
+
+ hbox = elm_box_add(fr);
+ elm_box_horizontal_set(hbox, EINA_TRUE);
+ elm_object_content_set(fr, hbox);
+ evas_object_show(hbox);
+
+ rdg = elm_radio_add(hbox);
+ elm_radio_state_value_set(rdg, ELM_ICON_LOOKUP_FDO_THEME);
+ elm_object_text_set(rdg, "fdo, theme");
+ elm_box_pack_end(hbox, rdg);
+ evas_object_show(rdg);
+ evas_object_smart_callback_add(rdg, "changed", _rdg_changed_cb, li);
+
+ rd = elm_radio_add(hbox);
+ elm_radio_state_value_set(rd, ELM_ICON_LOOKUP_THEME_FDO);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "theme, fdo");
+ elm_box_pack_end(hbox, rd);
+ evas_object_show(rd);
+ evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, li);
+
+ rd = elm_radio_add(hbox);
+ elm_radio_state_value_set(rd, ELM_ICON_LOOKUP_FDO);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "fdo only");
+ elm_box_pack_end(hbox, rd);
+ evas_object_show(rd);
+ evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, li);
+
+ rd = elm_radio_add(hbox);
+ elm_radio_state_value_set(rd, ELM_ICON_LOOKUP_THEME);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "theme only");
+ elm_box_pack_end(hbox, rd);
+ evas_object_show(rd);
+ evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, li);
+
+ evas_object_resize(win, 300, 400);
+ evas_object_show(win);
+}