2 #include "e_mod_main.h"
3 #include "e_mod_config.h"
4 #include "e_mod_comp.h"
6 typedef struct _E_Demo_Style_Item
10 Evas_Object *livethumb;
16 typedef struct _Match_Config
20 char *title, *name, *clas, *role;
21 int borderless, dialog, accepts_focus, vkbd;
22 int quickpanel, argb, fullscreen, modal;
25 struct _E_Config_Dialog_Data
30 int texture_from_pixmap;
38 const char *shadow_style;
49 Evas_Object *popups_il;
50 Evas_Object *borders_il;
51 Evas_Object *overrides_il;
52 Evas_Object *menus_il;
57 int max_unmapped_pixels;
58 int max_unmapped_time;
59 int min_unmapped_time;
66 int fps_average_range;
67 double first_draw_delay;
71 static void *_create_data(E_Config_Dialog *cfd);
72 static void _free_data(E_Config_Dialog *cfd,
73 E_Config_Dialog_Data *cfdata);
74 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd,
76 E_Config_Dialog_Data *cfdata);
77 static int _basic_apply_data(E_Config_Dialog *cfd,
78 E_Config_Dialog_Data *cfdata);
81 e_int_config_comp_module(E_Container *con,
82 const char *params __UNUSED__)
85 E_Config_Dialog_View *v;
89 if (e_config_dialog_find("E", "appearance/comp")) return NULL;
90 v = E_NEW(E_Config_Dialog_View, 1);
92 v->create_cfdata = _create_data;
93 v->free_cfdata = _free_data;
94 v->basic.apply_cfdata = _basic_apply_data;
95 v->basic.create_widgets = _basic_create_widgets;
97 snprintf(buf, sizeof(buf), "%s/e-module-comp.edj",
98 e_module_dir_get(mod->module));
99 cfd = e_config_dialog_new(con, _("Composite Settings"),
100 "E", "appearance/comp", buf, 0, v, mod);
101 mod->config_dialog = cfd;
110 if (m2->match.title) m2->match.title = eina_stringshare_add(m2->match.title);
111 if (m2->match.name) m2->match.name = eina_stringshare_add(m2->match.name);
112 if (m2->match.clas) m2->match.clas = eina_stringshare_add(m2->match.clas);
113 if (m2->match.role) m2->match.role = eina_stringshare_add(m2->match.role);
114 if (m2->match.shadow_style) m2->match.shadow_style = eina_stringshare_add(m2->match.shadow_style);
118 _create_data(E_Config_Dialog *cfd)
120 E_Config_Dialog_Data *cfdata;
125 cfdata = E_NEW(E_Config_Dialog_Data, 1);
127 cfdata->use_shadow = _comp_mod->conf->use_shadow;
128 cfdata->engine = _comp_mod->conf->engine;
129 if ((cfdata->engine != E_EVAS_ENGINE_SOFTWARE_X11) &&
130 (cfdata->engine != E_EVAS_ENGINE_GL_X11))
131 cfdata->engine = E_EVAS_ENGINE_SOFTWARE_X11;
132 cfdata->indirect = _comp_mod->conf->indirect;
133 cfdata->texture_from_pixmap = _comp_mod->conf->texture_from_pixmap;
134 cfdata->smooth_windows = _comp_mod->conf->smooth_windows;
135 cfdata->lock_fps = _comp_mod->conf->lock_fps;
136 cfdata->efl_sync = _comp_mod->conf->efl_sync;
137 cfdata->loose_sync = _comp_mod->conf->loose_sync;
138 cfdata->grab = _comp_mod->conf->grab;
139 cfdata->vsync = _comp_mod->conf->vsync;
140 if (_comp_mod->conf->shadow_style)
141 cfdata->shadow_style = eina_stringshare_add(_comp_mod->conf->shadow_style);
143 cfdata->keep_unmapped = _comp_mod->conf->keep_unmapped;
144 cfdata->max_unmapped_pixels = _comp_mod->conf->max_unmapped_pixels;
145 cfdata->max_unmapped_time = _comp_mod->conf->max_unmapped_time;
146 cfdata->min_unmapped_time = _comp_mod->conf->min_unmapped_time;
147 cfdata->send_flush = _comp_mod->conf->send_flush;
148 cfdata->send_dump = _comp_mod->conf->send_dump;
149 cfdata->nocomp_fs = _comp_mod->conf->nocomp_fs;
151 cfdata->fps_show = _comp_mod->conf->fps_show;
152 cfdata->fps_corner = _comp_mod->conf->fps_corner;
153 cfdata->fps_average_range = _comp_mod->conf->fps_average_range;
154 if (cfdata->fps_average_range < 1) cfdata->fps_average_range = 12;
155 else if (cfdata->fps_average_range > 120)
156 cfdata->fps_average_range = 120;
157 cfdata->first_draw_delay = _comp_mod->conf->first_draw_delay;
159 EINA_LIST_FOREACH(_comp_mod->conf->match.popups, l, m)
161 m2 = E_NEW(Match_Config, 1);
164 cfdata->match.popups = eina_list_append(cfdata->match.popups, m2);
167 EINA_LIST_FOREACH(_comp_mod->conf->match.borders, l, m)
169 m2 = E_NEW(Match_Config, 1);
172 cfdata->match.borders = eina_list_append(cfdata->match.borders, m2);
175 EINA_LIST_FOREACH(_comp_mod->conf->match.overrides, l, m)
177 m2 = E_NEW(Match_Config, 1);
180 cfdata->match.overrides = eina_list_append(cfdata->match.overrides, m2);
183 EINA_LIST_FOREACH(_comp_mod->conf->match.menus, l, m)
185 m2 = E_NEW(Match_Config, 1);
188 cfdata->match.menus = eina_list_append(cfdata->match.menus, m2);
195 _match_free(Match_Config *m)
197 if (m->match.title) eina_stringshare_del(m->match.title);
198 if (m->match.name) eina_stringshare_del(m->match.name);
199 if (m->match.clas) eina_stringshare_del(m->match.clas);
200 if (m->match.role) eina_stringshare_del(m->match.role);
201 if (m->match.shadow_style) eina_stringshare_del(m->match.shadow_style);
202 if (m->title) free(m->title);
203 if (m->name) free(m->name);
204 if (m->clas) free(m->clas);
205 if (m->role) free(m->role);
210 _free_data(E_Config_Dialog *cfd __UNUSED__,
211 E_Config_Dialog_Data *cfdata)
215 _comp_mod->config_dialog = NULL;
216 if (cfdata->shadow_style) eina_stringshare_del(cfdata->shadow_style);
217 EINA_LIST_FREE(cfdata->match.popups, m)
221 EINA_LIST_FREE(cfdata->match.borders, m)
225 EINA_LIST_FREE(cfdata->match.overrides, m)
229 EINA_LIST_FREE(cfdata->match.menus, m)
237 _shadow_changed(void *data,
239 void *event_info __UNUSED__)
241 E_Config_Dialog_Data *cfdata = data;
243 Eina_List *style_list;
244 const E_Demo_Style_Item *it;
247 orec0 = evas_object_name_find(evas_object_evas_get(obj), "style_shadows");
248 style_list = evas_object_data_get(orec0, "list");
249 EINA_LIST_FOREACH(style_list, l, it)
251 if (cfdata->use_shadow)
252 edje_object_signal_emit(it->preview, "e,state,shadow,on", "e");
254 edje_object_signal_emit(it->preview, "e,state,shadow,off", "e");
259 _style_demo(void *data)
261 Eina_List *style_shadows, *l;
263 const E_Demo_Style_Item *it;
265 demo_state = (long)evas_object_data_get(data, "style_demo_state");
266 demo_state = (demo_state + 1) % 4;
267 evas_object_data_set(data, "style_demo_state", (void *)(long)demo_state);
269 style_shadows = evas_object_data_get(data, "style_shadows");
270 EINA_LIST_FOREACH(style_shadows, l, it)
272 Evas_Object *ob = it->preview;
273 Evas_Object *of = it->frame;
278 edje_object_signal_emit(ob, "e,state,visible,on", "e");
279 edje_object_signal_emit(ob, "e,state,focus,on", "e");
280 edje_object_part_text_set(of, "e.text.label", _("Visible"));
284 edje_object_signal_emit(ob, "e,state,focus,off", "e");
285 edje_object_part_text_set(of, "e.text.label", _("Focus-Out"));
289 edje_object_signal_emit(ob, "e,state,focus,on", "e");
290 edje_object_part_text_set(of, "e.text.label", _("Focus-In"));
294 edje_object_signal_emit(ob, "e,state,visible,off", "e");
295 edje_object_part_text_set(of, "e.text.label", _("Hidden"));
302 return ECORE_CALLBACK_RENEW;
306 _style_selector_del(void *data __UNUSED__,
309 void *event_info __UNUSED__)
311 Eina_List *style_shadows, *style_list;
315 orec0 = evas_object_name_find(e, "style_shadows");
316 style_list = evas_object_data_get(orec0, "list");
318 style_shadows = evas_object_data_get(o, "style_shadows");
321 E_Demo_Style_Item *ds_it;
323 EINA_LIST_FREE(style_shadows, ds_it)
325 style_list = eina_list_remove(style_list, ds_it);
327 evas_object_del(ds_it->client);
328 evas_object_del(ds_it->border);
329 evas_object_del(ds_it->frame);
330 evas_object_del(ds_it->preview);
331 evas_object_del(ds_it->layout);
332 evas_object_del(ds_it->livethumb);
335 evas_object_data_set(o, "style_shadows", NULL);
338 timer = evas_object_data_get(o, "style_timer");
341 ecore_timer_del(timer);
342 evas_object_data_set(o, "style_timer", NULL);
345 evas_object_data_set(orec0, "list", style_list);
349 _style_selector(Evas *evas,
353 Evas_Object *oi, *ob, *oo, *obd, *orec, *oly, *orec0;
354 Eina_List *styles, *l, *style_shadows = NULL, *style_list;
361 orec0 = evas_object_name_find(evas, "style_shadows");
362 style_list = evas_object_data_get(orec0, "list");
363 oi = e_widget_ilist_add(evas, 80, 80, source);
364 evas_object_event_callback_add(oi, EVAS_CALLBACK_DEL,
365 _style_selector_del, oi);
367 styles = e_theme_comp_list();
369 EINA_LIST_FOREACH(styles, l, style)
371 E_Demo_Style_Item *ds_it;
374 ds_it = malloc(sizeof(E_Demo_Style_Item));
376 ob = e_livethumb_add(evas);
377 ds_it->livethumb = ob;
378 e_livethumb_vsize_set(ob, 240, 240);
380 oly = e_layout_add(e_livethumb_evas_get(ob));
382 e_layout_virtual_size_set(oly, 240, 240);
383 e_livethumb_thumb_set(ob, oly);
384 evas_object_show(oly);
386 oo = edje_object_add(e_livethumb_evas_get(ob));
388 snprintf(buf, sizeof(buf), "e/comp/%s", style);
389 e_theme_edje_object_set(oo, "base/theme/borders", buf);
390 e_layout_pack(oly, oo);
391 e_layout_child_move(oo, 39, 39);
392 e_layout_child_resize(oo, 162, 162);
393 if (use_shadow) edje_object_signal_emit(oo, "e,state,shadow,on", "e");
394 edje_object_signal_emit(oo, "e,state,visible,on", "e");
395 evas_object_show(oo);
397 ds_it->frame = edje_object_add(evas);
398 e_theme_edje_object_set
399 (ds_it->frame, "base/theme/modules/comp", "e/modules/comp/preview");
400 edje_object_part_swallow(ds_it->frame, "e.swallow.preview", ob);
401 evas_object_show(ds_it->frame);
402 style_shadows = eina_list_append(style_shadows, ds_it);
404 obd = edje_object_add(e_livethumb_evas_get(ob));
406 e_theme_edje_object_set(obd, "base/theme/borders",
407 "e/widgets/border/default/border");
408 edje_object_part_text_set(obd, "e.text.title", _("Title"));
409 edje_object_signal_emit(obd, "e,state,focused", "e");
410 edje_object_part_swallow(oo, "e.swallow.content", obd);
411 evas_object_show(obd);
413 orec = evas_object_rectangle_add(e_livethumb_evas_get(ob));
414 ds_it->client = orec;
415 evas_object_color_set(orec, 255, 255, 255, 255);
416 edje_object_part_swallow(obd, "e.swallow.client", orec);
417 evas_object_show(orec);
419 e_widget_ilist_append(oi, ds_it->frame, style, NULL, NULL, style);
420 evas_object_show(ob);
423 if (!strcmp(*source, style)) sel = n;
427 style_list = eina_list_append(style_list, ds_it);
429 evas_object_data_set(orec0, "list", style_list);
430 evas_object_data_set(oi, "style_shadows", style_shadows);
431 timer = ecore_timer_add(3.0, _style_demo, oi);
432 evas_object_data_set(oi, "style_timer", timer);
433 evas_object_data_set(oi, "style_demo_state", (void *)1);
434 e_widget_size_min_get(oi, &wmw, &wmh);
435 e_widget_size_min_set(oi, 160, 100);
436 e_widget_ilist_selected_set(oi, sel);
437 e_widget_ilist_go(oi);
439 EINA_LIST_FREE(styles, str)
440 eina_stringshare_del(str);
446 _match_sel(void *data __UNUSED__)
448 // Match_Config *m = data;
449 // E_Config_Dialog *cfd = m->cfd;
453 _match_type_label_get(int type)
455 if (ECORE_X_WINDOW_TYPE_UNKNOWN == type)
457 if (ECORE_X_WINDOW_TYPE_COMBO == type)
459 if (ECORE_X_WINDOW_TYPE_DESKTOP == type)
461 if (ECORE_X_WINDOW_TYPE_DIALOG == type)
463 if (ECORE_X_WINDOW_TYPE_DOCK == type)
465 if (ECORE_X_WINDOW_TYPE_DND == type)
466 return _("Drag and Drop");
467 if (ECORE_X_WINDOW_TYPE_MENU == type)
469 if (ECORE_X_WINDOW_TYPE_DROPDOWN_MENU == type)
470 return _("Menu (Dropdown)");
471 if (ECORE_X_WINDOW_TYPE_POPUP_MENU == type)
472 return _("Menu (Popup)");
473 if (ECORE_X_WINDOW_TYPE_NORMAL == type)
475 if (ECORE_X_WINDOW_TYPE_NOTIFICATION == type)
476 return _("Notification");
477 if (ECORE_X_WINDOW_TYPE_SPLASH == type)
479 if (ECORE_X_WINDOW_TYPE_TOOLBAR == type)
481 if (ECORE_X_WINDOW_TYPE_TOOLTIP == type)
483 if (ECORE_X_WINDOW_TYPE_UTILITY == type)
490 _match_label_get(Match_Config *m)
493 Eina_Strbuf *buf = eina_strbuf_new();
497 eina_strbuf_append(buf, _("Title:"));
498 eina_strbuf_append(buf, m->match.title);
499 eina_strbuf_append(buf, _(" / "));
501 if (m->match.primary_type)
503 eina_strbuf_append(buf, _("Type:"));
504 eina_strbuf_append(buf, _match_type_label_get(m->match.primary_type));
505 eina_strbuf_append(buf, _(" / "));
509 eina_strbuf_append(buf, _("Name:"));
510 eina_strbuf_append(buf, m->match.name);
511 eina_strbuf_append(buf, _(" / "));
515 eina_strbuf_append(buf, _("Class:"));
516 eina_strbuf_append(buf, m->match.clas);
517 eina_strbuf_append(buf, _(" / "));
521 eina_strbuf_append(buf, _("Role:"));
522 eina_strbuf_append(buf, m->match.role);
523 eina_strbuf_append(buf, _(" / "));
525 if (m->match.shadow_style)
527 eina_strbuf_append(buf, _("Style:"));
528 eina_strbuf_append(buf, m->match.shadow_style);
531 if (!eina_strbuf_length_get(buf))
534 label = strdup(eina_strbuf_string_get(buf));
535 eina_strbuf_free(buf);
541 _match_ilist_append(Evas_Object *il,
546 char *name = _match_label_get(m);
549 e_widget_ilist_append(il, NULL, name, _match_sel, m, NULL);
553 e_widget_ilist_prepend_relative(il, NULL, name, _match_sel, m, NULL, pos);
555 e_widget_ilist_append_relative(il, NULL, name, _match_sel, m, NULL, pos);
561 _match_list_up(Eina_List **list,
566 l = eina_list_data_find_list(*list, m);
569 *list = eina_list_remove_list(*list, l);
570 if (lp) *list = eina_list_prepend_relative_list(*list, m, lp);
571 else *list = eina_list_prepend(*list, m);
575 _match_list_down(Eina_List **list,
580 l = eina_list_data_find_list(*list, m);
583 *list = eina_list_remove_list(*list, l);
584 if (lp) *list = eina_list_append_relative_list(*list, m, lp);
585 else *list = eina_list_append(*list, m);
589 _match_list_del(Eina_List **list,
594 l = eina_list_data_find_list(*list, m);
597 *list = eina_list_remove_list(*list, l);
602 _cb_dialog_resize(void *data,
605 void *event_info __UNUSED__)
607 Evas_Object *bg, *of;
611 bg = evas_object_data_get(of, "bg");
612 evas_object_geometry_get(obj, &x, &y, &w, &h);
614 evas_object_move(bg, x, y);
615 evas_object_resize(bg, w, h);
616 evas_object_move(of, x, y);
617 evas_object_resize(of, w, h);
624 Match_Config *m = d1;
625 Evas_Object *dia, *bg, *of = d2;
630 if (m->match.title) eina_stringshare_del(m->match.title);
631 m->match.title = NULL;
634 if (m->title[0]) m->match.title = eina_stringshare_add(m->title);
638 if (m->match.name) eina_stringshare_del(m->match.name);
639 m->match.name = NULL;
642 if (m->name[0]) m->match.name = eina_stringshare_add(m->name);
646 if (m->match.clas) eina_stringshare_del(m->match.clas);
647 m->match.clas = NULL;
650 if (m->clas[0]) m->match.clas = eina_stringshare_add(m->clas);
654 if (m->match.role) eina_stringshare_del(m->match.role);
655 m->match.role = NULL;
658 if (m->role[0]) m->match.role = eina_stringshare_add(m->role);
662 m->match.borderless = m->borderless;
663 m->match.dialog = m->dialog;
664 m->match.accepts_focus = m->accepts_focus;
665 m->match.vkbd = m->vkbd;
666 m->match.quickpanel = m->quickpanel;
667 m->match.argb = m->argb;
668 m->match.fullscreen = m->fullscreen;
669 m->match.modal = m->modal;
671 il = m->cfd->cfdata->edit_il;
672 n = e_widget_ilist_selected_get(il);
673 label = _match_label_get(m);
674 e_widget_ilist_nth_label_set(il, n, label);
676 bg = evas_object_data_get(of, "bg");
677 dia = evas_object_data_get(of, "dia");
679 evas_object_event_callback_del(dia, EVAS_CALLBACK_RESIZE, _cb_dialog_resize);
685 _create_edit_frame(E_Config_Dialog *cfd,
687 E_Config_Dialog_Data *cfdata,
690 Evas_Object *of, *oi, *lb, *en, *bt, *tb, *tab2, *o, *sf, *li;
695 o = edje_object_add(evas);
696 e_theme_edje_object_set(o, "base/theme/dialog", "e/widgets/dialog/main");
697 evas_object_geometry_get(cfd->dia->bg_object, &x, &y, &w, &h);
698 evas_object_move(o, x, y);
699 evas_object_resize(o, w, h);
702 of = e_widget_frametable_add(evas, _("Edit Match"), 0);
703 evas_object_data_set(of, "bg", o);
704 evas_object_data_set(of, "dia", cfd->dia->bg_object);
705 evas_object_move(of, x, y);
706 evas_object_resize(of, w, h);
707 evas_object_show(of);
709 evas_object_event_callback_add(cfd->dia->bg_object, EVAS_CALLBACK_RESIZE,
710 _cb_dialog_resize, of);
712 tb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
714 tab2 = e_widget_table_add(evas, 0);
715 if (cfdata->edit_il == cfdata->borders_il)
717 if (m->match.title) m->title = strdup(m->match.title);
718 else m->title = NULL;
719 lb = e_widget_label_add(evas, _("Title"));
720 e_widget_table_object_append(tab2, lb, 0, 0, 1, 1, 1, 0, 0, 0);
721 en = e_widget_entry_add(evas, &(m->title), NULL, NULL, NULL);
722 e_widget_table_object_append(tab2, en, 1, 0, 1, 1, 1, 0, 1, 0);
724 if ((cfdata->edit_il == cfdata->borders_il) ||
725 (cfdata->edit_il == cfdata->overrides_il) ||
726 (cfdata->edit_il == cfdata->popups_il))
728 if (m->match.name) m->name = strdup(m->match.name);
730 lb = e_widget_label_add(evas, _("Name"));
731 e_widget_table_object_append(tab2, lb, 0, 1, 1, 1, 1, 0, 0, 0);
732 en = e_widget_entry_add(evas, &(m->name), NULL, NULL, NULL);
733 e_widget_table_object_append(tab2, en, 1, 1, 1, 1, 1, 0, 1, 0);
735 if ((cfdata->edit_il == cfdata->borders_il) ||
736 (cfdata->edit_il == cfdata->overrides_il))
738 if (m->match.clas) m->clas = strdup(m->match.clas);
740 lb = e_widget_label_add(evas, _("Class"));
741 e_widget_table_object_append(tab2, lb, 0, 2, 1, 1, 1, 0, 0, 0);
742 en = e_widget_entry_add(evas, &(m->clas), NULL, NULL, NULL);
743 e_widget_table_object_append(tab2, en, 1, 2, 1, 1, 1, 0, 1, 0);
745 if (cfdata->edit_il == cfdata->borders_il)
747 if (m->match.role) m->role = strdup(m->match.role);
749 lb = e_widget_label_add(evas, _("Role"));
750 e_widget_table_object_append(tab2, lb, 0, 3, 1, 1, 1, 0, 0, 0);
751 en = e_widget_entry_add(evas, &(m->role), NULL, NULL, NULL);
752 e_widget_table_object_append(tab2, en, 1, 3, 1, 1, 1, 0, 1, 0);
754 e_widget_toolbook_page_append(tb, NULL, _("Names"), tab2, 1, 1, 1, 1, 0.5, 0.0);
756 if ((cfdata->edit_il == cfdata->borders_il) ||
757 (cfdata->edit_il == cfdata->overrides_il))
761 rg = e_widget_radio_group_new(&m->match.primary_type);
763 li = e_widget_list_add(evas, 1, 0);
765 o = e_widget_radio_add(evas, _("Unused"), ECORE_X_WINDOW_TYPE_UNKNOWN, rg);
766 e_widget_list_object_append(li, o, 1, 0, 0.0);
768 o = e_widget_radio_add(evas, _("Combo"), ECORE_X_WINDOW_TYPE_COMBO, rg);
769 e_widget_list_object_append(li, o, 1, 0, 0.0);
770 o = e_widget_radio_add(evas, _("Desktop"), ECORE_X_WINDOW_TYPE_DESKTOP, rg);
771 e_widget_list_object_append(li, o, 1, 0, 0.0);
772 o = e_widget_radio_add(evas, _("Dialog"), ECORE_X_WINDOW_TYPE_DIALOG, rg);
773 e_widget_list_object_append(li, o, 1, 0, 0.0);
774 o = e_widget_radio_add(evas, _("Dock"), ECORE_X_WINDOW_TYPE_DOCK, rg);
775 e_widget_list_object_append(li, o, 1, 0, 0.0);
776 o = e_widget_radio_add(evas, _("Drag and Drop"), ECORE_X_WINDOW_TYPE_DND, rg);
777 e_widget_list_object_append(li, o, 1, 0, 0.0);
778 o = e_widget_radio_add(evas, _("Menu"), ECORE_X_WINDOW_TYPE_MENU, rg);
779 e_widget_list_object_append(li, o, 1, 0, 0.0);
780 o = e_widget_radio_add(evas, _("Menu (Dropdown)"), ECORE_X_WINDOW_TYPE_DROPDOWN_MENU, rg);
781 e_widget_list_object_append(li, o, 1, 0, 0.0);
782 o = e_widget_radio_add(evas, _("Menu (Popup)"), ECORE_X_WINDOW_TYPE_POPUP_MENU, rg);
783 e_widget_list_object_append(li, o, 1, 0, 0.0);
784 o = e_widget_radio_add(evas, _("Normal"), ECORE_X_WINDOW_TYPE_NORMAL, rg);
785 e_widget_list_object_append(li, o, 1, 0, 0.0);
786 o = e_widget_radio_add(evas, _("Notification"), ECORE_X_WINDOW_TYPE_NOTIFICATION, rg);
787 e_widget_list_object_append(li, o, 1, 0, 0.0);
788 o = e_widget_radio_add(evas, _("Splash"), ECORE_X_WINDOW_TYPE_SPLASH, rg);
789 e_widget_list_object_append(li, o, 1, 0, 0.0);
790 o = e_widget_radio_add(evas, _("Toolbar"), ECORE_X_WINDOW_TYPE_TOOLBAR, rg);
791 e_widget_list_object_append(li, o, 1, 0, 0.0);
792 o = e_widget_radio_add(evas, _("Tooltip"), ECORE_X_WINDOW_TYPE_TOOLTIP, rg);
793 e_widget_list_object_append(li, o, 1, 0, 0.0);
794 o = e_widget_radio_add(evas, _("Utility"), ECORE_X_WINDOW_TYPE_UTILITY, rg);
795 e_widget_list_object_append(li, o, 1, 0, 0.0);
797 e_widget_size_min_get(li, &mw, &mh);
798 evas_object_resize(li, mw, mh);
800 sf = e_widget_scrollframe_simple_add(evas, li);
801 e_widget_toolbook_page_append(tb, NULL, _("Types"), sf,
802 1, 1, 1, 1, 0.5, 0.0);
805 m->borderless = m->match.borderless;
806 m->dialog = m->match.dialog;
807 m->accepts_focus = m->match.accepts_focus;
808 m->vkbd = m->match.vkbd;
809 m->quickpanel = m->match.quickpanel;
810 m->argb = m->match.argb;
811 m->fullscreen = m->match.fullscreen;
812 m->modal = m->match.modal;
815 tab2 = e_widget_table_add(evas, 0);
816 lb = e_widget_label_add(evas, _("Unused"));
817 e_widget_table_object_append(tab2, lb, 1, row, 1, 1, 0, 0, 0, 0);
818 lb = e_widget_label_add(evas, _("On"));
819 e_widget_table_object_append(tab2, lb, 2, row, 1, 1, 0, 0, 0, 0);
820 lb = e_widget_label_add(evas, _("Off"));
821 e_widget_table_object_append(tab2, lb, 3, row, 1, 1, 0, 0, 0, 0);
824 if (cfdata->edit_il == cfdata->borders_il)
826 lb = e_widget_label_add(evas, _("Borderless"));
827 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
828 rg = e_widget_radio_group_new(&m->borderless);
829 o = e_widget_radio_add(evas, NULL, 0, rg);
830 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
831 o = e_widget_radio_add(evas, NULL, 1, rg);
832 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
833 o = e_widget_radio_add(evas, NULL, -1, rg);
834 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
837 if (cfdata->edit_il == cfdata->borders_il)
839 lb = e_widget_label_add(evas, _("Dialog"));
840 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
841 rg = e_widget_radio_group_new(&m->dialog);
842 o = e_widget_radio_add(evas, NULL, 0, rg);
843 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
844 o = e_widget_radio_add(evas, NULL, 1, rg);
845 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
846 o = e_widget_radio_add(evas, NULL, -1, rg);
847 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
850 if (cfdata->edit_il == cfdata->borders_il)
852 lb = e_widget_label_add(evas, _("Accepts Focus"));
853 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
854 rg = e_widget_radio_group_new(&m->accepts_focus);
855 o = e_widget_radio_add(evas, NULL, 0, rg);
856 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
857 o = e_widget_radio_add(evas, NULL, 1, rg);
858 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
859 o = e_widget_radio_add(evas, NULL, -1, rg);
860 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
863 if (cfdata->edit_il == cfdata->borders_il)
865 lb = e_widget_label_add(evas, _("Virtual Keyboard"));
866 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
867 rg = e_widget_radio_group_new(&m->vkbd);
868 o = e_widget_radio_add(evas, NULL, 0, rg);
869 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
870 o = e_widget_radio_add(evas, NULL, 1, rg);
871 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
872 o = e_widget_radio_add(evas, NULL, -1, rg);
873 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
876 if (cfdata->edit_il == cfdata->borders_il)
878 lb = e_widget_label_add(evas, _("Quick Panel"));
879 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
880 rg = e_widget_radio_group_new(&m->quickpanel);
881 o = e_widget_radio_add(evas, NULL, 0, rg);
882 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
883 o = e_widget_radio_add(evas, NULL, 1, rg);
884 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
885 o = e_widget_radio_add(evas, NULL, -1, rg);
886 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
889 lb = e_widget_label_add(evas, _("ARGB"));
890 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
891 rg = e_widget_radio_group_new(&m->argb);
892 o = e_widget_radio_add(evas, NULL, 0, rg);
893 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
894 o = e_widget_radio_add(evas, NULL, 1, rg);
895 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
896 o = e_widget_radio_add(evas, NULL, -1, rg);
897 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
899 if (cfdata->edit_il == cfdata->borders_il)
901 lb = e_widget_label_add(evas, _("Fullscreen"));
902 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
903 rg = e_widget_radio_group_new(&m->fullscreen);
904 o = e_widget_radio_add(evas, NULL, 0, rg);
905 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
906 o = e_widget_radio_add(evas, NULL, 1, rg);
907 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
908 o = e_widget_radio_add(evas, NULL, -1, rg);
909 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
912 if (cfdata->edit_il == cfdata->borders_il)
914 lb = e_widget_label_add(evas, _("Modal"));
915 e_widget_table_object_append(tab2, lb, 0, row, 1, 1, 1, 0, 1, 0);
916 rg = e_widget_radio_group_new(&m->modal);
917 o = e_widget_radio_add(evas, NULL, 0, rg);
918 e_widget_table_object_append(tab2, o, 1, row, 1, 1, 0, 0, 0, 0);
919 o = e_widget_radio_add(evas, NULL, 1, rg);
920 e_widget_table_object_append(tab2, o, 2, row, 1, 1, 0, 0, 0, 0);
921 o = e_widget_radio_add(evas, NULL, -1, rg);
922 e_widget_table_object_append(tab2, o, 3, row, 1, 1, 0, 0, 0, 0);
925 e_widget_toolbook_page_append(tb, NULL, _("Flags"), tab2,
926 1, 1, 1, 1, 0.5, 0.0);
928 oi = _style_selector(evas, cfdata->use_shadow, &(m->match.shadow_style));
929 e_widget_toolbook_page_append(tb, NULL, _("Style"), oi,
930 1, 1, 1, 1, 0.5, 0.0);
932 e_widget_frametable_object_append(of, tb, 0, 0, 1, 1, 1, 1, 1, 1);
933 e_widget_toolbook_page_show(tb, 0);
935 bt = e_widget_button_add(evas, _("OK"), NULL, _edit_ok, m, of);
936 e_widget_frametable_object_append(of, bt, 0, 1, 1, 1, 0, 0, 0, 0);
943 E_Config_Dialog *cfd = d1;
944 Evas_Object *il = d2;
948 e_widget_ilist_freeze(il);
949 n = e_widget_ilist_selected_get(il);
951 m = e_widget_ilist_nth_data_get(il, n);
954 e_widget_ilist_thaw(il);
957 e_widget_ilist_remove_num(il, n);
959 _match_ilist_append(il, m, n, 1);
960 e_widget_ilist_nth_show(il, n, 0);
961 e_widget_ilist_selected_set(il, n);
962 e_widget_ilist_thaw(il);
963 e_widget_ilist_go(il);
964 _match_list_up(&(cfd->cfdata->match.popups), m);
965 _match_list_up(&(cfd->cfdata->match.borders), m);
966 _match_list_up(&(cfd->cfdata->match.overrides), m);
967 _match_list_up(&(cfd->cfdata->match.menus), m);
968 cfd->cfdata->match.changed = 1;
975 E_Config_Dialog *cfd = d1;
976 Evas_Object *il = d2;
980 e_widget_ilist_freeze(il);
981 n = e_widget_ilist_selected_get(il);
982 if (n >= (e_widget_ilist_count(il) - 1)) return;
983 m = e_widget_ilist_nth_data_get(il, n);
986 e_widget_ilist_thaw(il);
989 e_widget_ilist_remove_num(il, n);
990 _match_ilist_append(il, m, n, 0);
991 e_widget_ilist_nth_show(il, n + 1, 0);
992 e_widget_ilist_selected_set(il, n + 1);
993 e_widget_ilist_thaw(il);
994 e_widget_ilist_go(il);
995 _match_list_down(&(cfd->cfdata->match.popups), m);
996 _match_list_down(&(cfd->cfdata->match.borders), m);
997 _match_list_down(&(cfd->cfdata->match.overrides), m);
998 _match_list_down(&(cfd->cfdata->match.menus), m);
999 cfd->cfdata->match.changed = 1;
1006 E_Config_Dialog *cfd = d1;
1007 Evas_Object *il = d2;
1011 m = E_NEW(Match_Config, 1);
1013 m->match.title = NULL;
1014 m->match.name = NULL;
1015 m->match.clas = NULL;
1016 m->match.role = NULL;
1017 m->match.shadow_style = eina_stringshare_add("default");
1019 if (il == cfd->cfdata->popups_il)
1020 cfd->cfdata->match.popups = eina_list_append(cfd->cfdata->match.popups, m);
1021 else if (il == cfd->cfdata->borders_il)
1022 cfd->cfdata->match.borders = eina_list_append(cfd->cfdata->match.borders, m);
1023 else if (il == cfd->cfdata->overrides_il)
1024 cfd->cfdata->match.overrides = eina_list_append(cfd->cfdata->match.overrides, m);
1025 else if (il == cfd->cfdata->menus_il)
1026 cfd->cfdata->match.menus = eina_list_append(cfd->cfdata->match.menus, m);
1027 e_widget_ilist_freeze(il);
1028 _match_ilist_append(il, m, -1, 0);
1029 e_widget_ilist_thaw(il);
1030 e_widget_ilist_go(il);
1031 n = e_widget_ilist_count(il);
1032 e_widget_ilist_nth_show(il, n - 1, 0);
1033 e_widget_ilist_selected_set(il, n - 1);
1035 cfd->cfdata->edit_il = il;
1036 _create_edit_frame(cfd, evas_object_evas_get(il), cfd->cfdata, m);
1037 cfd->cfdata->match.changed = 1;
1044 E_Config_Dialog *cfd = d1;
1045 Evas_Object *il = d2;
1049 e_widget_ilist_freeze(il);
1050 n = e_widget_ilist_selected_get(il);
1051 m = e_widget_ilist_nth_data_get(il, n);
1054 e_widget_ilist_thaw(il);
1057 e_widget_ilist_remove_num(il, n);
1058 e_widget_ilist_thaw(il);
1059 e_widget_ilist_go(il);
1060 _match_list_del(&(cfd->cfdata->match.popups), m);
1061 _match_list_del(&(cfd->cfdata->match.borders), m);
1062 _match_list_del(&(cfd->cfdata->match.overrides), m);
1063 _match_list_del(&(cfd->cfdata->match.menus), m);
1064 cfd->cfdata->match.changed = 1;
1071 E_Config_Dialog *cfd = d1;
1072 Evas_Object *il = d2;
1076 n = e_widget_ilist_selected_get(il);
1077 m = e_widget_ilist_nth_data_get(il, n);
1080 cfd->cfdata->edit_il = il;
1081 _create_edit_frame(cfd, evas_object_evas_get(il), cfd->cfdata, m);
1082 cfd->cfdata->match.changed = 1;
1085 static Evas_Object *
1086 _create_match_editor(E_Config_Dialog *cfd,
1088 E_Config_Dialog_Data *cfdata __UNUSED__,
1089 Eina_List **matches,
1090 Evas_Object **il_ret)
1092 Evas_Object *tab, *il, *bt;
1096 tab = e_widget_table_add(evas, 0);
1098 il = e_widget_ilist_add(evas, 16, 16, NULL);
1099 e_widget_size_min_set(il, 160, 100);
1101 EINA_LIST_FOREACH(*matches, l, m)
1103 _match_ilist_append(il, m, -1, 0);
1106 e_widget_ilist_go(il);
1107 e_widget_table_object_append(tab, il, 0, 0, 1, 5, 1, 1, 1, 1);
1109 bt = e_widget_button_add(evas, _("Up"), NULL, _but_up, cfd, il);
1110 e_widget_table_object_append(tab, bt, 1, 0, 1, 1, 1, 1, 0, 0);
1111 bt = e_widget_button_add(evas, _("Down"), NULL, _but_down, cfd, il);
1112 e_widget_table_object_append(tab, bt, 1, 1, 1, 1, 1, 1, 0, 0);
1113 bt = e_widget_button_add(evas, _("Add"), NULL, _but_add, cfd, il);
1114 e_widget_table_object_append(tab, bt, 1, 2, 1, 1, 1, 1, 0, 0);
1115 bt = e_widget_button_add(evas, _("Del"), NULL, _but_del, cfd, il);
1116 e_widget_table_object_append(tab, bt, 1, 3, 1, 1, 1, 1, 0, 0);
1117 bt = e_widget_button_add(evas, _("Edit"), NULL, _but_edit, cfd, il);
1118 e_widget_table_object_append(tab, bt, 1, 4, 1, 1, 1, 1, 0, 0);
1125 static Evas_Object *
1126 _create_styles_toolbook(E_Config_Dialog *cfd,
1128 E_Config_Dialog_Data *cfdata)
1130 Evas_Object *tb, *oi, *il;
1132 tb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
1134 oi = _style_selector(evas, cfdata->use_shadow, &(cfdata->shadow_style));
1135 e_widget_toolbook_page_append(tb, NULL, _("Default"), oi, 1, 1, 1, 1, 0.5, 0.0);
1137 oi = _create_match_editor(cfd, evas, cfdata, &(cfdata->match.borders), &il);
1138 cfdata->borders_il = il;
1139 e_widget_toolbook_page_append(tb, NULL, _("Apps"), oi, 1, 1, 1, 1, 0.5, 0.0);
1141 oi = _create_match_editor(cfd, evas, cfdata, &(cfdata->match.popups), &il);
1142 cfdata->popups_il = il;
1143 e_widget_toolbook_page_append(tb, NULL, _("E"), oi, 1, 1, 1, 1, 0.5, 0.0);
1145 oi = _create_match_editor(cfd, evas, cfdata, &(cfdata->match.overrides), &il);
1146 cfdata->overrides_il = il;
1147 e_widget_toolbook_page_append(tb, NULL, _("Over"), oi, 1, 1, 1, 1, 0.5, 0.0);
1149 oi = _create_match_editor(cfd, evas, cfdata, &(cfdata->match.menus), &il);
1150 cfdata->menus_il = il;
1151 e_widget_toolbook_page_append(tb, NULL, _("Menus"), oi, 1, 1, 1, 1, 0.5, 0.0);
1153 e_widget_toolbook_page_show(tb, 0);
1158 static Evas_Object *
1159 _basic_create_widgets(E_Config_Dialog *cfd,
1161 E_Config_Dialog_Data *cfdata)
1163 Evas_Object *ob, *ol, *ol2, *of, *otb, *oi, *orec0, *tab;
1166 orec0 = evas_object_rectangle_add(evas);
1167 evas_object_name_set(orec0, "style_shadows");
1169 tab = e_widget_table_add(evas, 0);
1170 evas_object_name_set(tab, "dia_table");
1172 otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
1174 ///////////////////////////////////////////
1175 ol = e_widget_list_add(evas, 0, 0);
1176 ob = e_widget_check_add(evas, _("Shadows"), &(cfdata->use_shadow));
1177 evas_object_smart_callback_add(ob, "changed", _shadow_changed, cfdata);
1178 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
1179 ob = e_widget_check_add(evas, _("Limit framerate"), &(cfdata->lock_fps));
1180 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
1181 ob = e_widget_check_add(evas, _("Smooth scaling"), &(cfdata->smooth_windows));
1182 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
1184 of = e_widget_frametable_add(evas, _("Styles"), 0);
1185 e_widget_frametable_content_align_set(of, 0.5, 0.5);
1186 oi = _create_styles_toolbook(cfd, evas, cfdata);
1187 e_widget_frametable_object_append(of, oi, 0, 0, 1, 1, 1, 1, 1, 1);
1188 e_widget_list_object_append(ol, of, 1, 1, 0.5);
1190 e_widget_toolbook_page_append(otb, NULL, _("Effects"), ol, 1, 1, 1, 1, 0.5, 0.0);
1192 ///////////////////////////////////////////
1193 ol = e_widget_list_add(evas, 0, 0);
1194 ob = e_widget_check_add(evas, _("Sync screen (VBlank)"), &(cfdata->vsync));
1195 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1196 ob = e_widget_check_add(evas, _("Sync windows"), &(cfdata->efl_sync));
1197 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1198 ob = e_widget_check_add(evas, _("Loose sync"), &(cfdata->loose_sync));
1199 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1200 ob = e_widget_check_add(evas, _("Grab Server during draw"), &(cfdata->grab));
1201 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1202 ob = e_widget_label_add(evas, _("Initial draw timeout for newly mapped windows"));
1203 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1204 ob = e_widget_slider_add(evas, 1, 0, _("%1.2f Seconds"), 0.01, 0.5, 0.01, 0, &(cfdata->first_draw_delay), NULL, 150);
1205 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1206 e_widget_toolbook_page_append(otb, NULL, _("Sync"), ol, 0, 0, 0, 0, 0.5, 0.0);
1208 ol = e_widget_list_add(evas, 0, 0);
1209 rg = e_widget_radio_group_new(&(cfdata->engine));
1210 ob = e_widget_radio_add(evas, _("Software"), E_EVAS_ENGINE_SOFTWARE_X11, rg);
1211 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1212 if (!getenv("ECORE_X_NO_XLIB"))
1214 if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11))
1216 ob = e_widget_radio_add(evas, _("OpenGL"), E_EVAS_ENGINE_GL_X11, rg);
1217 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1219 of = e_widget_framelist_add(evas, _("OpenGL options"), 0);
1220 e_widget_framelist_content_align_set(of, 0.5, 0.0);
1221 ob = e_widget_check_add(evas, _("Texture from pixmap"), &(cfdata->texture_from_pixmap));
1222 e_widget_framelist_object_append(of, ob);
1223 ob = e_widget_label_add(evas, _("Ctrl+Alt+Shift+Home resets compositor"));
1224 e_widget_framelist_object_append(of, ob);
1225 ob = e_widget_check_add(evas, _("Indirect OpenGL (EXPERIMENTAL)"), &(cfdata->indirect));
1226 e_widget_framelist_object_append(of, ob);
1227 e_widget_list_object_append(ol, of, 1, 1, 0.5);
1230 e_widget_toolbook_page_append(otb, NULL, _("Engine"), ol, 0, 0, 0, 0, 0.5, 0.0);
1232 ///////////////////////////////////////////
1233 ol = e_widget_list_add(evas, 0, 0);
1234 ob = e_widget_check_add(evas, _("Send flush"), &(cfdata->send_flush));
1235 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1236 ob = e_widget_check_add(evas, _("Send dump"), &(cfdata->send_dump));
1237 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1238 ob = e_widget_check_add(evas, _("Don't composite fullscreen"), &(cfdata->nocomp_fs));
1239 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1240 ob = e_widget_check_add(evas, _("Keep hidden windows"), &(cfdata->keep_unmapped));
1241 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1242 of = e_widget_frametable_add(evas, _("Maximum hidden pixels"), 0);
1243 e_widget_frametable_content_align_set(of, 0.5, 0.5);
1244 rg = e_widget_radio_group_new(&(cfdata->max_unmapped_pixels));
1245 ob = e_widget_radio_add(evas, _("1M"), 1 * 1024, rg);
1246 e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 0, 0);
1247 ob = e_widget_radio_add(evas, _("2M"), 2 * 1024, rg);
1248 e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 0, 0);
1249 ob = e_widget_radio_add(evas, _("4M"), 4 * 1024, rg);
1250 e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 1, 1, 0, 0);
1251 ob = e_widget_radio_add(evas, _("8M"), 8 * 1024, rg);
1252 e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 0, 0);
1253 ob = e_widget_radio_add(evas, _("16M"), 16 * 1024, rg);
1254 e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 0, 0);
1255 ob = e_widget_radio_add(evas, _("32M"), 32 * 1024, rg);
1256 e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 0, 0);
1257 ob = e_widget_radio_add(evas, _("64M"), 64 * 1024, rg);
1258 e_widget_frametable_object_append(of, ob, 2, 0, 1, 1, 1, 1, 0, 0);
1259 ob = e_widget_radio_add(evas, _("128M"), 128 * 1024, rg);
1260 e_widget_frametable_object_append(of, ob, 2, 1, 1, 1, 1, 1, 0, 0);
1261 ob = e_widget_radio_add(evas, _("256M"), 256 * 1024, rg);
1262 e_widget_frametable_object_append(of, ob, 2, 2, 1, 1, 1, 1, 0, 0);
1263 e_widget_list_object_append(ol, of, 1, 1, 0.5);
1264 e_widget_toolbook_page_append(otb, NULL, _("Memory"), ol, 0, 0, 0, 0, 0.5, 0.0);
1266 ///////////////////////////////////////////
1267 ol = e_widget_list_add(evas, 0, 0);
1268 ol2 = e_widget_list_add(evas, 1, 1);
1269 of = e_widget_framelist_add(evas, _("Min hidden"), 0);
1270 e_widget_framelist_content_align_set(of, 0.5, 0.0);
1271 rg = e_widget_radio_group_new(&(cfdata->min_unmapped_time));
1272 ob = e_widget_radio_add(evas, _("30 Seconds"), 30, rg);
1273 e_widget_framelist_object_append(of, ob);
1274 ob = e_widget_radio_add(evas, _("1 Minute"), 60, rg);
1275 e_widget_framelist_object_append(of, ob);
1276 ob = e_widget_radio_add(evas, _("5 Minutes"), 5 * 60, rg);
1277 e_widget_framelist_object_append(of, ob);
1278 ob = e_widget_radio_add(evas, _("30 Minutes"), 30 * 60, rg);
1279 e_widget_framelist_object_append(of, ob);
1280 ob = e_widget_radio_add(evas, _("2 Hours"), 2 * 3600, rg);
1281 e_widget_framelist_object_append(of, ob);
1282 ob = e_widget_radio_add(evas, _("10 Hours"), 10 * 3600, rg);
1283 e_widget_framelist_object_append(of, ob);
1284 ob = e_widget_radio_add(evas, _("Forever"), 0, rg);
1285 e_widget_framelist_object_append(of, ob);
1286 e_widget_list_object_append(ol2, of, 1, 1, 0.5);
1287 of = e_widget_framelist_add(evas, _("Max hidden"), 0);
1288 e_widget_framelist_content_align_set(of, 0.5, 0.0);
1289 rg = e_widget_radio_group_new(&(cfdata->max_unmapped_time));
1290 ob = e_widget_radio_add(evas, _("30 Seconds"), 30, rg);
1291 e_widget_framelist_object_append(of, ob);
1292 ob = e_widget_radio_add(evas, _("1 Minute"), 60, rg);
1293 e_widget_framelist_object_append(of, ob);
1294 ob = e_widget_radio_add(evas, _("5 Minutes"), 5 * 60, rg);
1295 e_widget_framelist_object_append(of, ob);
1296 ob = e_widget_radio_add(evas, _("30 Minutes"), 30 * 60, rg);
1297 e_widget_framelist_object_append(of, ob);
1298 ob = e_widget_radio_add(evas, _("2 Hours"), 2 * 3600, rg);
1299 e_widget_framelist_object_append(of, ob);
1300 ob = e_widget_radio_add(evas, _("10 Hours"), 10 * 3600, rg);
1301 e_widget_framelist_object_append(of, ob);
1302 ob = e_widget_radio_add(evas, _("Forever"), 0, rg);
1303 e_widget_framelist_object_append(of, ob);
1304 e_widget_list_object_append(ol2, of, 1, 1, 0.5);
1305 e_widget_list_object_append(ol, ol2, 1, 1, 0.5);
1306 e_widget_toolbook_page_append(otb, NULL, _("Timeouts"), ol, 0, 0, 0, 0, 0.5, 0.0);
1308 ///////////////////////////////////////////
1309 ol = e_widget_list_add(evas, 0, 0);
1311 ob = e_widget_check_add(evas, _("Show Framerate"), &(cfdata->fps_show));
1312 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1313 ob = e_widget_label_add(evas, _("Rolling average frame count"));
1314 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1315 ob = e_widget_slider_add(evas, 1, 0, _("%1.0f Frames"), 1, 120, 1, 0,
1316 NULL, &(cfdata->fps_average_range), 240);
1317 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
1319 of = e_widget_frametable_add(evas, _("Corner"), 0);
1320 e_widget_frametable_content_align_set(of, 0.5, 0.5);
1321 rg = e_widget_radio_group_new(&(cfdata->fps_corner));
1322 ob = e_widget_radio_icon_add(evas, NULL, "preferences-position-top-left",
1324 e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
1325 ob = e_widget_radio_icon_add(evas, NULL, "preferences-position-top-right",
1327 e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
1328 ob = e_widget_radio_icon_add(evas, NULL, "preferences-position-bottom-left",
1330 e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 1, 1);
1331 ob = e_widget_radio_icon_add(evas, NULL, "preferences-position-bottom-right",
1333 e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 1, 1);
1334 e_widget_list_object_append(ol, of, 1, 1, 0.5);
1336 e_widget_toolbook_page_append(otb, NULL, _("Debug"), ol, 0, 0, 0, 0, 0.5, 0.0);
1338 e_widget_toolbook_page_show(otb, 0);
1340 e_dialog_resizable_set(cfd->dia, 1);
1342 e_widget_table_object_append(tab, otb, 0, 0, 1, 1, 1, 1, 1, 1);
1347 _match_list_free(Eina_List *list)
1351 EINA_LIST_FREE(list, m)
1353 if (m->title) eina_stringshare_del(m->title);
1354 if (m->name) eina_stringshare_del(m->name);
1355 if (m->clas) eina_stringshare_del(m->clas);
1356 if (m->role) eina_stringshare_del(m->role);
1357 if (m->shadow_style) eina_stringshare_del(m->shadow_style);
1363 _match_dup2(Match_Config *m2,
1367 if (m->title) m->title = eina_stringshare_add(m->title);
1368 if (m->name) m->name = eina_stringshare_add(m->name);
1369 if (m->clas) m->clas = eina_stringshare_add(m->clas);
1370 if (m->role) m->role = eina_stringshare_add(m->role);
1371 if (m->shadow_style) m->shadow_style = eina_stringshare_add(m->shadow_style);
1375 _basic_apply_data(E_Config_Dialog *cfd __UNUSED__,
1376 E_Config_Dialog_Data *cfdata)
1378 if ((cfdata->use_shadow != _comp_mod->conf->use_shadow) ||
1379 (cfdata->lock_fps != _comp_mod->conf->lock_fps) ||
1380 (cfdata->smooth_windows != _comp_mod->conf->smooth_windows) ||
1381 (cfdata->grab != _comp_mod->conf->grab) ||
1382 (cfdata->keep_unmapped != _comp_mod->conf->keep_unmapped) ||
1383 (cfdata->nocomp_fs != _comp_mod->conf->nocomp_fs) ||
1384 (cfdata->shadow_style != _comp_mod->conf->shadow_style) ||
1385 (cfdata->max_unmapped_pixels != _comp_mod->conf->max_unmapped_pixels) ||
1386 (cfdata->max_unmapped_time != _comp_mod->conf->max_unmapped_time) ||
1387 (cfdata->min_unmapped_time != _comp_mod->conf->min_unmapped_time) ||
1388 (cfdata->send_flush != _comp_mod->conf->send_flush) ||
1389 (cfdata->send_dump != _comp_mod->conf->send_dump) ||
1390 (cfdata->fps_show != _comp_mod->conf->fps_show) ||
1391 (cfdata->fps_corner != _comp_mod->conf->fps_corner) ||
1392 (cfdata->fps_average_range != _comp_mod->conf->fps_average_range) ||
1393 (cfdata->first_draw_delay != _comp_mod->conf->first_draw_delay) ||
1394 (cfdata->match.changed)
1397 if (cfdata->match.changed)
1403 _match_list_free(_comp_mod->conf->match.popups);
1404 _match_list_free(_comp_mod->conf->match.borders);
1405 _match_list_free(_comp_mod->conf->match.overrides);
1406 _match_list_free(_comp_mod->conf->match.menus);
1408 _comp_mod->conf->match.popups = NULL;
1409 _comp_mod->conf->match.borders = NULL;
1410 _comp_mod->conf->match.overrides = NULL;
1411 _comp_mod->conf->match.menus = NULL;
1413 EINA_LIST_FOREACH(cfdata->match.popups, l, m2)
1415 m = E_NEW(Match, 1);
1417 _comp_mod->conf->match.popups =
1418 eina_list_append(_comp_mod->conf->match.popups, m);
1420 EINA_LIST_FOREACH(cfdata->match.borders, l, m2)
1422 m = E_NEW(Match, 1);
1424 _comp_mod->conf->match.borders =
1425 eina_list_append(_comp_mod->conf->match.borders, m);
1427 EINA_LIST_FOREACH(cfdata->match.overrides, l, m2)
1429 m = E_NEW(Match, 1);
1431 _comp_mod->conf->match.overrides =
1432 eina_list_append(_comp_mod->conf->match.overrides, m);
1434 EINA_LIST_FOREACH(cfdata->match.menus, l, m2)
1436 m = E_NEW(Match, 1);
1438 _comp_mod->conf->match.menus =
1439 eina_list_append(_comp_mod->conf->match.menus, m);
1441 cfdata->match.changed = 0;
1443 _comp_mod->conf->use_shadow = cfdata->use_shadow;
1444 _comp_mod->conf->lock_fps = cfdata->lock_fps;
1445 _comp_mod->conf->smooth_windows = cfdata->smooth_windows;
1446 _comp_mod->conf->grab = cfdata->grab;
1447 _comp_mod->conf->keep_unmapped = cfdata->keep_unmapped;
1448 _comp_mod->conf->nocomp_fs = cfdata->nocomp_fs;
1449 _comp_mod->conf->max_unmapped_pixels = cfdata->max_unmapped_pixels;
1450 _comp_mod->conf->max_unmapped_time = cfdata->max_unmapped_time;
1451 _comp_mod->conf->min_unmapped_time = cfdata->min_unmapped_time;
1452 _comp_mod->conf->send_flush = cfdata->send_flush;
1453 _comp_mod->conf->send_dump = cfdata->send_dump;
1454 _comp_mod->conf->fps_show = cfdata->fps_show;
1455 _comp_mod->conf->fps_corner = cfdata->fps_corner;
1456 _comp_mod->conf->fps_average_range = cfdata->fps_average_range;
1457 _comp_mod->conf->first_draw_delay = cfdata->first_draw_delay;
1458 if (_comp_mod->conf->shadow_style)
1459 eina_stringshare_del(_comp_mod->conf->shadow_style);
1460 _comp_mod->conf->shadow_style = NULL;
1461 if (cfdata->shadow_style)
1462 _comp_mod->conf->shadow_style = eina_stringshare_add(cfdata->shadow_style);
1463 e_mod_comp_shadow_set();
1465 if ((cfdata->engine != _comp_mod->conf->engine) ||
1466 (cfdata->indirect != _comp_mod->conf->indirect) ||
1467 (cfdata->texture_from_pixmap != _comp_mod->conf->texture_from_pixmap) ||
1468 (cfdata->efl_sync != _comp_mod->conf->efl_sync) ||
1469 (cfdata->loose_sync != _comp_mod->conf->loose_sync) ||
1470 (cfdata->vsync != _comp_mod->conf->vsync))
1474 _comp_mod->conf->engine = cfdata->engine;
1475 _comp_mod->conf->indirect = cfdata->indirect;
1476 _comp_mod->conf->texture_from_pixmap = cfdata->texture_from_pixmap;
1477 _comp_mod->conf->efl_sync = cfdata->efl_sync;
1478 _comp_mod->conf->loose_sync = cfdata->loose_sync;
1479 _comp_mod->conf->vsync = cfdata->vsync;
1481 a = e_action_find("restart");
1482 if ((a) && (a->func.go)) a->func.go(NULL, NULL);
1483 // e_mod_comp_shutdown();
1484 // e_mod_comp_init();
1486 e_config_save_queue();