update for beta release
[framework/uifw/e17.git] / src / modules / comp / e_mod_comp_cfdata.c
1 #include "e.h"
2 #include "e_mod_comp_cfdata.h"
3
4 EAPI void
5 e_mod_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd)
6 {
7    *match_edd = E_CONFIG_DD_NEW("Comp_Match", Match);
8 #undef T
9 #undef D
10 #define T Match
11 #define D *match_edd
12    E_CONFIG_VAL(D, T, title, STR);
13    E_CONFIG_VAL(D, T, name, STR);
14    E_CONFIG_VAL(D, T, clas, STR);
15    E_CONFIG_VAL(D, T, role, STR);
16    E_CONFIG_VAL(D, T, primary_type, INT);
17    E_CONFIG_VAL(D, T, borderless, CHAR);
18    E_CONFIG_VAL(D, T, dialog, CHAR);
19    E_CONFIG_VAL(D, T, accepts_focus, CHAR);
20    E_CONFIG_VAL(D, T, vkbd, CHAR);
21    E_CONFIG_VAL(D, T, quickpanel, CHAR);
22    E_CONFIG_VAL(D, T, argb, CHAR);
23    E_CONFIG_VAL(D, T, fullscreen, CHAR);
24    E_CONFIG_VAL(D, T, modal, CHAR);
25    E_CONFIG_VAL(D, T, shadow_style, STR);
26
27    *conf_edd = E_CONFIG_DD_NEW("Comp_Config", Config);
28 #undef T
29 #undef D
30 #define T Config
31 #define D *conf_edd
32    E_CONFIG_VAL(D, T, shadow_file, STR);
33    E_CONFIG_VAL(D, T, shadow_style, STR);
34    E_CONFIG_VAL(D, T, engine, INT);
35    E_CONFIG_VAL(D, T, max_unmapped_pixels, INT);
36    E_CONFIG_VAL(D, T, max_unmapped_time, INT);
37    E_CONFIG_VAL(D, T, min_unmapped_time, INT);
38    E_CONFIG_VAL(D, T, fps_average_range, INT);
39    E_CONFIG_VAL(D, T, fps_corner, UCHAR);
40    E_CONFIG_VAL(D, T, fps_show, UCHAR);
41    E_CONFIG_VAL(D, T, use_shadow, UCHAR);
42    E_CONFIG_VAL(D, T, indirect, UCHAR);
43    E_CONFIG_VAL(D, T, texture_from_pixmap, UCHAR);
44    E_CONFIG_VAL(D, T, lock_fps, UCHAR);
45    E_CONFIG_VAL(D, T, efl_sync, UCHAR);
46    E_CONFIG_VAL(D, T, loose_sync, UCHAR);
47    E_CONFIG_VAL(D, T, grab, UCHAR);
48    E_CONFIG_VAL(D, T, vsync, UCHAR);
49    E_CONFIG_VAL(D, T, keep_unmapped, UCHAR);
50    E_CONFIG_VAL(D, T, send_flush, UCHAR);
51    E_CONFIG_VAL(D, T, send_dump, UCHAR);
52    E_CONFIG_VAL(D, T, nocomp_fs, UCHAR);
53    E_CONFIG_VAL(D, T, smooth_windows, UCHAR);
54    E_CONFIG_VAL(D, T, first_draw_delay, DOUBLE);
55    E_CONFIG_LIST(D, T, match.popups, *match_edd);
56    E_CONFIG_LIST(D, T, match.borders, *match_edd);
57    E_CONFIG_LIST(D, T, match.overrides, *match_edd);
58    E_CONFIG_LIST(D, T, match.menus, *match_edd);
59 }
60
61 EAPI Config *
62 e_mod_comp_cfdata_config_new(void)
63 {
64    Config *cfg;
65    Match *mat;
66
67    cfg = E_NEW(Config, 1);
68    cfg->shadow_file = NULL;
69    cfg->shadow_style = eina_stringshare_add("default");
70    cfg->engine = E_EVAS_ENGINE_SOFTWARE_X11;
71    cfg->max_unmapped_pixels = 32 * 1024;  // implement
72    cfg->max_unmapped_time = 10 * 3600; // implement
73    cfg->min_unmapped_time = 5 * 60; // implement
74    cfg->fps_average_range = 30;
75    cfg->fps_corner = 0;
76    cfg->fps_show = 0;
77    cfg->use_shadow = 1;
78    cfg->indirect = 0;
79    cfg->texture_from_pixmap = 1;
80    cfg->lock_fps = 1;
81    cfg->efl_sync = 1;
82    cfg->loose_sync = 1;
83    cfg->grab = 0;
84    cfg->vsync = 1;
85    cfg->keep_unmapped = 1;
86    cfg->send_flush = 1; // implement
87    cfg->send_dump = 1; // implement
88    cfg->nocomp_fs = 1; // buggy
89    cfg->smooth_windows = 0; // 1 if gl, 0 if not
90    cfg->first_draw_delay = 0.15;
91
92    cfg->match.popups = NULL;
93    mat = E_NEW(Match, 1);
94    cfg->match.popups = eina_list_append(cfg->match.popups, mat);
95    mat->name = eina_stringshare_add("shelf");
96    mat->shadow_style = eina_stringshare_add("popup");
97    mat = E_NEW(Match, 1);
98    cfg->match.popups = eina_list_append(cfg->match.popups, mat);
99    mat->shadow_style = eina_stringshare_add("popup");
100
101    cfg->match.borders = NULL;
102
103    cfg->match.overrides = NULL;
104    mat = E_NEW(Match, 1);
105    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
106    mat->name = eina_stringshare_add("E");
107    mat->clas = eina_stringshare_add("Background_Window");
108    mat->shadow_style = eina_stringshare_add("none");
109    mat = E_NEW(Match, 1);
110    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
111    mat->name = eina_stringshare_add("E");
112    mat->clas = eina_stringshare_add("everything");
113    mat->shadow_style = eina_stringshare_add("everything");
114    mat = E_NEW(Match, 1);
115    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
116    mat->primary_type = ECORE_X_WINDOW_TYPE_DROPDOWN_MENU;
117    mat->shadow_style = eina_stringshare_add("menu");
118    mat = E_NEW(Match, 1);
119    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
120    mat->primary_type = ECORE_X_WINDOW_TYPE_POPUP_MENU;
121    mat->shadow_style = eina_stringshare_add("menu");
122    mat = E_NEW(Match, 1);
123    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
124    mat->primary_type = ECORE_X_WINDOW_TYPE_COMBO;
125    mat->shadow_style = eina_stringshare_add("menu");
126    mat = E_NEW(Match, 1);
127    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
128    mat->primary_type = ECORE_X_WINDOW_TYPE_TOOLTIP;
129    mat->shadow_style = eina_stringshare_add("menu");
130    mat = E_NEW(Match, 1);
131    cfg->match.overrides = eina_list_append(cfg->match.overrides, mat);
132    mat->shadow_style = eina_stringshare_add("popup");
133
134    cfg->match.menus = NULL;
135    mat = E_NEW(Match, 1);
136    cfg->match.menus = eina_list_append(cfg->match.menus, mat);
137    mat->shadow_style = eina_stringshare_add("menu");
138    
139    return cfg;
140 }
141
142 static void
143 _match_list_free(Eina_List *list)
144 {
145    Match *m;
146
147    EINA_LIST_FREE(list, m)
148      {
149         if (m->title) eina_stringshare_del(m->title);
150         if (m->name) eina_stringshare_del(m->name);
151         if (m->clas) eina_stringshare_del(m->clas);
152         if (m->role) eina_stringshare_del(m->role);
153         if (m->shadow_style) eina_stringshare_del(m->shadow_style);
154         free(m);
155      }
156 }
157
158 EAPI void
159 e_mod_cfdata_config_free(Config *cfg)
160 {
161    if (cfg->shadow_file) eina_stringshare_del(cfg->shadow_file);
162    if (cfg->shadow_style) eina_stringshare_del(cfg->shadow_style);
163
164    _match_list_free(cfg->match.popups);
165    _match_list_free(cfg->match.borders);
166    _match_list_free(cfg->match.overrides);
167    _match_list_free(cfg->match.menus);
168
169    free(cfg);
170 }
171