2 * Simple Elementary's <b>file selector entry widget</b> example,
3 * illustrating its usage and API.
5 * See stdout/stderr for output. Compile with:
8 * gcc -g fileselector_entry_example.c -o fileselector_entry_example `pkg-config --cflags --libs elementary`
12 #include <Elementary.h>
14 /* hook on the file,chosen smart callback */
16 _file_chosen(void *data,
20 const char *file = event_info;
23 printf("File chosen: %s\n", file);
25 printf("File selection canceled.\n");
28 /* toggle inwin mode */
30 _inwin_mode_toggle(void *data,
34 Evas_Object *fs_entry = data;
35 Eina_Bool old_val = elm_fileselector_entry_inwin_mode_get(fs_entry);
37 elm_fileselector_entry_inwin_mode_set(fs_entry, !old_val);
38 printf("Inwin mode set to: %s\n", old_val ? "false" : "true");
42 _current_sel_toggle(void *data,
46 Evas_Object *fs_entry = data;
47 Eina_Bool old_val = elm_fileselector_is_save_get(fs_entry);
48 elm_fileselector_is_save_set(fs_entry, !old_val);
50 printf("%s text entry with selected item's name\n",
51 old_val ? "Disabling" : "Enabling");
55 _folder_only_toggle(void *data,
59 Evas_Object *fs_entry = data;
60 Eina_Bool old_val = elm_fileselector_folder_only_get(fs_entry);
61 elm_fileselector_folder_only_set(fs_entry, !old_val);
63 printf("Folder only mode set to: %s\n", old_val ? "false" : "true");
67 _expandable_toggle(void *data,
71 Evas_Object *fs_entry = data;
72 Eina_Bool old_val = elm_fileselector_expandable_get(fs_entry);
73 elm_fileselector_expandable_set(fs_entry, !old_val);
75 printf("Expandable folders mode set to: %s\n", old_val ? "false" : "true");
82 Evas_Object *win, *vbox, *hbox, *ic, *ck, *fs_entry, *sep;
84 elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
86 win = elm_win_util_standard_add("fileselector-entry", "File Selector Entry Example");
87 elm_win_autodel_set(win, EINA_TRUE);
89 vbox = elm_box_add(win);
90 evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91 elm_win_resize_object_add(win, vbox);
92 evas_object_show(vbox);
94 ic = elm_icon_add(win);
95 elm_icon_standard_set(ic, "file");
96 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
98 /* file selector entry */
99 fs_entry = elm_fileselector_entry_add(win);
100 evas_object_size_hint_align_set(fs_entry, EVAS_HINT_FILL, 0);
101 elm_fileselector_path_set(fs_entry, "/tmp");
102 elm_object_text_set(fs_entry, "Select a file");
103 elm_object_part_content_set(fs_entry, "button icon", ic);
105 elm_box_pack_end(vbox, fs_entry);
106 evas_object_show(fs_entry);
107 evas_object_show(ic);
109 /* attribute setting knobs */
110 sep = elm_separator_add(win);
111 elm_separator_horizontal_set(sep, EINA_TRUE);
112 elm_box_pack_end(vbox, sep);
113 evas_object_show(sep);
115 hbox = elm_box_add(win);
116 elm_box_horizontal_set(hbox, EINA_TRUE);
117 elm_box_pack_end(vbox, hbox);
118 evas_object_show(hbox);
120 ck = elm_check_add(win);
121 elm_object_text_set(ck, "editable selection");
122 elm_check_state_set(ck, elm_fileselector_is_save_get(fs_entry));
123 evas_object_smart_callback_add(ck, "changed", _current_sel_toggle, fs_entry);
124 elm_box_pack_end(hbox, ck);
125 evas_object_show(ck);
127 ck = elm_check_add(win);
128 elm_object_text_set(ck, "\"inwin\" mode");
129 elm_check_state_set(ck, elm_fileselector_entry_inwin_mode_get(fs_entry));
130 evas_object_smart_callback_add(ck, "changed", _inwin_mode_toggle, fs_entry);
131 elm_box_pack_end(hbox, ck);
132 evas_object_show(ck);
134 ck = elm_check_add(win);
135 elm_object_text_set(ck, "folders only");
136 elm_check_state_set(ck, elm_fileselector_folder_only_get(fs_entry));
137 evas_object_smart_callback_add(ck, "changed", _folder_only_toggle, fs_entry);
138 elm_box_pack_end(hbox, ck);
139 evas_object_show(ck);
141 ck = elm_check_add(win);
142 elm_object_text_set(ck, "expandable");
143 elm_check_state_set(ck, elm_fileselector_expandable_get(fs_entry));
144 evas_object_smart_callback_add(ck, "changed", _expandable_toggle, fs_entry);
145 elm_box_pack_end(hbox, ck);
146 evas_object_show(ck);
148 evas_object_smart_callback_add(fs_entry, "file,chosen", _file_chosen, NULL);
150 evas_object_resize(win, 400, 400);
151 evas_object_show(win);