efl
157 строк · 4.8 Кб
1/**
2* Simple Elementary's <b>file selector entry widget</b> example,
3* illustrating its usage and API.
4*
5* See stdout/stderr for output. Compile with:
6*
7* @verbatim
8* gcc -g fileselector_entry_example.c -o fileselector_entry_example `pkg-config --cflags --libs elementary`
9* @endverbatim
10*/
11
12#include <Elementary.h>
13
14/* hook on the file,chosen smart callback */
15static void
16_file_chosen(void *data EINA_UNUSED,
17Evas_Object *obj EINA_UNUSED,
18void *event_info)
19{
20const char *file = event_info;
21
22if (file)
23printf("File chosen: %s\n", file);
24else
25printf("File selection canceled.\n");
26}
27
28/* toggle inwin mode */
29static void
30_inwin_mode_toggle(void *data,
31Evas_Object *obj EINA_UNUSED,
32void *event_info EINA_UNUSED)
33{
34Evas_Object *fs_entry = data;
35Eina_Bool old_val = elm_fileselector_entry_inwin_mode_get(fs_entry);
36
37elm_fileselector_entry_inwin_mode_set(fs_entry, !old_val);
38printf("Inwin mode set to: %s\n", old_val ? "false" : "true");
39}
40
41static void
42_current_sel_toggle(void *data,
43Evas_Object *obj EINA_UNUSED,
44void *event_info EINA_UNUSED)
45{
46Evas_Object *fs_entry = data;
47Eina_Bool old_val = elm_fileselector_is_save_get(fs_entry);
48elm_fileselector_is_save_set(fs_entry, !old_val);
49
50printf("%s text entry with selected item's name\n",
51old_val ? "Disabling" : "Enabling");
52}
53
54static void
55_folder_only_toggle(void *data,
56Evas_Object *obj EINA_UNUSED,
57void *event_info EINA_UNUSED)
58{
59Evas_Object *fs_entry = data;
60Eina_Bool old_val = elm_fileselector_folder_only_get(fs_entry);
61elm_fileselector_folder_only_set(fs_entry, !old_val);
62
63printf("Folder only mode set to: %s\n", old_val ? "false" : "true");
64}
65
66static void
67_expandable_toggle(void *data,
68Evas_Object *obj EINA_UNUSED,
69void *event_info EINA_UNUSED)
70{
71Evas_Object *fs_entry = data;
72Eina_Bool old_val = elm_fileselector_expandable_get(fs_entry);
73elm_fileselector_expandable_set(fs_entry, !old_val);
74
75printf("Expandable folders mode set to: %s\n", old_val ? "false" : "true");
76}
77
78EAPI_MAIN int
79elm_main(int argc EINA_UNUSED,
80char **argv EINA_UNUSED)
81{
82Evas_Object *win, *vbox, *hbox, *ic, *ck, *fs_entry, *sep;
83
84elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
85
86win = elm_win_util_standard_add("fileselector-entry", "File Selector Entry Example");
87elm_win_autodel_set(win, EINA_TRUE);
88
89vbox = elm_box_add(win);
90evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91elm_win_resize_object_add(win, vbox);
92evas_object_show(vbox);
93
94ic = elm_icon_add(win);
95elm_icon_standard_set(ic, "file");
96evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
97
98/* file selector entry */
99fs_entry = elm_fileselector_entry_add(win);
100evas_object_size_hint_align_set(fs_entry, EVAS_HINT_FILL, 0);
101elm_fileselector_path_set(fs_entry, "/tmp");
102elm_object_text_set(fs_entry, "Select a file");
103elm_object_part_content_set(fs_entry, "button icon", ic);
104
105elm_box_pack_end(vbox, fs_entry);
106evas_object_show(fs_entry);
107evas_object_show(ic);
108
109/* attribute setting knobs */
110sep = elm_separator_add(win);
111elm_separator_horizontal_set(sep, EINA_TRUE);
112elm_box_pack_end(vbox, sep);
113evas_object_show(sep);
114
115hbox = elm_box_add(win);
116elm_box_horizontal_set(hbox, EINA_TRUE);
117elm_box_pack_end(vbox, hbox);
118evas_object_show(hbox);
119
120ck = elm_check_add(win);
121elm_object_text_set(ck, "editable selection");
122elm_check_state_set(ck, elm_fileselector_is_save_get(fs_entry));
123evas_object_smart_callback_add(ck, "changed", _current_sel_toggle, fs_entry);
124elm_box_pack_end(hbox, ck);
125evas_object_show(ck);
126
127ck = elm_check_add(win);
128elm_object_text_set(ck, "\"inwin\" mode");
129elm_check_state_set(ck, elm_fileselector_entry_inwin_mode_get(fs_entry));
130evas_object_smart_callback_add(ck, "changed", _inwin_mode_toggle, fs_entry);
131elm_box_pack_end(hbox, ck);
132evas_object_show(ck);
133
134ck = elm_check_add(win);
135elm_object_text_set(ck, "folders only");
136elm_check_state_set(ck, elm_fileselector_folder_only_get(fs_entry));
137evas_object_smart_callback_add(ck, "changed", _folder_only_toggle, fs_entry);
138elm_box_pack_end(hbox, ck);
139evas_object_show(ck);
140
141ck = elm_check_add(win);
142elm_object_text_set(ck, "expandable");
143elm_check_state_set(ck, elm_fileselector_expandable_get(fs_entry));
144evas_object_smart_callback_add(ck, "changed", _expandable_toggle, fs_entry);
145elm_box_pack_end(hbox, ck);
146evas_object_show(ck);
147
148evas_object_smart_callback_add(fs_entry, "file,chosen", _file_chosen, NULL);
149
150evas_object_resize(win, 400, 400);
151evas_object_show(win);
152
153elm_run();
154
155return 0;
156}
157ELM_MAIN()
158