2 * Copyright (C) 2004-2007 Jaron Omega
3 * Copyright (C) 2004-2009 Kim Woelders
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to
7 * deal in the Software without restriction, including without limitation the
8 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
9 * sell copies of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies of the Software, its documentation and marketing & publicity
14 * materials, and acknowledgment shall be given in the documentation, materials
15 * and software packages that this Software was used.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 #ifdef ENABLE_THEME_TRANSPARENCY
33 * Theme transparency settings
37 static Timer *st_timer = NULL;
40 TransparencyChangeTimeout(void *data)
42 TransparencySet(PTR2INT(data));
49 TransparencyChange(int val)
52 TIMER_ADD(st_timer, .01, TransparencyChangeTimeout, INT2PTR(val));
56 * Configuration dialog
58 static int tmp_theme_transparency;
60 static int tmp_st_border;
61 static int tmp_st_widget;
62 static int tmp_st_dialog;
63 static int tmp_st_menu;
64 static int tmp_st_tooltip;
65 static int tmp_st_hilight;
68 CB_ConfigureTrans(Dialog * d __UNUSED__, int val, void *data __UNUSED__)
72 Conf.trans.border = tmp_st_border;
73 Conf.trans.widget = tmp_st_widget;
74 Conf.trans.dialog = tmp_st_dialog;
75 Conf.trans.menu = tmp_st_menu;
76 Conf.trans.tooltip = tmp_st_tooltip;
78 if (tmp_st_hilight == ICLASS_ATTR_GLASS)
80 Conf.trans.hilight = tmp_st_hilight;
81 Conf.trans.menu_item = ICLASS_ATTR_GLASS;
84 else if (tmp_st_hilight == ICLASS_ATTR_BG)
86 Conf.trans.hilight = tmp_st_hilight;
87 Conf.trans.menu_item = ICLASS_ATTR_BG;
90 else if (tmp_st_hilight == ICLASS_ATTR_OPAQUE)
92 Conf.trans.hilight = tmp_st_hilight;
93 Conf.trans.menu_item = ICLASS_ATTR_OPAQUE;
97 Conf.trans.pager = ICLASS_ATTR_BG;
98 Conf.trans.iconbox = ICLASS_ATTR_BG;
99 Conf.trans.warplist = ICLASS_ATTR_BG;
100 #if 0 /* Should not be necessary */
101 TransparencyChange(tmp_theme_transparency);
108 CB_ThemeTransparency(Dialog * d __UNUSED__, int val __UNUSED__, void *data)
114 Esnprintf(s, sizeof(s), _("Theme transparency: %2d"),
115 tmp_theme_transparency);
116 DialogItemSetText(di, s);
118 TransparencyChange(tmp_theme_transparency);
122 _DlgFillThemeTrans(Dialog * d __UNUSED__, DItem * table, void *data __UNUSED__)
125 DItem *radio_border, *radio_widget, *radio_menu,
126 *radio_dialog, *radio_tooltip, *radio_hilight;
129 tmp_st_border = Conf.trans.border;
130 tmp_st_widget = Conf.trans.widget;
131 tmp_st_dialog = Conf.trans.dialog;
132 tmp_st_menu = Conf.trans.menu;
133 tmp_st_tooltip = Conf.trans.tooltip;
134 tmp_st_hilight = Conf.trans.hilight;
136 tmp_theme_transparency = Conf.trans.alpha;
138 DialogItemTableSetOptions(table, 7, 0, 0, 0);
140 di = DialogAddItem(table, DITEM_TEXT);
141 DialogItemSetColSpan(di, 7);
142 DialogItemSetAlign(di, 0, 512);
143 DialogItemSetText(di, _("Changes Might Require Restart:"));
145 di = DialogAddItem(table, DITEM_SEPARATOR);
146 DialogItemSetColSpan(di, 7);
148 di = DialogAddItem(table, DITEM_NONE);
150 di = DialogAddItem(table, DITEM_TEXT);
151 DialogItemSetAlign(di, 0, 512);
152 DialogItemSetText(di, _("Borders:"));
154 di = DialogAddItem(table, DITEM_TEXT);
155 DialogItemSetAlign(di, 0, 512);
156 DialogItemSetText(di, _("Menus:"));
158 di = DialogAddItem(table, DITEM_TEXT);
159 DialogItemSetAlign(di, 0, 512);
160 DialogItemSetText(di, _("Hilights:"));
162 di = DialogAddItem(table, DITEM_TEXT);
163 DialogItemSetAlign(di, 0, 512);
164 DialogItemSetText(di, _("E Widgets:"));
166 di = DialogAddItem(table, DITEM_TEXT);
167 DialogItemSetAlign(di, 0, 512);
168 DialogItemSetText(di, _("E Dialogs:"));
170 di = DialogAddItem(table, DITEM_TEXT);
171 DialogItemSetAlign(di, 0, 512);
172 DialogItemSetText(di, _("Tooltips:"));
174 di = DialogAddItem(table, DITEM_TEXT);
175 DialogItemSetAlign(di, 0, 1024);
176 DialogItemSetText(di, _("Opaque"));
178 radio_border = di = DialogAddItem(table, DITEM_RADIOBUTTON);
179 DialogItemRadioButtonSetFirst(di, radio_border);
180 DialogItemRadioButtonGroupSetVal(di, 0);
182 radio_menu = di = DialogAddItem(table, DITEM_RADIOBUTTON);
183 DialogItemRadioButtonSetFirst(di, radio_menu);
184 DialogItemRadioButtonGroupSetVal(di, 0);
186 radio_hilight = di = DialogAddItem(table, DITEM_RADIOBUTTON);
187 DialogItemRadioButtonSetFirst(di, radio_hilight);
188 DialogItemRadioButtonGroupSetVal(di, 0);
190 radio_widget = di = DialogAddItem(table, DITEM_RADIOBUTTON);
191 DialogItemRadioButtonSetFirst(di, radio_widget);
192 DialogItemRadioButtonGroupSetVal(di, 0);
194 radio_dialog = di = DialogAddItem(table, DITEM_RADIOBUTTON);
195 DialogItemRadioButtonSetFirst(di, radio_dialog);
196 DialogItemRadioButtonGroupSetVal(di, 0);
198 radio_tooltip = di = DialogAddItem(table, DITEM_RADIOBUTTON);
199 DialogItemRadioButtonSetFirst(di, radio_tooltip);
200 DialogItemRadioButtonGroupSetVal(di, 0);
202 di = DialogAddItem(table, DITEM_TEXT);
203 DialogItemSetAlign(di, 0, 1024);
204 DialogItemSetText(di, _("Background"));
206 di = DialogAddItem(table, DITEM_RADIOBUTTON);
207 DialogItemRadioButtonSetFirst(di, radio_border);
208 DialogItemRadioButtonGroupSetVal(di, 1);
209 DialogItemRadioButtonGroupSetValPtr(radio_border, &tmp_st_border);
211 di = DialogAddItem(table, DITEM_RADIOBUTTON);
212 DialogItemRadioButtonSetFirst(di, radio_menu);
213 DialogItemRadioButtonGroupSetVal(di, 1);
215 di = DialogAddItem(table, DITEM_RADIOBUTTON);
216 DialogItemRadioButtonSetFirst(di, radio_hilight);
217 DialogItemRadioButtonGroupSetVal(di, 1);
219 di = DialogAddItem(table, DITEM_RADIOBUTTON);
220 DialogItemRadioButtonSetFirst(di, radio_widget);
221 DialogItemRadioButtonGroupSetVal(di, 1);
222 DialogItemRadioButtonGroupSetValPtr(radio_widget, &tmp_st_widget);
224 di = DialogAddItem(table, DITEM_RADIOBUTTON);
225 DialogItemRadioButtonSetFirst(di, radio_dialog);
226 DialogItemRadioButtonGroupSetVal(di, 1);
227 DialogItemRadioButtonGroupSetValPtr(radio_dialog, &tmp_st_dialog);
229 di = DialogAddItem(table, DITEM_RADIOBUTTON);
230 DialogItemRadioButtonSetFirst(di, radio_tooltip);
231 DialogItemRadioButtonGroupSetVal(di, 1);
233 di = DialogAddItem(table, DITEM_TEXT);
234 DialogItemSetAlign(di, 0, 1024);
235 DialogItemSetText(di, _("Glass"));
237 di = DialogAddItem(table, DITEM_NONE);
239 di = DialogAddItem(table, DITEM_RADIOBUTTON);
240 DialogItemRadioButtonSetFirst(di, radio_menu);
241 DialogItemRadioButtonGroupSetVal(di, 2);
242 DialogItemRadioButtonGroupSetValPtr(radio_menu, &tmp_st_menu);
244 di = DialogAddItem(table, DITEM_RADIOBUTTON);
245 DialogItemRadioButtonSetFirst(di, radio_hilight);
246 DialogItemRadioButtonGroupSetVal(di, 2);
247 DialogItemRadioButtonGroupSetValPtr(radio_hilight, &tmp_st_hilight);
249 di = DialogAddItem(table, DITEM_NONE);
251 di = DialogAddItem(table, DITEM_NONE);
253 di = DialogAddItem(table, DITEM_RADIOBUTTON);
254 DialogItemRadioButtonSetFirst(di, radio_tooltip);
255 DialogItemRadioButtonGroupSetVal(di, 2);
256 DialogItemRadioButtonGroupSetValPtr(radio_tooltip, &tmp_st_tooltip);
258 di = DialogAddItem(table, DITEM_SEPARATOR);
259 DialogItemSetColSpan(di, 7);
261 di = label = DialogAddItem(table, DITEM_TEXT);
262 DialogItemSetColSpan(di, 7);
263 DialogItemSetAlign(di, 512, 512);
264 Esnprintf(s, sizeof(s), _("Theme transparency: %2d"),
265 tmp_theme_transparency);
266 DialogItemSetText(di, s);
268 di = DialogAddItem(table, DITEM_SLIDER);
269 DialogItemSetColSpan(di, 7);
270 DialogItemSliderSetMinLength(di, 10);
271 DialogItemSliderSetBounds(di, 0, 255);
272 DialogItemSliderSetUnits(di, 1);
273 DialogItemSliderSetJump(di, 16);
274 DialogItemSliderSetValPtr(di, &tmp_theme_transparency);
275 DialogItemSetCallback(di, CB_ThemeTransparency, 0, (void *)label);
278 const DialogDef DlgThemeTrans = {
281 N_("Selective Transparency Settings"),
282 SOUND_SETTINGS_TRANS,
284 N_("Enlightenment Selective Transparency\n" "Settings Dialog\n"),
286 DLG_OAC, CB_ConfigureTrans,
288 #endif /* ENABLE_DIALOGS */
291 TransparencySighan(int sig, void *prm __UNUSED__)
295 case ESIGNAL_CONFIGURE:
296 TransparencySet(Conf.trans.alpha);
301 static const CfgItem TransCfgItems[] = {
302 CFG_ITEM_INT(Conf.trans, alpha, 0),
303 CFG_ITEM_INT(Conf.trans, menu, ICLASS_ATTR_BG),
304 CFG_ITEM_INT(Conf.trans, menu_item, ICLASS_ATTR_BG),
305 CFG_ITEM_INT(Conf.trans, tooltip, ICLASS_ATTR_GLASS),
306 CFG_ITEM_INT(Conf.trans, widget, ICLASS_ATTR_BG),
307 CFG_ITEM_INT(Conf.trans, hilight, ICLASS_ATTR_OPAQUE),
308 CFG_ITEM_INT(Conf.trans, border, ICLASS_ATTR_BG),
309 CFG_ITEM_INT(Conf.trans, iconbox, ICLASS_ATTR_BG),
310 CFG_ITEM_INT(Conf.trans, dialog, ICLASS_ATTR_BG),
311 CFG_ITEM_INT(Conf.trans, pager, ICLASS_ATTR_BG),
312 CFG_ITEM_INT(Conf.trans, warplist, ICLASS_ATTR_BG),
314 #define N_CFG_ITEMS (sizeof(TransCfgItems)/sizeof(CfgItem))
319 extern const EModule ModTransparency;
320 const EModule ModTransparency = {
321 "transparency", "tr",
324 {N_CFG_ITEMS, TransCfgItems}
327 #endif /* ENABLE_THEME_TRANSPARENCY */