1 /*  cssed (c) Iago Rubio 2003, 2005 - A tiny CSS editor.
2  *
3  *  This program is free software; you can redistribute it and/or modify
4  *  it under the terms of the GNU General Public License as published by
5  *  the Free Software Foundation; either version 2 of the License, or
6  *  (at your option) any later version.
7  *
8  *  This program is distributed in the hope that it will be useful,
9  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  *  GNU Library General Public License for more details.
12  *
13  *  You should have received a copy of the GNU General Public License
14  *  along with this program; if not, write to the Free Software
15  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16  */
17 
18 #ifdef HAVE_CONFIG_H
19 #  include <config.h>
20 #endif
21 
22 #include <sys/types.h>
23 #include <sys/stat.h>
24 #include <string.h>
25 #include <stdio.h>
26 
27 #include <gdk/gdkkeysyms.h>
28 #include <gtk/gtk.h>
29 
30 
31 #include "cssedwindow.h"
32 #include "document.h"
33 #include "utils.h"
34 #include "support.h"
35 
36 #define GLADE_HOOKUP_OBJECT(component,widget,name) \
37   g_object_set_data_full (G_OBJECT (component), name, \
38     gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
39 
40 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
41   g_object_set_data (G_OBJECT (component), name, widget)
42 
43 void on_color_wizard_dialog_close(GtkDialog *dialog, gpointer user_data);
44 void on_button_fore_clicked(GtkButton *button, gpointer user_data);
45 void on_button_back_clicked (GtkButton *button, gpointer user_data);
46 void on_button_attach_clicked(GtkButton *button, gpointer user_data);
47 void on_button_border_top_clicked(GtkButton *button, gpointer user_data);
48 void on_button_border_right_clicked(GtkButton *button, gpointer user_data);
49 void on_button_border_bottom_clicked(GtkButton *button, gpointer user_data);
50 void on_button_border_left_clicked(GtkButton *button, gpointer user_data);
51 void on_cancelbutton_clicked (GtkButton *button, gpointer user_data);
52 void on_button_outline_clicked (GtkButton *button, gpointer user_data);
53 void on_applybutton_clicked (GtkButton *button, gpointer user_data);
54 void on_okbutton_clicked (GtkButton *button, gpointer user_data);
55 void set_color_and_label(GtkWidget* entry, GtkWidget* label);
56 void write_results_to_document(GtkWidget* parent, CssedWindow* window);
57 
58 GtkWidget*
create_color_wizard_dialog(CssedWindow * window)59 create_color_wizard_dialog (CssedWindow* window)
60 {
61   GtkWidget *color_wizard_dialog;
62   GtkWidget *dialog_vbox;
63   GtkWidget *table;
64   GtkWidget *combo_fore;
65   GList *combo_items = NULL;
66   GtkWidget *combo_entry_fore;
67   GtkWidget *combo_back;
68   GtkWidget *combo_entry_back;
69   GtkWidget *combo_attach;
70   GtkWidget *combo_entry_attach;
71   GtkWidget *combo_border_top;
72   GtkWidget *combo_entry_border_top;
73   GtkWidget *combo_border_right;
74   GtkWidget *combo_entry_border_right;
75   GtkWidget *combo_border_bottom;
76   GtkWidget *combo_entry_border_bottom;
77   GtkWidget *combo_border_left;
78   GtkWidget *combo_entry_border_left;
79   GtkWidget *combo_outline;
80   GtkWidget *combo_entry_outline;
81   GtkWidget *checkbutton_fore;
82   GtkWidget *checkbutton_back;
83   GtkWidget *checkbutton_attach;
84   GtkWidget *checkbutton_border_top;
85   GtkWidget *checkbutton_border_right;
86   GtkWidget *checkbutton_border_bottom;
87   GtkWidget *checkbutton_border_left;
88   GtkWidget *checkbutton_outline;
89   GtkWidget *button_fore;
90   GtkWidget *alignment_fore;
91   GtkWidget *hbox_fore;
92   GtkWidget *image_fore;
93   GtkWidget *label_fore;
94   GtkWidget *button_back;
95   GtkWidget *alignment_back;
96   GtkWidget *hbox_back;
97   GtkWidget *image_back;
98   GtkWidget *label_back;
99   GtkWidget *button_attach;
100   GtkWidget *alignment_attach;
101   GtkWidget *hbox_attach;
102   GtkWidget *image_attach;
103   GtkWidget *label_attach;
104   GtkWidget *button_border_top;
105   GtkWidget *alignment_border_top;
106   GtkWidget *hbox_border_top;
107   GtkWidget *image_border_top;
108   GtkWidget *label_border_top;
109   GtkWidget *button_border_right;
110   GtkWidget *alignment_border_right;
111   GtkWidget *hbox_border_right;
112   GtkWidget *image_border_right;
113   GtkWidget *label_border_right;
114   GtkWidget *button_border_bottom;
115   GtkWidget *alignment_border_bottom;
116   GtkWidget *hbox_border_botom;
117   GtkWidget *image_border_bottom;
118   GtkWidget *label_border_bottom;
119   GtkWidget *button_border_left;
120   GtkWidget *alignment_border_left;
121   GtkWidget *hbox_border_left;
122   GtkWidget *image_border_left;
123   GtkWidget *label_border_left;
124   GtkWidget *button_outline;
125   GtkWidget *alignment_outline;
126   GtkWidget *hbox_outline;
127   GtkWidget *image_outline;
128   GtkWidget *label_outline;
129   GtkWidget *dialog_action_area;
130   GtkWidget *cancelbutton;
131   GtkWidget *applybutton;
132   GtkWidget *okbutton;
133 
134 
135 
136   color_wizard_dialog = gtk_dialog_new ();
137   gtk_window_set_title (GTK_WINDOW (color_wizard_dialog), _("Color wizard"));
138   gtk_window_set_default_size (GTK_WINDOW (color_wizard_dialog), 340, 250);
139   gtk_window_set_destroy_with_parent (GTK_WINDOW (color_wizard_dialog), TRUE);
140   gtk_window_set_transient_for ( GTK_WINDOW(color_wizard_dialog),
141 				      GTK_WINDOW ( cssed_window_get_window_widget(window) ));
142 
143   dialog_vbox = GTK_DIALOG (color_wizard_dialog)->vbox;
144   gtk_widget_show (dialog_vbox);
145 
146   table = gtk_table_new (8, 3, FALSE);
147   gtk_widget_show (table);
148   gtk_box_pack_start (GTK_BOX (dialog_vbox), table, TRUE, TRUE, 0);
149 
150   combo_fore = gtk_combo_new ();
151   g_object_set_data (G_OBJECT (GTK_COMBO (combo_fore)->popwin),
152                      "GladeParentKey", combo_fore);
153   gtk_widget_show (combo_fore);
154   gtk_table_attach (GTK_TABLE (table), combo_fore, 1, 2, 0, 1,
155                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
156                     (GtkAttachOptions) (0), 0, 0);
157   combo_items = g_list_append (combo_items, (gpointer) "aqua");
158   combo_items = g_list_append (combo_items, (gpointer) "black");
159   combo_items = g_list_append (combo_items, (gpointer) "blue");
160   combo_items = g_list_append (combo_items, (gpointer) "fuchsia");
161   combo_items = g_list_append (combo_items, (gpointer) "gray");
162   combo_items = g_list_append (combo_items, (gpointer) "green");
163   combo_items = g_list_append (combo_items, (gpointer) "lime");
164   combo_items = g_list_append (combo_items, (gpointer) "maroon");
165   combo_items = g_list_append (combo_items, (gpointer) "navy");
166   combo_items = g_list_append (combo_items, (gpointer) "olive");
167   combo_items = g_list_append (combo_items, (gpointer) "purple");
168   combo_items = g_list_append (combo_items, (gpointer) "red");
169   combo_items = g_list_append (combo_items, (gpointer) "silver");
170   combo_items = g_list_append (combo_items, (gpointer) "teal");
171   combo_items = g_list_append (combo_items, (gpointer) "white");
172   combo_items = g_list_append (combo_items, (gpointer) "yellow");
173   combo_items = g_list_append (combo_items, (gpointer) "activeborder ");
174   combo_items = g_list_append (combo_items, (gpointer) "activecaption");
175   combo_items = g_list_append (combo_items, (gpointer) "appworkspace");
176   combo_items = g_list_append (combo_items, (gpointer) "background");
177   combo_items = g_list_append (combo_items, (gpointer) "buttonface");
178   combo_items = g_list_append (combo_items, (gpointer) "buttonhighlight");
179   combo_items = g_list_append (combo_items, (gpointer) "buttonshadow");
180   combo_items = g_list_append (combo_items, (gpointer) "buttontext");
181   combo_items = g_list_append (combo_items, (gpointer) "captiontext");
182   combo_items = g_list_append (combo_items, (gpointer) "graytext");
183   combo_items = g_list_append (combo_items, (gpointer) "highlight");
184   combo_items = g_list_append (combo_items, (gpointer) "highlighttext");
185   combo_items = g_list_append (combo_items, (gpointer) "inactiveborder");
186   combo_items = g_list_append (combo_items, (gpointer) "inactivecaption");
187   combo_items = g_list_append (combo_items, (gpointer) "inactivecaptiontext");
188   combo_items = g_list_append (combo_items, (gpointer) "infobackground");
189   combo_items = g_list_append (combo_items, (gpointer) "infotext");
190   combo_items = g_list_append (combo_items, (gpointer) "menu");
191   combo_items = g_list_append (combo_items, (gpointer) "menutext");
192   combo_items = g_list_append (combo_items, (gpointer) "scrollbar");
193   combo_items = g_list_append (combo_items, (gpointer) "threeddarkshadow");
194   combo_items = g_list_append (combo_items, (gpointer) "threedface");
195   combo_items = g_list_append (combo_items, (gpointer) "threedhighlight");
196   combo_items = g_list_append (combo_items, (gpointer) "threedlightshadow");
197   combo_items = g_list_append (combo_items, (gpointer) "threedshadow");
198   combo_items = g_list_append (combo_items, (gpointer) "window");
199   combo_items = g_list_append (combo_items, (gpointer) "windowframe");
200   combo_items = g_list_append (combo_items, (gpointer) "windowtext");
201   gtk_combo_set_popdown_strings (GTK_COMBO (combo_fore), combo_items);
202 
203 
204   combo_entry_fore = GTK_COMBO (combo_fore)->entry;
205   gtk_widget_show (combo_entry_fore);
206   gtk_entry_set_text (GTK_ENTRY (combo_entry_fore), "");
207 
208   combo_back = gtk_combo_new ();
209   g_object_set_data (G_OBJECT (GTK_COMBO (combo_back)->popwin),
210                      "GladeParentKey", combo_back);
211   gtk_widget_show (combo_back);
212   gtk_table_attach (GTK_TABLE (table), combo_back, 1, 2, 1, 2,
213                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
214                     (GtkAttachOptions) (0), 0, 0);
215   gtk_combo_set_popdown_strings (GTK_COMBO (combo_back), combo_items);
216 
217   combo_entry_back = GTK_COMBO (combo_back)->entry;
218   gtk_widget_show (combo_entry_back);
219   gtk_entry_set_text (GTK_ENTRY (combo_entry_back), "");
220 
221   combo_attach = gtk_combo_new ();
222   g_object_set_data (G_OBJECT (GTK_COMBO (combo_attach)->popwin),
223                      "GladeParentKey", combo_attach);
224   gtk_widget_show (combo_attach);
225   gtk_table_attach (GTK_TABLE (table), combo_attach, 1, 2, 2, 3,
226                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
227                     (GtkAttachOptions) (0), 0, 0);
228   gtk_combo_set_popdown_strings (GTK_COMBO (combo_attach), combo_items);
229 
230   combo_entry_attach = GTK_COMBO (combo_attach)->entry;
231   gtk_widget_show (combo_entry_attach);
232   gtk_entry_set_text (GTK_ENTRY (combo_entry_attach), "");
233 
234   combo_border_top = gtk_combo_new ();
235   g_object_set_data (G_OBJECT (GTK_COMBO (combo_border_top)->popwin),
236                      "GladeParentKey", combo_border_top);
237   gtk_widget_show (combo_border_top);
238   gtk_table_attach (GTK_TABLE (table), combo_border_top, 1, 2, 3, 4,
239                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
240                     (GtkAttachOptions) (0), 0, 0);
241   gtk_combo_set_popdown_strings (GTK_COMBO (combo_border_top), combo_items);
242 
243   combo_entry_border_top = GTK_COMBO (combo_border_top)->entry;
244   gtk_widget_show (combo_entry_border_top);
245   gtk_entry_set_text (GTK_ENTRY (combo_entry_border_top), "");
246 
247   combo_border_right = gtk_combo_new ();
248   g_object_set_data (G_OBJECT (GTK_COMBO (combo_border_right)->popwin),
249                      "GladeParentKey", combo_border_right);
250   gtk_widget_show (combo_border_right);
251   gtk_table_attach (GTK_TABLE (table), combo_border_right, 1, 2, 4, 5,
252                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
253                     (GtkAttachOptions) (0), 0, 0);
254   gtk_combo_set_popdown_strings (GTK_COMBO (combo_border_right), combo_items);
255 
256   combo_entry_border_right = GTK_COMBO (combo_border_right)->entry;
257   gtk_widget_show (combo_entry_border_right);
258    gtk_entry_set_text (GTK_ENTRY (combo_entry_border_right), "");
259 
260   combo_border_bottom = gtk_combo_new ();
261   g_object_set_data (G_OBJECT (GTK_COMBO (combo_border_bottom)->popwin),
262                      "GladeParentKey", combo_border_bottom);
263   gtk_widget_show (combo_border_bottom);
264   gtk_table_attach (GTK_TABLE (table), combo_border_bottom, 1, 2, 5, 6,
265                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
266                     (GtkAttachOptions) (0), 0, 0);
267   gtk_combo_set_popdown_strings (GTK_COMBO (combo_border_bottom), combo_items);
268 
269   combo_entry_border_bottom = GTK_COMBO (combo_border_bottom)->entry;
270   gtk_widget_show (combo_entry_border_bottom);
271    gtk_entry_set_text (GTK_ENTRY (combo_entry_border_bottom), "");
272 
273   combo_border_left = gtk_combo_new ();
274   g_object_set_data (G_OBJECT (GTK_COMBO (combo_border_left)->popwin),
275                      "GladeParentKey", combo_border_left);
276   gtk_widget_show (combo_border_left);
277   gtk_table_attach (GTK_TABLE (table), combo_border_left, 1, 2, 6, 7,
278                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
279                     (GtkAttachOptions) (0), 0, 0);
280   gtk_combo_set_popdown_strings (GTK_COMBO (combo_border_left), combo_items);
281 
282   combo_entry_border_left = GTK_COMBO (combo_border_left)->entry;
283   gtk_widget_show (combo_entry_border_left);
284    gtk_entry_set_text (GTK_ENTRY (combo_entry_border_left), "");
285 
286   combo_outline = gtk_combo_new ();
287   g_object_set_data (G_OBJECT (GTK_COMBO (combo_outline)->popwin),
288                      "GladeParentKey", combo_border_left);
289   gtk_widget_show (combo_outline);
290   gtk_table_attach (GTK_TABLE (table), combo_outline, 1, 2, 7, 8,
291                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
292                     (GtkAttachOptions) (0), 0, 0);
293   gtk_combo_set_popdown_strings (GTK_COMBO (combo_outline), combo_items);
294 
295   // free combo_items as it's not needed anymore
296   g_list_free (combo_items);
297 
298   combo_entry_outline = GTK_COMBO (combo_outline)->entry;
299   gtk_widget_show (combo_entry_outline);
300    gtk_entry_set_text (GTK_ENTRY (combo_entry_outline), "");
301 
302   checkbutton_fore = gtk_check_button_new_with_mnemonic (_("foreground"));
303   gtk_widget_show (checkbutton_fore);
304   gtk_table_attach (GTK_TABLE (table), checkbutton_fore, 0, 1, 0, 1,
305                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
306                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
307 
308   checkbutton_back = gtk_check_button_new_with_mnemonic (_("background"));
309   gtk_widget_show (checkbutton_back);
310   gtk_table_attach (GTK_TABLE (table), checkbutton_back, 0, 1, 1, 2,
311                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
312                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
313 
314   checkbutton_attach = gtk_check_button_new_with_mnemonic (_("background attachment"));
315   gtk_widget_show (checkbutton_attach);
316   gtk_table_attach (GTK_TABLE (table), checkbutton_attach, 0, 1, 2, 3,
317                     (GtkAttachOptions) (GTK_FILL),
318                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
319 
320   checkbutton_border_top = gtk_check_button_new_with_mnemonic (_("border top"));
321   gtk_widget_show (checkbutton_border_top);
322   gtk_table_attach (GTK_TABLE (table), checkbutton_border_top, 0, 1, 3, 4,
323                     (GtkAttachOptions) (GTK_FILL),
324                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
325 
326   checkbutton_border_right = gtk_check_button_new_with_mnemonic (_("border right"));
327   gtk_widget_show (checkbutton_border_right);
328   gtk_table_attach (GTK_TABLE (table), checkbutton_border_right, 0, 1, 4, 5,
329                     (GtkAttachOptions) (GTK_FILL),
330                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
331 
332   checkbutton_border_bottom = gtk_check_button_new_with_mnemonic (_("border bottom"));
333   gtk_widget_show (checkbutton_border_bottom);
334   gtk_table_attach (GTK_TABLE (table), checkbutton_border_bottom, 0, 1, 5, 6,
335                     (GtkAttachOptions) (GTK_FILL),
336                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
337 
338   checkbutton_border_left = gtk_check_button_new_with_mnemonic (_("border left"));
339   gtk_widget_show (checkbutton_border_left);
340   gtk_table_attach (GTK_TABLE (table), checkbutton_border_left, 0, 1, 6, 7,
341                     (GtkAttachOptions) (GTK_FILL),
342                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
343 
344   checkbutton_outline = gtk_check_button_new_with_mnemonic (_("outline"));
345   gtk_widget_show (checkbutton_outline);
346   gtk_table_attach (GTK_TABLE (table), checkbutton_outline, 0, 1, 7, 8,
347                     (GtkAttachOptions) (GTK_FILL),
348                     (GtkAttachOptions) (GTK_EXPAND), 5, 0);
349 
350   button_fore = gtk_button_new ();
351   gtk_widget_show (button_fore);
352   gtk_table_attach (GTK_TABLE (table), button_fore, 2, 3, 0, 1,
353                     (GtkAttachOptions) (GTK_FILL),
354                     (GtkAttachOptions) (0), 5, 0);
355 
356   alignment_fore = gtk_alignment_new (0.5, 0.5, 0, 0);
357   gtk_widget_show (alignment_fore);
358   gtk_container_add (GTK_CONTAINER (button_fore), alignment_fore);
359 
360   hbox_fore = gtk_hbox_new (FALSE, 2);
361   gtk_widget_show (hbox_fore);
362   gtk_container_add (GTK_CONTAINER (alignment_fore), hbox_fore);
363 
364   image_fore = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
365   gtk_widget_show (image_fore);
366   gtk_box_pack_start (GTK_BOX (hbox_fore), image_fore, FALSE, FALSE, 0);
367 
368   label_fore = gtk_label_new_with_mnemonic (_("   "));
369   gtk_widget_show (label_fore);
370   gtk_box_pack_start (GTK_BOX (hbox_fore), label_fore, FALSE, FALSE, 0);
371   gtk_label_set_justify (GTK_LABEL (label_fore), GTK_JUSTIFY_LEFT);
372 
373   button_back = gtk_button_new ();
374   gtk_widget_show (button_back);
375   gtk_table_attach (GTK_TABLE (table), button_back, 2, 3, 1, 2,
376                     (GtkAttachOptions) (GTK_FILL),
377                     (GtkAttachOptions) (0), 5, 0);
378 
379   alignment_back = gtk_alignment_new (0.5, 0.5, 0, 0);
380   gtk_widget_show (alignment_back);
381   gtk_container_add (GTK_CONTAINER (button_back), alignment_back);
382 
383   hbox_back = gtk_hbox_new (FALSE, 2);
384   gtk_widget_show (hbox_back);
385   gtk_container_add (GTK_CONTAINER (alignment_back), hbox_back);
386 
387   image_back = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
388   gtk_widget_show (image_back);
389   gtk_box_pack_start (GTK_BOX (hbox_back), image_back, FALSE, FALSE, 0);
390 
391   label_back = gtk_label_new_with_mnemonic (_("   "));
392   gtk_widget_show (label_back);
393   gtk_box_pack_start (GTK_BOX (hbox_back), label_back, FALSE, FALSE, 0);
394   gtk_label_set_justify (GTK_LABEL (label_back), GTK_JUSTIFY_LEFT);
395 
396   button_attach = gtk_button_new ();
397   gtk_widget_show (button_attach);
398   gtk_table_attach (GTK_TABLE (table), button_attach, 2, 3, 2, 3,
399                     (GtkAttachOptions) (GTK_FILL),
400                     (GtkAttachOptions) (0), 5, 0);
401 
402   alignment_attach = gtk_alignment_new (0.5, 0.5, 0, 0);
403   gtk_widget_show (alignment_attach);
404   gtk_container_add (GTK_CONTAINER (button_attach), alignment_attach);
405 
406   hbox_attach = gtk_hbox_new (FALSE, 2);
407   gtk_widget_show (hbox_attach);
408   gtk_container_add (GTK_CONTAINER (alignment_attach), hbox_attach);
409 
410   image_attach = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
411   gtk_widget_show (image_attach);
412   gtk_box_pack_start (GTK_BOX (hbox_attach), image_attach, FALSE, FALSE, 0);
413 
414   label_attach = gtk_label_new_with_mnemonic (_("   "));
415   gtk_widget_show (label_attach);
416   gtk_box_pack_start (GTK_BOX (hbox_attach), label_attach, FALSE, FALSE, 0);
417   gtk_label_set_justify (GTK_LABEL (label_attach), GTK_JUSTIFY_LEFT);
418 /**/
419   button_border_top = gtk_button_new ();
420   gtk_widget_show (button_border_top);
421   gtk_table_attach (GTK_TABLE (table), button_border_top, 2, 3, 3, 4,
422                     (GtkAttachOptions) (GTK_FILL),
423                     (GtkAttachOptions) (0), 5, 0);
424 
425   alignment_border_top = gtk_alignment_new (0.5, 0.5, 0, 0);
426   gtk_widget_show (alignment_border_top);
427   gtk_container_add (GTK_CONTAINER (button_border_top), alignment_border_top);
428 
429   hbox_border_top = gtk_hbox_new (FALSE, 2);
430   gtk_widget_show (hbox_border_top);
431   gtk_container_add (GTK_CONTAINER (alignment_border_top), hbox_border_top);
432 
433   image_border_top = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
434   gtk_widget_show (image_border_top);
435   gtk_box_pack_start (GTK_BOX (hbox_border_top), image_border_top, FALSE, FALSE, 0);
436 
437   label_border_top = gtk_label_new_with_mnemonic (_("   "));
438   gtk_widget_show (label_border_top);
439   gtk_box_pack_start (GTK_BOX (hbox_border_top), label_border_top, FALSE, FALSE, 0);
440   gtk_label_set_justify (GTK_LABEL (label_border_top), GTK_JUSTIFY_LEFT);
441 
442   button_border_right = gtk_button_new ();
443   gtk_widget_show (button_border_right);
444   gtk_table_attach (GTK_TABLE (table), button_border_right, 2, 3, 4, 5,
445                     (GtkAttachOptions) (GTK_FILL),
446                     (GtkAttachOptions) (0), 5, 0);
447 
448   alignment_border_right = gtk_alignment_new (0.5, 0.5, 0, 0);
449   gtk_widget_show (alignment_border_right);
450   gtk_container_add (GTK_CONTAINER (button_border_right), alignment_border_right);
451 
452   hbox_border_right = gtk_hbox_new (FALSE, 2);
453   gtk_widget_show (hbox_border_right);
454   gtk_container_add (GTK_CONTAINER (alignment_border_right), hbox_border_right);
455 
456   image_border_right = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
457   gtk_widget_show (image_border_right);
458   gtk_box_pack_start (GTK_BOX (hbox_border_right), image_border_right, FALSE, FALSE, 0);
459 
460   label_border_right = gtk_label_new_with_mnemonic (_("   "));
461   gtk_widget_show (label_border_right);
462   gtk_box_pack_start (GTK_BOX (hbox_border_right), label_border_right, FALSE, FALSE, 0);
463   gtk_label_set_justify (GTK_LABEL (label_border_right), GTK_JUSTIFY_LEFT);
464 
465   button_border_bottom = gtk_button_new ();
466   gtk_widget_show (button_border_bottom);
467   gtk_table_attach (GTK_TABLE (table), button_border_bottom, 2, 3, 5, 6,
468                     (GtkAttachOptions) (GTK_FILL),
469                     (GtkAttachOptions) (0), 5, 0);
470 
471   alignment_border_bottom = gtk_alignment_new (0.5, 0.5, 0, 0);
472   gtk_widget_show (alignment_border_bottom);
473   gtk_container_add (GTK_CONTAINER (button_border_bottom), alignment_border_bottom);
474 
475   hbox_border_botom = gtk_hbox_new (FALSE, 2);
476   gtk_widget_show (hbox_border_botom);
477   gtk_container_add (GTK_CONTAINER (alignment_border_bottom), hbox_border_botom);
478 
479   image_border_bottom = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
480   gtk_widget_show (image_border_bottom);
481   gtk_box_pack_start (GTK_BOX (hbox_border_botom), image_border_bottom, FALSE, FALSE, 0);
482 
483   label_border_bottom = gtk_label_new_with_mnemonic (_("   "));
484   gtk_widget_show (label_border_bottom);
485   gtk_box_pack_start (GTK_BOX (hbox_border_botom), label_border_bottom, FALSE, FALSE, 0);
486   gtk_label_set_justify (GTK_LABEL (label_border_bottom), GTK_JUSTIFY_LEFT);
487 
488   button_border_left = gtk_button_new ();
489   gtk_widget_show (button_border_left);
490   gtk_table_attach (GTK_TABLE (table), button_border_left, 2, 3, 6, 7,
491                     (GtkAttachOptions) (GTK_FILL),
492                     (GtkAttachOptions) (0), 5, 0);
493 
494   alignment_border_left = gtk_alignment_new (0.5, 0.5, 0, 0);
495   gtk_widget_show (alignment_border_left);
496   gtk_container_add (GTK_CONTAINER (button_border_left), alignment_border_left);
497 
498   hbox_border_left = gtk_hbox_new (FALSE, 2);
499   gtk_widget_show (hbox_border_left);
500   gtk_container_add (GTK_CONTAINER (alignment_border_left), hbox_border_left);
501 
502   image_border_left = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
503   gtk_widget_show (image_border_left);
504   gtk_box_pack_start (GTK_BOX (hbox_border_left), image_border_left, FALSE, FALSE, 0);
505 
506   label_border_left = gtk_label_new_with_mnemonic (_("   "));
507   gtk_widget_show (label_border_left);
508   gtk_box_pack_start (GTK_BOX (hbox_border_left), label_border_left, FALSE, FALSE, 0);
509   gtk_label_set_justify (GTK_LABEL (label_border_left), GTK_JUSTIFY_LEFT);
510 
511   button_outline = gtk_button_new ();
512   gtk_widget_show (button_outline);
513   gtk_table_attach (GTK_TABLE (table), button_outline, 2, 3, 7, 8,
514                     (GtkAttachOptions) (GTK_FILL),
515                     (GtkAttachOptions) (0), 5, 0);
516 
517   alignment_outline = gtk_alignment_new (0.5, 0.5, 0, 0);
518   gtk_widget_show (alignment_outline);
519   gtk_container_add (GTK_CONTAINER (button_outline), alignment_outline);
520 
521   hbox_outline = gtk_hbox_new (FALSE, 2);
522   gtk_widget_show (hbox_outline);
523   gtk_container_add (GTK_CONTAINER (alignment_outline), hbox_outline);
524 
525   image_outline = gtk_image_new_from_stock ("gtk-select-color", GTK_ICON_SIZE_BUTTON);
526   gtk_widget_show (image_outline);
527   gtk_box_pack_start (GTK_BOX (hbox_outline), image_outline, FALSE, FALSE, 0);
528 
529   label_outline = gtk_label_new_with_mnemonic (_("   "));
530   gtk_widget_show (label_outline);
531   gtk_box_pack_start (GTK_BOX (hbox_outline), label_outline, FALSE, FALSE, 0);
532   gtk_label_set_justify (GTK_LABEL (label_outline), GTK_JUSTIFY_LEFT);
533 
534   dialog_action_area = GTK_DIALOG (color_wizard_dialog)->action_area;
535   gtk_widget_show (dialog_action_area);
536   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area), GTK_BUTTONBOX_END);
537 
538   cancelbutton = gtk_button_new_from_stock ("gtk-cancel");
539   gtk_widget_show (cancelbutton);
540   gtk_dialog_add_action_widget (GTK_DIALOG (color_wizard_dialog), cancelbutton, GTK_RESPONSE_CANCEL);
541   GTK_WIDGET_SET_FLAGS (cancelbutton, GTK_CAN_DEFAULT);
542 
543   applybutton = gtk_button_new_from_stock ("gtk-apply");
544   gtk_widget_show (applybutton);
545   gtk_dialog_add_action_widget (GTK_DIALOG (color_wizard_dialog), applybutton, GTK_RESPONSE_APPLY);
546   GTK_WIDGET_SET_FLAGS (applybutton, GTK_CAN_DEFAULT);
547 
548   okbutton = gtk_button_new_from_stock ("gtk-ok");
549   gtk_widget_show (okbutton);
550   gtk_dialog_add_action_widget (GTK_DIALOG (color_wizard_dialog), okbutton, GTK_RESPONSE_OK);
551   GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);
552 
553 /*
554   g_signal_connect ((gpointer) color_wizard_dialog, "close",
555                     G_CALLBACK (on_color_wizard_dialog_close),
556                     NULL);
557 */
558   g_signal_connect ((gpointer) button_fore, "clicked",
559                     G_CALLBACK (on_button_fore_clicked),
560                     NULL);
561   g_signal_connect ((gpointer) button_back, "clicked",
562                     G_CALLBACK (on_button_back_clicked),
563                     NULL);
564   g_signal_connect ((gpointer) button_attach, "clicked",
565                     G_CALLBACK (on_button_attach_clicked),
566                     NULL);
567   g_signal_connect ((gpointer) button_border_top, "clicked",
568                     G_CALLBACK (on_button_border_top_clicked),
569                     NULL);
570   g_signal_connect ((gpointer) button_border_right, "clicked",
571                     G_CALLBACK (on_button_border_right_clicked),
572                     NULL);
573   g_signal_connect ((gpointer) button_border_bottom, "clicked",
574                     G_CALLBACK (on_button_border_bottom_clicked),
575                     NULL);
576   g_signal_connect ((gpointer) button_border_left, "clicked",
577                     G_CALLBACK (on_button_border_left_clicked),
578                     NULL);
579   g_signal_connect ((gpointer) button_outline, "clicked",
580                     G_CALLBACK (on_button_outline_clicked),
581                     NULL);
582   g_signal_connect ((gpointer) cancelbutton, "clicked",
583                     G_CALLBACK (on_cancelbutton_clicked),
584                     color_wizard_dialog);
585   g_signal_connect ((gpointer) applybutton, "clicked",
586                     G_CALLBACK (on_applybutton_clicked),
587                     window);
588   g_signal_connect ((gpointer) okbutton, "clicked",
589                     G_CALLBACK (on_okbutton_clicked),
590                     window);
591 
592 
593 	GLADE_HOOKUP_OBJECT_NO_REF (color_wizard_dialog, color_wizard_dialog, "color_wizard_dialog");
594   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_fore, "combo_entry_fore");
595   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_back, "combo_entry_back");
596   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_attach, "combo_entry_attach");
597   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_border_top, "combo_entry_border_top");
598   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_border_right, "combo_entry_border_right");
599   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_border_bottom, "combo_entry_border_bottom");
600   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_border_left, "combo_entry_border_left");
601   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_border_left, "combo_entry_border_left");
602   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_fore, "checkbutton_fore");
603   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_back, "checkbutton_back");
604   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_attach, "checkbutton_attach");
605   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_border_top, "checkbutton_border_top");
606   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_border_right, "checkbutton_border_right");
607   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_border_bottom, "checkbutton_border_bottom");
608   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_border_left, "checkbutton_border_left");
609   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_border_left, "checkbutton_border_left");
610   GLADE_HOOKUP_OBJECT (color_wizard_dialog, checkbutton_outline,"checkbutton_outline");
611   GLADE_HOOKUP_OBJECT (color_wizard_dialog, combo_entry_outline,"combo_entry_outline");
612   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_fore, "button_fore");
613   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_fore, "label_fore");
614   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_back, "button_back");
615   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_back, "label_back");
616   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_attach, "button_attach");
617   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_attach, "label_attach");
618   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_border_top, "button_border_top");
619   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_border_top, "label_border_top");
620   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_border_right, "button_border_right");
621   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_border_right, "label_border_right");
622   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_border_bottom, "button_border_bottom");
623   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_border_bottom, "label_border_bottom");
624   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_border_left, "button_border_left");
625   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_border_left, "label_border_left");
626   GLADE_HOOKUP_OBJECT (color_wizard_dialog, button_outline, "button_outline");
627   GLADE_HOOKUP_OBJECT (color_wizard_dialog, label_outline, "label_outline");
628   GLADE_HOOKUP_OBJECT (color_wizard_dialog, cancelbutton, "cancelbutton");
629   GLADE_HOOKUP_OBJECT (color_wizard_dialog, applybutton, "applybutton");
630   GLADE_HOOKUP_OBJECT (color_wizard_dialog, okbutton, "okbutton");
631 
632   return color_wizard_dialog;
633 }
634 
635 /* callbacks */
636 void
on_color_wizard_dialog_close(GtkDialog * dialog,gpointer user_data)637 on_color_wizard_dialog_close           (GtkDialog       *dialog,
638                                         gpointer         user_data)
639 {
640 	gtk_widget_destroy(GTK_WIDGET(dialog));
641 }
642 
643 
644 void
on_button_fore_clicked(GtkButton * button,gpointer user_data)645 on_button_fore_clicked                 (GtkButton       *button,
646                                         gpointer         user_data)
647 {
648 	GtkWidget* entry;
649 	GtkWidget* label;
650 	GtkWidget* toggle;
651 
652 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_fore");
653 	label = lookup_widget(GTK_WIDGET(button),"label_fore");
654 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_fore");
655 
656 	set_color_and_label( entry, label);
657 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
658 }
659 
660 
661 void
on_button_back_clicked(GtkButton * button,gpointer user_data)662 on_button_back_clicked                 (GtkButton       *button,
663                                         gpointer         user_data)
664 {
665 	GtkWidget* entry;
666 	GtkWidget* label;
667 	GtkWidget* toggle;
668 
669 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_back");
670 	label = lookup_widget(GTK_WIDGET(button),"label_back");
671 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_back");
672 
673 	set_color_and_label( entry, label);
674 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
675 }
676 
677 void
on_button_attach_clicked(GtkButton * button,gpointer user_data)678 on_button_attach_clicked(GtkButton *button, gpointer user_data)
679 {
680 	GtkWidget* entry;
681 	GtkWidget* label;
682 	GtkWidget* toggle;
683 
684 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_attach");
685 	label = lookup_widget(GTK_WIDGET(button),"label_attach");
686 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_attach");
687 
688 	set_color_and_label( entry, label);
689 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
690 }
691 
692 void
on_button_border_top_clicked(GtkButton * button,gpointer user_data)693 on_button_border_top_clicked(GtkButton *button, gpointer user_data)
694 {
695 	GtkWidget* entry;
696 	GtkWidget* label;
697 	GtkWidget* toggle;
698 
699 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_border_top");
700 	label = lookup_widget(GTK_WIDGET(button),"label_border_top");
701 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_border_top");
702 
703 	set_color_and_label( entry, label);
704 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
705 }
706 
707 void
on_button_border_right_clicked(GtkButton * button,gpointer user_data)708 on_button_border_right_clicked(GtkButton *button, gpointer user_data)
709 {
710 	GtkWidget* entry;
711 	GtkWidget* label;
712 	GtkWidget* toggle;
713 
714 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_border_right");
715 	label = lookup_widget(GTK_WIDGET(button),"label_border_right");
716 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_border_right");
717 
718 	set_color_and_label( entry, label);
719 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
720 }
721 
722 void
on_button_border_bottom_clicked(GtkButton * button,gpointer user_data)723 on_button_border_bottom_clicked(GtkButton *button, gpointer user_data)
724 {
725 	GtkWidget* entry;
726 	GtkWidget* label;
727 	GtkWidget* toggle;
728 
729 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_border_bottom");
730 	label = lookup_widget(GTK_WIDGET(button),"label_border_bottom");
731 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_border_bottom");
732 
733 	set_color_and_label( entry, label);
734 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
735 }
736 
737 void
on_button_border_left_clicked(GtkButton * button,gpointer user_data)738 on_button_border_left_clicked(GtkButton *button, gpointer user_data)
739 {
740 	GtkWidget* entry;
741 	GtkWidget* label;
742 	GtkWidget* toggle;
743 
744 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_border_left");
745 	label = lookup_widget(GTK_WIDGET(button),"label_border_left");
746 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_border_left");
747 
748 	set_color_and_label( entry, label);
749 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
750 }
751 
752 void
on_button_outline_clicked(GtkButton * button,gpointer user_data)753 on_button_outline_clicked (GtkButton *button, gpointer user_data)
754 {
755 	GtkWidget* entry;
756 	GtkWidget* label;
757 	GtkWidget* toggle;
758 
759 	entry = lookup_widget(GTK_WIDGET(button),"combo_entry_outline");
760 	label = lookup_widget(GTK_WIDGET(button),"label_outline");
761 	toggle =  lookup_widget(GTK_WIDGET(button),"checkbutton_outline");
762 
763 	set_color_and_label( entry, label);
764 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),TRUE);
765 }
766 
767 void
on_cancelbutton_clicked(GtkButton * button,gpointer user_data)768 on_cancelbutton_clicked                (GtkButton       *button,
769                                         gpointer         user_data)
770 {
771 	gtk_widget_destroy(GTK_WIDGET(user_data));
772 }
773 
774 
775 void
on_applybutton_clicked(GtkButton * button,gpointer user_data)776 on_applybutton_clicked                 (GtkButton       *button,
777                                         gpointer         user_data)
778 {
779 	write_results_to_document(GTK_WIDGET(button), CSSED_WINDOW(user_data));
780 }
781 
782 
783 void
on_okbutton_clicked(GtkButton * button,gpointer user_data)784 on_okbutton_clicked                    (GtkButton       *button,
785                                         gpointer         user_data)
786 {
787 	GtkWidget* dialog;
788 
789 	dialog = lookup_widget(GTK_WIDGET(button),"color_wizard_dialog");
790 	write_results_to_document(GTK_WIDGET(button), CSSED_WINDOW(user_data));
791 	gtk_widget_destroy(dialog);
792 }
793 
794 void
set_color_and_label(GtkWidget * entry,GtkWidget * label)795 set_color_and_label( GtkWidget* entry, GtkWidget* label)
796 {
797 	GtkWidget* colorselection;
798 	GtkWidget *colorsel;
799 	GdkColor color;
800 	gint resp;
801 	gchar* markup;
802 	gchar* colorstr;
803 
804 	colorselection = gtk_color_selection_dialog_new  (_("Select a color") );
805 	colorsel = GTK_COLOR_SELECTION_DIALOG(colorselection)->colorsel;
806 	gtk_color_selection_set_has_palette( GTK_COLOR_SELECTION(colorsel), TRUE );
807 
808 	resp = gtk_dialog_run( GTK_DIALOG(colorselection) );
809 
810 	if( resp == GTK_RESPONSE_OK ){
811 		gtk_color_selection_get_current_color(
812 				GTK_COLOR_SELECTION(colorsel),
813 				&color);
814 		colorstr = gdk_color_to_rgb_triplet_string( &color );
815 		gtk_entry_set_text(GTK_ENTRY(entry),colorstr);
816 		markup = g_strdup_printf("<span background='%s'>   </span>",colorstr);
817 		gtk_label_set_text(GTK_LABEL(label),markup);
818 		gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
819 		g_free( colorstr );
820 		g_free( markup );
821 	}
822 	gtk_widget_destroy( colorselection );
823 }
824 
825 void
write_results_to_document(GtkWidget * parent,CssedWindow * window)826 write_results_to_document(GtkWidget* parent, CssedWindow* window)
827 {
828 	GtkWidget* checkbutton_fore;
829 	GtkWidget* checkbutton_back;
830 	GtkWidget* checkbutton_attach;
831 	GtkWidget* checkbutton_border_top;
832 	GtkWidget* checkbutton_border_right;
833 	GtkWidget* checkbutton_border_bottom;
834 	GtkWidget* checkbutton_border_left;
835 	GtkWidget* checkbutton_outline;
836 	GtkWidget* combo_entry_fore;
837 	GtkWidget* combo_entry_back;
838 	GtkWidget* combo_entry_attach;
839 	GtkWidget* combo_entry_border_top;
840 	GtkWidget* combo_entry_border_right;
841 	GtkWidget* combo_entry_border_bottom;
842 	GtkWidget* combo_entry_border_left;
843 	GtkWidget* combo_entry_outline;
844 	gboolean bfore;
845 	gboolean bback;
846 	gboolean battach;
847 	gboolean bborder_top;
848 	gboolean bborder_right;
849 	gboolean bborder_bottom;
850 	gboolean bborder_left;
851 	gboolean boutline;
852 	gchar* color;
853 	CssedDoc* doc;
854 
855 	doc = document_get_current(window);
856 
857 	checkbutton_fore = lookup_widget(parent, "checkbutton_fore");
858 	checkbutton_back = lookup_widget(parent, "checkbutton_back");
859 	checkbutton_attach = lookup_widget(parent, "checkbutton_attach");
860 	checkbutton_border_top = lookup_widget(parent, "checkbutton_border_top");
861 	checkbutton_border_right = lookup_widget(parent, "checkbutton_border_right");
862 	checkbutton_border_bottom = lookup_widget(parent, "checkbutton_border_bottom");
863 	checkbutton_border_left = lookup_widget(parent, "checkbutton_border_left");
864 	checkbutton_outline = lookup_widget(parent, "checkbutton_outline");
865 
866 	bfore = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_fore));
867 	bback = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_back));
868 	battach = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_attach));
869 	bborder_top = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_border_top));
870 	bborder_right = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_border_right));
871 	bborder_bottom = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_border_bottom));
872 	bborder_left = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_border_left));
873 	boutline = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_outline));
874 
875 	if(!bfore && !bback && !battach && !bborder_top &&
876 	   !bborder_right && !bborder_bottom && !bborder_left && !boutline )
877 	{
878 		cssed_error_message("No value to add", "Nothing was selected.");
879 		return;
880 	}
881 
882 	if(bfore){
883 		combo_entry_fore = lookup_widget(parent,  "combo_entry_fore");
884 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_fore), 0, -1);
885 		document_add_text(doc, "\tcolor: ");
886 		document_add_text(doc, color);
887 		document_add_text_line(doc, ";");
888 		g_free(color);
889 		color = NULL;
890 	}
891 
892 	if(bback){
893 		combo_entry_back = lookup_widget(parent, "combo_entry_back");
894 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_back), 0, -1);
895 		document_add_text(doc,"\tbackground-color: ");
896 		document_add_text(doc,color);
897 		document_add_text_line(doc,";");
898 		g_free(color);
899 		color = NULL;
900 	}
901 
902 	if(battach){
903 		combo_entry_attach = lookup_widget(parent, "combo_entry_attach");
904 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_attach), 0, -1);
905 		document_add_text(doc,"\tbackground-attachment: ");
906 		document_add_text(doc,color);
907 		document_add_text_line(doc,";");
908 		g_free(color);
909 		color = NULL;
910 	}
911 
912 	if(bborder_top){
913 		combo_entry_border_top = lookup_widget(parent, "combo_entry_border_top");
914 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_border_top), 0, -1);
915 		document_add_text(doc,"\tborder-top-color: ");
916 		document_add_text(doc,color);
917 		document_add_text_line(doc,";");
918 		g_free(color);
919 		color = NULL;
920 	}
921 
922 	if(bborder_right){
923 		combo_entry_border_right = lookup_widget(parent, "combo_entry_border_right");
924 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_border_right), 0, -1);
925 		document_add_text(doc,"\tborder-right-color: ");
926 		document_add_text(doc,color);
927 		document_add_text_line(doc,";");
928 		g_free(color);
929 		color = NULL;
930 	}
931 
932 	if(bborder_bottom){
933 		combo_entry_border_bottom = lookup_widget(parent, "combo_entry_border_bottom");
934 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_border_bottom), 0, -1);
935 		document_add_text(doc,"\tborder-bottom-color: ");
936 		document_add_text(doc,color);
937 		document_add_text_line(doc,";");
938 		g_free(color);
939 		color = NULL;
940 	}
941 
942 	if(bborder_left){
943 		combo_entry_border_left = lookup_widget(parent, "combo_entry_border_left");
944 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_border_left), 0, -1);
945 		document_add_text(doc,"\tborder-left-color: ");
946 		document_add_text(doc,color);
947 		document_add_text_line(doc,";");
948 		g_free(color);
949 		color = NULL;
950 	}
951 
952 	if(boutline){
953 		combo_entry_outline = lookup_widget(parent, "combo_entry_outline");
954 		color = gtk_editable_get_chars(GTK_EDITABLE(combo_entry_outline), 0, -1);
955 		document_add_text(doc,"\toutline-color: ");
956 		document_add_text(doc,color);
957 		document_add_text_line(doc,";");
958 		g_free(color);
959 		color = NULL;
960 	}
961 }
962