efl

Форк
0
/
fileselector_button_example.c 
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

14
static void /* hook on the sole smart callback */
15
_file_chosen(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
16
{
17
   Evas_Object *entry = data;
18
   const char *file = event_info;
19
   if (file)
20
     {
21
        elm_object_text_set(entry, file);
22
        printf("File chosen: %s\n", file);
23
     }
24
   else
25
     printf("File selection canceled.\n");
26
}
27

28
/* toggle inwin mode */
29
static void
30
_inwin_mode_toggle(void *data, Evas_Object *obj EINA_UNUSED,
31
                   void *event_info EINA_UNUSED)
32
{
33
   Evas_Object *fs_bt = data;
34
   Eina_Bool old_val = elm_fileselector_button_inwin_mode_get(fs_bt);
35

36
   elm_fileselector_button_inwin_mode_set(fs_bt, !old_val);
37
   printf("Inwin mode set to: %s\n", old_val ? "false" : "true");
38
}
39

40
static void
41
_current_sel_toggle(void *data, Evas_Object *obj EINA_UNUSED,
42
                    void *event_info EINA_UNUSED)
43
{
44
   Evas_Object *fs_bt = data;
45
   Eina_Bool old_val = elm_fileselector_is_save_get(fs_bt);
46
   elm_fileselector_is_save_set(fs_bt, !old_val);
47

48
   printf("%s text entry with selected item's name\n",
49
          old_val ? "Disabling" : "Enabling");
50
}
51

52
static void
53
_folder_only_toggle(void *data,
54
                    Evas_Object *obj EINA_UNUSED,
55
                    void *event_info EINA_UNUSED)
56
{
57
   Evas_Object *fs_bt = data;
58
   Eina_Bool old_val = elm_fileselector_folder_only_get(fs_bt);
59
   elm_fileselector_folder_only_set(fs_bt, !old_val);
60

61
   printf("Folder only mode set to: %s\n", old_val ? "false" : "true");
62
}
63

64
static void
65
_expandable_toggle(void *data, Evas_Object *obj EINA_UNUSED,
66
                   void *event_info EINA_UNUSED)
67
{
68
   Evas_Object *fs_bt = data;
69
   Eina_Bool old_val = elm_fileselector_expandable_get(fs_bt);
70
   elm_fileselector_expandable_set(fs_bt, !old_val);
71

72
   printf("Expandable folders mode set to: %s\n", old_val ? "false" : "true");
73
}
74

75
EAPI_MAIN int
76
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
77
{
78
   Evas_Object *win, *vbox, *hbox, *ic, *ck, *fs_bt, *en, *lb, *sep;
79

80
   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
81

82
   win = elm_win_util_standard_add("fileselector-button", "File Selector Button Example");
83
   elm_win_autodel_set(win, EINA_TRUE);
84

85
   vbox = elm_box_add(win);
86
   evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
87
   elm_win_resize_object_add(win, vbox);
88
   evas_object_show(vbox);
89

90
   ic = elm_icon_add(win);
91
   elm_icon_standard_set(ic, "file");
92
   evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
93

94
   /* file selector button */
95
   fs_bt = elm_fileselector_button_add(win);
96
   elm_fileselector_path_set(fs_bt, "/tmp");
97
   elm_object_text_set(fs_bt, "Select a file");
98
   elm_object_part_content_set(fs_bt, "icon", ic);
99

100
   elm_box_pack_end(vbox, fs_bt);
101
   evas_object_show(fs_bt);
102
   evas_object_show(ic);
103

104
   /* attribute setting knobs */
105
   sep = elm_separator_add(win);
106
   elm_separator_horizontal_set(sep, EINA_TRUE);
107
   elm_box_pack_end(vbox, sep);
108
   evas_object_show(sep);
109

110
   hbox = elm_box_add(win);
111
   elm_box_horizontal_set(hbox, EINA_TRUE);
112
   elm_box_pack_end(vbox, hbox);
113
   evas_object_show(hbox);
114

115
   ck = elm_check_add(win);
116
   elm_object_text_set(ck, "editable selection");
117
   elm_check_state_set(ck, elm_fileselector_is_save_get(fs_bt));
118
   evas_object_smart_callback_add(ck, "changed", _current_sel_toggle, fs_bt);
119
   elm_box_pack_end(hbox, ck);
120
   evas_object_show(ck);
121

122
   ck = elm_check_add(win);
123
   elm_object_text_set(ck, "\"inwin\" mode");
124
   elm_check_state_set(ck, elm_fileselector_button_inwin_mode_get(fs_bt));
125
   evas_object_smart_callback_add(ck, "changed", _inwin_mode_toggle, fs_bt);
126
   elm_box_pack_end(hbox, ck);
127
   evas_object_show(ck);
128

129
   ck = elm_check_add(win);
130
   elm_object_text_set(ck, "folders only");
131
   elm_check_state_set(ck, elm_fileselector_folder_only_get(fs_bt));
132
   evas_object_smart_callback_add(ck, "changed", _folder_only_toggle, fs_bt);
133
   elm_box_pack_end(hbox, ck);
134
   evas_object_show(ck);
135

136
   ck = elm_check_add(win);
137
   elm_object_text_set(ck, "expandable");
138
   elm_check_state_set(ck, elm_fileselector_expandable_get(fs_bt));
139
   evas_object_smart_callback_add(ck, "changed", _expandable_toggle, fs_bt);
140
   elm_box_pack_end(hbox, ck);
141
   evas_object_show(ck);
142

143
   lb = elm_label_add(win);
144
   elm_object_text_set(lb, "Last selection:");
145
   elm_box_pack_end(vbox, lb);
146
   evas_object_show(lb);
147

148
   en = elm_entry_add(win);
149
   elm_entry_line_wrap_set(en, EINA_FALSE);
150
   elm_entry_editable_set(en, EINA_FALSE);
151
   evas_object_smart_callback_add(fs_bt, "file,chosen", _file_chosen, en);
152
   elm_box_pack_end(vbox, en);
153
   evas_object_show(en);
154

155
   evas_object_resize(win, 400, 400);
156
   evas_object_show(win);
157

158
   elm_run();
159

160
   return 0;
161
}
162
ELM_MAIN()
163

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.