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