efl

Форк
0
/
fileselector_entry_example.c 
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 */
15
static void
16
_file_chosen(void        *data EINA_UNUSED,
17
             Evas_Object *obj EINA_UNUSED,
18
             void        *event_info)
19
{
20
   const char *file = event_info;
21

22
   if (file)
23
     printf("File chosen: %s\n", file);
24
   else
25
     printf("File selection canceled.\n");
26
}
27

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

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

41
static void
42
_current_sel_toggle(void        *data,
43
                    Evas_Object *obj EINA_UNUSED,
44
                    void        *event_info EINA_UNUSED)
45
{
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);
49

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

54
static void
55
_folder_only_toggle(void        *data,
56
                    Evas_Object *obj EINA_UNUSED,
57
                    void        *event_info EINA_UNUSED)
58
{
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);
62

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

66
static void
67
_expandable_toggle(void        *data,
68
                   Evas_Object *obj EINA_UNUSED,
69
                   void        *event_info EINA_UNUSED)
70
{
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);
74

75
   printf("Expandable folders mode set to: %s\n", old_val ? "false" : "true");
76
}
77

78
EAPI_MAIN int
79
elm_main(int    argc EINA_UNUSED,
80
         char **argv EINA_UNUSED)
81
{
82
   Evas_Object *win, *vbox, *hbox, *ic, *ck, *fs_entry, *sep;
83

84
   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
85

86
   win = elm_win_util_standard_add("fileselector-entry", "File Selector Entry Example");
87
   elm_win_autodel_set(win, EINA_TRUE);
88

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);
93

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);
97

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);
104

105
   elm_box_pack_end(vbox, fs_entry);
106
   evas_object_show(fs_entry);
107
   evas_object_show(ic);
108

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);
114

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);
119

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);
126

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);
133

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);
140

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);
147

148
   evas_object_smart_callback_add(fs_entry, "file,chosen", _file_chosen, NULL);
149

150
   evas_object_resize(win, 400, 400);
151
   evas_object_show(win);
152

153
   elm_run();
154

155
   return 0;
156
}
157
ELM_MAIN()
158

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

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

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

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