[JungWooHyun] doing merge job ~
[framework/uifw/elementary.git] / src / examples / fileselector_entry_example.c
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 `pkg-config --cflags --libs elementary` file selector_entry_example.c -o file selector_entry_example
9  * @endverbatim
10  */
11
12 #include <Elementary.h>
13 #ifdef HAVE_CONFIG_H
14 # include "elementary_config.h"
15 #else
16 # define __UNUSED__
17 #endif
18
19 static void
20 _on_done(void        *data __UNUSED__,
21          Evas_Object *obj __UNUSED__,
22          void        *event_info __UNUSED__)
23 {
24    elm_exit();
25 }
26
27 /* hook on the file,chosen smart callback */
28 static void
29 _file_chosen(void        *data __UNUSED__,
30              Evas_Object *obj __UNUSED__,
31              void        *event_info)
32 {
33    const char *file = event_info;
34
35    if (file)
36      printf("File chosen: %s\n", file);
37    else
38      printf("File selection canceled.\n");
39 }
40
41 /* toggle inwin mode */
42 static void
43 _inwin_mode_toggle(void        *data,
44                    Evas_Object *obj __UNUSED__,
45                    void        *event_info __UNUSED__)
46 {
47    Evas_Object *fs_entry = data;
48    Eina_Bool old_val = elm_fileselector_entry_inwin_mode_get(fs_entry);
49
50    elm_fileselector_entry_inwin_mode_set(fs_entry, !old_val);
51    printf("Inwin mode set to: %s\n", old_val ? "false" : "true");
52 }
53
54 static void
55 _current_sel_toggle(void        *data,
56                     Evas_Object *obj __UNUSED__,
57                     void        *event_info __UNUSED__)
58 {
59    Evas_Object *fs_entry = data;
60    Eina_Bool old_val = elm_fileselector_entry_is_save_get(fs_entry);
61    elm_fileselector_entry_is_save_set(fs_entry, !old_val);
62
63    printf("%s text entry with selected item's name\n",
64           old_val ? "Disabling" : "Enabling");
65 }
66
67 static void
68 _folder_only_toggle(void        *data,
69                     Evas_Object *obj __UNUSED__,
70                     void        *event_info __UNUSED__)
71 {
72    Evas_Object *fs_entry = data;
73    Eina_Bool old_val = elm_fileselector_entry_folder_only_get(fs_entry);
74    elm_fileselector_entry_folder_only_set(fs_entry, !old_val);
75
76    printf("Folder only mode set to: %s\n", old_val ? "false" : "true");
77 }
78
79 static void
80 _expandable_toggle(void        *data,
81                    Evas_Object *obj __UNUSED__,
82                    void        *event_info __UNUSED__)
83 {
84    Evas_Object *fs_entry = data;
85    Eina_Bool old_val = elm_fileselector_entry_expandable_get(fs_entry);
86    elm_fileselector_entry_expandable_set(fs_entry, !old_val);
87
88    printf("Expandable folders mode set to: %s\n", old_val ? "false" : "true");
89 }
90
91 EAPI_MAIN int
92 elm_main(int    argc __UNUSED__,
93          char **argv __UNUSED__)
94 {
95    Evas_Object *win, *bg, *vbox, *hbox, *ic, *ck, *fs_entry, *sep;
96
97    win = elm_win_add(NULL, "fileselector-entry", ELM_WIN_BASIC);
98    elm_win_title_set(win, "File Selector Entry Example");
99    evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
100
101    bg = elm_bg_add(win);
102    elm_win_resize_object_add(win, bg);
103    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
104    evas_object_show(bg);
105
106    vbox = elm_box_add(win);
107    elm_win_resize_object_add(win, vbox);
108    evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
109    evas_object_show(vbox);
110
111    ic = elm_icon_add(win);
112    elm_icon_standard_set(ic, "file");
113    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
114
115    /* file selector entry */
116    fs_entry = elm_fileselector_entry_add(win);
117    evas_object_size_hint_align_set(fs_entry, EVAS_HINT_FILL, 0);
118    elm_fileselector_entry_path_set(fs_entry, "/tmp");
119    elm_object_text_set(fs_entry, "Select a file");
120    elm_object_part_content_set(fs_entry, "button icon", ic);
121
122    elm_box_pack_end(vbox, fs_entry);
123    evas_object_show(fs_entry);
124    evas_object_show(ic);
125
126    /* attribute setting knobs */
127    sep = elm_separator_add(win);
128    elm_separator_horizontal_set(sep, EINA_TRUE);
129    elm_box_pack_end(vbox, sep);
130    evas_object_show(sep);
131
132    hbox = elm_box_add(win);
133    elm_box_horizontal_set(hbox, EINA_TRUE);
134    elm_box_pack_end(vbox, hbox);
135    evas_object_show(hbox);
136
137    ck = elm_check_add(win);
138    elm_object_text_set(ck, "editable selection");
139    elm_check_state_set(ck, elm_fileselector_entry_is_save_get(fs_entry));
140    evas_object_smart_callback_add(ck, "changed", _current_sel_toggle, fs_entry);
141    elm_box_pack_end(hbox, ck);
142    evas_object_show(ck);
143
144    ck = elm_check_add(win);
145    elm_object_text_set(ck, "\"inwin\" mode");
146    elm_check_state_set(ck, elm_fileselector_entry_inwin_mode_get(fs_entry));
147    evas_object_smart_callback_add(ck, "changed", _inwin_mode_toggle, fs_entry);
148    elm_box_pack_end(hbox, ck);
149    evas_object_show(ck);
150
151    ck = elm_check_add(win);
152    elm_object_text_set(ck, "folders only");
153    elm_check_state_set(ck, elm_fileselector_entry_folder_only_get(fs_entry));
154    evas_object_smart_callback_add(ck, "changed", _folder_only_toggle, fs_entry);
155    elm_box_pack_end(hbox, ck);
156    evas_object_show(ck);
157
158    ck = elm_check_add(win);
159    elm_object_text_set(ck, "expandable");
160    elm_check_state_set(ck, elm_fileselector_entry_expandable_get(fs_entry));
161    evas_object_smart_callback_add(ck, "changed", _expandable_toggle, fs_entry);
162    elm_box_pack_end(hbox, ck);
163    evas_object_show(ck);
164
165    evas_object_smart_callback_add(fs_entry, "file,chosen", _file_chosen, NULL);
166
167    evas_object_resize(win, 400, 400);
168    evas_object_show(win);
169
170    elm_run();
171    return 0;
172 }
173
174 ELM_MAIN()