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 <gtk/gtk.h>
23 #include <string.h>
24 
25 #include "cssdialogs-strings.h"
26 #include "cssedwindow.h"
27 #include "document.h"
28 #include "support.h"
29 #include "utils.h"
30 #include "cssdialogs-functions.h"
31 
32 void
on_angle_property_dialog_ok_button_clicked(GtkButton * button,gpointer user_data)33 on_angle_property_dialog_ok_button_clicked (GtkButton * button, gpointer user_data)
34 {
35 	CssedCssDialogsData *data;
36 	CssedWindow *window;
37 	CssedDoc* tmpdoc;
38 	GtkWidget *angle_property_dialog;
39 	gboolean add_previous;
40 	//gchar *previous_string;
41 	gchar *output_string;
42 
43 	data = (CssedCssDialogsData *) user_data;
44 	window = CSSED_WINDOW (data->main_window);
45 	tmpdoc = document_get_current( window );
46 	add_previous = data->add_property_string;
47 
48 	angle_property_dialog =
49 		lookup_widget (GTK_WIDGET (button), "angle_property_dialog");
50 	output_string =	cssdialog_angle_property_get_string ( window, (gpointer) button );
51 	if (output_string != NULL)
52 	{
53 		//document_new_undo_action(tmpdoc);
54 		if (add_previous)
55 		{
56 			document_add_text (tmpdoc,
57 					   (gchar *) data->previous_string);
58 			document_add_text (tmpdoc, ": ");
59 		}
60 		document_add_text (tmpdoc, output_string);
61 		if (add_previous)
62 		{
63 			document_add_text (tmpdoc, ";\n");
64 			if( document_last_line_is_indented(tmpdoc) )
65 				document_indent_as_last_line(tmpdoc);
66 			else
67 				document_add_text (tmpdoc, "\t");
68 		}
69 		//document_new_undo_action(tmpdoc);
70 		g_free (output_string);
71 	}
72 
73 	g_free (data->previous_string);
74 	g_free (user_data);
75 	gtk_widget_destroy (angle_property_dialog);
76 }
77 
on_background_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)78 void on_background_property_dialog_okbutton_clicked
79 	(GtkButton * button, gpointer user_data)
80 {
81 	CssedCssDialogsData *data;
82 	CssedWindow *window;
83 	CssedDoc* tmpdoc;
84 	gboolean add_previous;
85 	GtkWidget *background_property_dialog;
86 	gchar *output_string;
87 
88 	data = (CssedCssDialogsData *) user_data;
89 	window = CSSED_WINDOW (data->main_window);
90 	tmpdoc = document_get_current( window );
91 	add_previous = data->add_property_string;
92 
93 	background_property_dialog =
94 		lookup_widget (GTK_WIDGET (button), "background_property_dialog");
95 
96 	output_string =
97 		cssdialog_background_property_get_string ( window, (gpointer) button );
98 	if (output_string != NULL)
99 	{
100 		//document_new_undo_action(tmpdoc);
101 		if (add_previous)
102 		{
103 			document_add_text (tmpdoc, (gchar *) data->previous_string);
104 			document_add_text (tmpdoc, ": ");
105 		}
106 		document_add_text (tmpdoc, output_string);
107 		if (add_previous)
108 		{
109 			document_add_text (tmpdoc, ";\n");
110 			if( document_last_line_is_indented(tmpdoc) )
111 				document_indent_as_last_line(tmpdoc);
112 			else
113 				document_add_text (tmpdoc, "\t");
114 		}
115 		//document_new_undo_action(tmpdoc);
116 		g_free (output_string);
117 	}
118 
119 	g_free (data->previous_string);
120 	g_free (user_data);
121 	gtk_widget_destroy (background_property_dialog);
122 }
123 
124 void
on_border_properties_okbutton_clicked(GtkButton * button,gpointer user_data)125 on_border_properties_okbutton_clicked (GtkButton * button, gpointer user_data)
126 {
127 	CssedCssDialogsData *data;
128 	CssedWindow *window;
129 	CssedDoc* tmpdoc;
130 	gboolean add_previous;
131 	GtkWidget *border_properties_dialog;
132 	gchar *output_string;
133 
134 	data = (CssedCssDialogsData *) user_data;
135 	window = CSSED_WINDOW (data->main_window);
136 	tmpdoc = document_get_current( window );
137 	add_previous = data->add_property_string;
138 
139 	border_properties_dialog =
140 		lookup_widget (GTK_WIDGET (button),
141 			       "border_properties_dialog");
142 
143 
144 	output_string =
145 		cssdialog_border_properties_get_string  ( window, (gpointer) button );
146 	if (output_string != NULL)
147 	{
148 		//document_new_undo_action(tmpdoc);
149 		if (add_previous)
150 		{
151 			document_add_text (tmpdoc,
152 					   (gchar *) data->previous_string);
153 			document_add_text (tmpdoc, ": ");
154 		}
155 
156 		document_add_text (tmpdoc, output_string);
157 
158 		if (add_previous)
159 		{
160 			document_add_text (tmpdoc, ";\n");
161 			if( document_last_line_is_indented(tmpdoc) )
162 				document_indent_as_last_line(tmpdoc);
163 			else
164 				document_add_text (tmpdoc, "\t");
165 		}
166 		//document_new_undo_action(tmpdoc);
167 		g_free (output_string);
168 	}
169 
170 	g_free (data->previous_string);
171 	g_free (user_data);
172 	gtk_widget_destroy (border_properties_dialog);
173 }
174 
on_border_width_properties_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)175 void on_border_width_properties_dialog_okbutton_clicked
176 	(GtkButton * button, gpointer user_data)
177 {
178 	CssedCssDialogsData *data;
179 	CssedWindow *window;
180 	CssedDoc* tmpdoc;
181 	gboolean add_previous;
182 	GtkWidget *border_width_properties_dialog;
183 	gchar *output_string;
184 
185 	data = (CssedCssDialogsData *) user_data;
186 	window = CSSED_WINDOW (data->main_window);
187 	tmpdoc = document_get_current( window );
188 	add_previous = data->add_property_string;
189 
190 	border_width_properties_dialog =
191 		lookup_widget (GTK_WIDGET (button),
192 			       "border_width_properties_dialog");
193 
194 	output_string =
195 		cssdialog_border_width_properties_get_string  ( window, (gpointer) button );
196 	if (output_string != NULL)
197 	{
198 		//document_new_undo_action(tmpdoc);
199 		if (add_previous)
200 		{
201 			document_add_text (tmpdoc,
202 					   (gchar *) data->previous_string);
203 			document_add_text (tmpdoc, ": ");
204 		}
205 
206 		document_add_text (tmpdoc, output_string);
207 
208 		if (add_previous)
209 		{
210 			document_add_text (tmpdoc, ";\n");
211 			if( document_last_line_is_indented(tmpdoc) )
212 				document_indent_as_last_line(tmpdoc);
213 			else
214 				document_add_text (tmpdoc, "\t");
215 		}
216 		//document_new_undo_action(tmpdoc);
217 		g_free (output_string);
218 	}
219 	g_free (data->previous_string);
220 	g_free (user_data);
221 	gtk_widget_destroy (border_width_properties_dialog);
222 }
223 
on_border_width_single_okbutton_clicked(GtkButton * button,gpointer user_data)224 void on_border_width_single_okbutton_clicked
225 	(GtkButton * button, gpointer user_data)
226 {
227 	CssedCssDialogsData *data;
228 	CssedWindow *window;
229 	CssedDoc* tmpdoc;
230 	gboolean add_previous;
231 	GtkWidget *border_width_single_properties_dialog;
232 	gchar *output_string;
233 
234 	data = (CssedCssDialogsData *) user_data;
235 	window = CSSED_WINDOW (data->main_window);
236 	tmpdoc = document_get_current( window );
237 	add_previous = data->add_property_string;
238 
239 	border_width_single_properties_dialog =
240 		lookup_widget (GTK_WIDGET (button),
241 			       "border_width_single_properties_dialog");
242 
243 	output_string =
244 		cssdialog_border_width_properties_get_string  ( window, (gpointer) button );
245 	if (output_string != NULL)
246 	{
247 		//document_new_undo_action(tmpdoc);
248 		if (add_previous)
249 		{
250 			document_add_text (tmpdoc,
251 					   (gchar *) data->previous_string);
252 			document_add_text (tmpdoc, ": ");
253 		}
254 
255 		document_add_text (tmpdoc, output_string);
256 
257 		if (add_previous)
258 		{
259 			document_add_text (tmpdoc, ";\n");
260 			if( document_last_line_is_indented(tmpdoc) )
261 				document_indent_as_last_line(tmpdoc);
262 			else
263 				document_add_text (tmpdoc, "\t");
264 		}
265 		//document_new_undo_action(tmpdoc);
266 		g_free (output_string);
267 	}
268 
269 	g_free (data->previous_string);
270 	g_free (user_data);
271 	gtk_widget_destroy (border_width_single_properties_dialog);
272 }
273 
274 /* This add counters, and needs three callbacks
275 	 as various counters can be added to the list.
276 * ************************************************************************** */
on_button_counter_increment_reset_add_clicked(GtkButton * button,gpointer user_data)277 void on_button_counter_increment_reset_add_clicked
278 	(GtkButton * button, gpointer user_data)
279 {
280 	GtkListStore *store;
281 	GtkWidget *spinbutton;
282 	GtkWidget *entry;
283 	GtkTreeIter iter;
284 	gchar *strident;
285 	gint increment;
286 
287 	spinbutton =
288 		lookup_widget (GTK_WIDGET (button),
289 			       "spinbutton_counter_increment_reset_step");
290 	entry = lookup_widget (GTK_WIDGET (button),
291 			       "entry_counter_increment_reset_identifyer");
292 
293 	strident = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
294 	increment =
295 		gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON
296 						  (spinbutton));
297 
298 	store = (GtkListStore *) user_data;
299 	gtk_list_store_append (store, &iter);
300 	gtk_list_store_set (store, &iter, 0, strident, 1, increment, -1);
301 
302 	g_free (strident);
303 }
304 
305 
on_button_counter_increment_reset_del_clicked(GtkButton * button,gpointer user_data)306 void on_button_counter_increment_reset_del_clicked
307 	(GtkButton * button, gpointer user_data)
308 {
309 	GtkListStore *store;
310 	GtkWidget *treeview;
311 	GtkTreeSelection *selection;
312 	gboolean isselected;
313 	GtkTreeIter iter;
314 
315 	store = (GtkListStore *) user_data;
316 	treeview = lookup_widget (GTK_WIDGET (button), "treeview");
317 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
318 	isselected = gtk_tree_selection_get_selected (selection, NULL, &iter);
319 
320 	if (isselected)
321 	{
322 		gtk_list_store_remove (store, &iter);
323 	}
324 }
325 
on_dialog_counter_increment_reset_okbutton_clicked(GtkButton * button,gpointer user_data)326 void on_dialog_counter_increment_reset_okbutton_clicked
327 	(GtkButton * button, gpointer user_data)
328 {
329 	CssedCssDialogsData *data;
330 	CssedWindow *window;
331 	CssedDoc* tmpdoc;
332 	gboolean add_previous;
333 	GtkWidget *counter_increment_reset_dialog;
334 	gchar *output_string;
335 
336 	data = (CssedCssDialogsData *) user_data;
337 	window = CSSED_WINDOW (data->main_window);
338 	tmpdoc = document_get_current( window );
339 	add_previous = data->add_property_string;
340 
341 
342 	counter_increment_reset_dialog =
343 		lookup_widget (GTK_WIDGET (button),
344 			       "counter_increment_reset_dialog");
345 	output_string =
346 		cssdialog_counter_increment_reset_get_string  ( window, (gpointer) button );
347 	if (output_string != NULL)
348 	{
349 		//document_new_undo_action(tmpdoc);
350 		if (add_previous)
351 		{
352 			document_add_text (tmpdoc,
353 					   (gchar *) data->previous_string);
354 			document_add_text (tmpdoc, ": ");
355 		}
356 
357 		document_add_text (tmpdoc, output_string);
358 
359 		if (add_previous)
360 		{
361 			document_add_text (tmpdoc, ";\n");
362 			if( document_last_line_is_indented(tmpdoc) )
363 				document_indent_as_last_line(tmpdoc);
364 			else
365 				document_add_text (tmpdoc, "\t");
366 		}
367 		//document_new_undo_action(tmpdoc);
368 		g_free (output_string);
369 	}
370 	g_free (data->previous_string);
371 	g_free (user_data);
372 	gtk_widget_destroy (counter_increment_reset_dialog);
373 }
374 
on_string_properties_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)375 void on_string_properties_dialog_okbutton_clicked
376 	(GtkButton * button, gpointer user_data)
377 {
378 	CssedCssDialogsData *data;
379 	CssedWindow *window;
380 	CssedDoc* tmpdoc;
381 	gboolean add_previous;
382 	GtkWidget *string_properties_dialog;
383 	gchar *output_string;
384 
385 
386 	data = (CssedCssDialogsData *) user_data;
387 	window = CSSED_WINDOW (data->main_window);
388 	tmpdoc = document_get_current( window );
389 	add_previous = data->add_property_string;
390 
391 	string_properties_dialog =
392 		lookup_widget (GTK_WIDGET (button),
393 			       "string_properties_dialog");
394 
395 	output_string =
396 		cssdialog_string_properties_get_string  ( window, (gpointer) button );
397 	if (output_string != NULL)
398 	{
399 		//document_new_undo_action(tmpdoc);
400 		if (add_previous)
401 		{
402 			document_add_text (tmpdoc,
403 					   (gchar *) data->previous_string);
404 			document_add_text (tmpdoc, ": ");
405 		}
406 		document_add_text (tmpdoc, output_string);
407 		if (add_previous)
408 		{
409 			document_add_text (tmpdoc, ";\n");
410 			if( document_last_line_is_indented(tmpdoc) )
411 				document_indent_as_last_line(tmpdoc);
412 			else
413 				document_add_text (tmpdoc, "\t");
414 		}
415 		//document_new_undo_action(tmpdoc);
416 		g_free (output_string);
417 		g_free (data->previous_string);
418 		g_free (user_data);
419 		gtk_widget_destroy (string_properties_dialog);
420 	}
421 	else
422 	{
423 		document_write_error_to_program_output (tmpdoc,
424 							_
425 							("string dialog: refusing to add empty values."),
426 							ERROR_COLOR_STRING);
427 	}
428 }
429 
430 void
on_uri_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)431 on_uri_value_dialog_okbutton_clicked (GtkButton * button, gpointer user_data)
432 {
433 	CssedCssDialogsData *data;
434 	CssedWindow *window;
435 	CssedDoc* tmpdoc;
436 	gboolean add_previous;
437 	GtkWidget *uri_value_dialog;
438 	gchar *output_string;
439 
440 	data = (CssedCssDialogsData *) user_data;
441 	window = CSSED_WINDOW (data->main_window);
442 	tmpdoc = document_get_current( window );
443 	add_previous = data->add_property_string;
444 
445 	uri_value_dialog =
446 		lookup_widget (GTK_WIDGET (button), "uri_value_dialog");
447 
448 	output_string = cssdialog_uri_value_get_string ( window, (gpointer) button );
449 	if (output_string != NULL)
450 	{
451 		//document_new_undo_action(tmpdoc);
452 		if (add_previous)
453 		{
454 			document_add_text (tmpdoc,
455 					   (gchar *) data->previous_string);
456 			document_add_text (tmpdoc, ": ");
457 		}
458 
459 		document_add_text (tmpdoc, output_string);
460 
461 		if (add_previous)
462 		{
463 			document_add_text (tmpdoc, ";\n");
464 			if( document_last_line_is_indented(tmpdoc) )
465 				document_indent_as_last_line(tmpdoc);
466 			else
467 				document_add_text (tmpdoc, "\t");
468 		}
469 		//document_new_undo_action(tmpdoc);
470 		g_free (output_string);
471 		g_free (data->previous_string);
472 		g_free (user_data);
473 		gtk_widget_destroy (uri_value_dialog);
474 	}
475 	else
476 	{
477 		document_write_error_to_program_output (tmpdoc,
478 							_("uri dialog: rejecting to add empty values"),
479 							ERROR_COLOR_STRING);
480 	}
481 }
482 
483 void
on_attr_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)484 on_attr_value_dialog_okbutton_clicked (GtkButton * button, gpointer user_data)
485 {
486 	CssedCssDialogsData *data;
487 	CssedWindow *window;
488 	CssedDoc *tmpdoc;
489 	gboolean add_previous;
490 	gchar *output_string;
491 	GtkWidget *attr_value_dialog;
492 
493 
494 	data = (CssedCssDialogsData *) user_data;
495 	window = CSSED_WINDOW (data->main_window);
496 	tmpdoc = document_get_current (window);
497 	add_previous = data->add_property_string;
498 
499 	attr_value_dialog =
500 		lookup_widget (GTK_WIDGET (button), "attr_value_dialog");
501 
502 	output_string = cssdialog_attr_value_get_string ( window, (gpointer) button );
503 	if (output_string != NULL)
504 	{
505 		//document_new_undo_action(tmpdoc);
506 		if (add_previous)
507 		{
508 			document_add_text (tmpdoc,
509 					   (gchar *) data->previous_string);
510 			document_add_text (tmpdoc, ": ");
511 		}
512 		document_add_text (tmpdoc, output_string);
513 		if (add_previous)
514 		{
515 			document_add_text (tmpdoc, ";\n");
516 			if( document_last_line_is_indented(tmpdoc) )
517 				document_indent_as_last_line(tmpdoc);
518 			else
519 				document_add_text (tmpdoc, "\t");
520 		}
521 		//document_new_undo_action(tmpdoc);
522 		g_free (output_string);
523 		g_free (data->previous_string);
524 		g_free (user_data);
525 		gtk_widget_destroy (attr_value_dialog);
526 	}
527 	else
528 	{
529 		document_write_error_to_program_output (tmpdoc,
530 							_
531 							("attribute dialog: rejecting to add empty values"),
532 							ERROR_COLOR_STRING);
533 	}
534 }
535 
on_counter_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)536 void on_counter_property_dialog_okbutton_clicked
537 	(GtkButton * button, gpointer user_data)
538 {
539 	CssedCssDialogsData *data;
540 	CssedWindow *window;
541 	CssedDoc *tmpdoc;
542 	gboolean add_previous;
543 	GtkWidget *counter_property_dialog;
544 	gchar *output_string;
545 
546 	data = (CssedCssDialogsData *) user_data;
547 	window = CSSED_WINDOW (data->main_window);
548 	tmpdoc = document_get_current (window);
549 	add_previous = data->add_property_string;
550 
551 	counter_property_dialog =
552 		lookup_widget (GTK_WIDGET (button),
553 			       "counter_property_dialog");
554 
555 	output_string =
556 		cssdialog_counter_property_get_string ( window, (gpointer) button );
557 
558 	if (output_string != NULL)
559 	{
560 		//document_new_undo_action(tmpdoc);
561 		if (add_previous)
562 		{
563 			document_add_text (tmpdoc,
564 					   (gchar *) data->previous_string);
565 			document_add_text (tmpdoc, ": ");
566 		}
567 		document_add_text (tmpdoc, output_string);
568 		if (add_previous)
569 		{
570 			document_add_text (tmpdoc, ";\n");
571 			if( document_last_line_is_indented(tmpdoc) )
572 				document_indent_as_last_line(tmpdoc);
573 			else
574 				document_add_text (tmpdoc, "\t");
575 		}
576 		//document_new_undo_action(tmpdoc);
577 		g_free (data->previous_string);
578 		g_free (user_data);
579 		gtk_widget_destroy (counter_property_dialog);
580 	}
581 	else
582 	{
583 		document_write_error_to_program_output (tmpdoc,
584 							_
585 							("counter dialog: rejecting to add empty identifier. Value required."),
586 							ERROR_COLOR_STRING);
587 	}
588 }
589 
590 /* This needs three callbacks
591  * ************************************************************************* */
on_font_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)592 void on_font_property_dialog_okbutton_clicked
593 	(GtkButton * button, gpointer user_data)
594 {
595 	CssedCssDialogsData *data;
596 	CssedWindow *window;
597 	CssedDoc *tmpdoc;
598 	gboolean add_previous;
599 	GtkWidget *font_property_dialog;
600 	gchar *output_string;
601 
602 
603 	data = (CssedCssDialogsData *) user_data;
604 	window = CSSED_WINDOW (data->main_window);
605 	tmpdoc = document_get_current (window);
606 	add_previous = data->add_property_string;
607 
608 	font_property_dialog =
609 		lookup_widget (GTK_WIDGET (button), "font_property_dialog");
610 
611 	output_string =
612 		cssdialog_font_property_get_string ( window, (gpointer) button );
613 	if (output_string != NULL)
614 	{
615 		if (add_previous)
616 		{
617 			document_add_text (tmpdoc,
618 					   (gchar *) data->previous_string);
619 			document_add_text (tmpdoc, ": ");
620 		}
621 		document_add_text (tmpdoc, output_string);
622 		if (add_previous)
623 		{
624 			document_add_text (tmpdoc, ";\n");
625 			if( document_last_line_is_indented(tmpdoc) )
626 				document_indent_as_last_line(tmpdoc);
627 			else
628 				document_add_text (tmpdoc, "\t");
629 		}
630 		g_free (output_string);
631 	}
632 	else
633 	{
634 		document_write_error_to_program_output (tmpdoc,
635 							_
636 							("font dialog: rejecting to add empty values."),
637 							ERROR_COLOR_STRING);
638 	}
639 
640 	g_free (data->previous_string);
641 	g_free (user_data);
642 	gtk_widget_destroy (font_property_dialog);
643 }
644 
645 void
on_button_font_set_add_clicked(GtkButton * button,gpointer user_data)646 on_button_font_set_add_clicked (GtkButton * button, gpointer user_data)
647 {
648 	GtkWidget *combo_entry_font_family;
649 	GtkWidget *combo_entry_generic_family;
650 	GtkListStore *store;
651 	GtkTreeIter iter;
652 	gchar *strgf;
653 	gchar *strff;
654 
655 	combo_entry_font_family =
656 		lookup_widget (GTK_WIDGET (button),
657 			       "combo_entry_font_family");
658 	combo_entry_generic_family = lookup_widget (GTK_WIDGET (button),
659 						    "combo_entry_generic_family");
660 
661 	strgf = gtk_editable_get_chars (GTK_EDITABLE
662 					(combo_entry_font_family), 0, -1);
663 	strff = gtk_editable_get_chars (GTK_EDITABLE
664 					(combo_entry_generic_family), 0, -1);
665 
666 	store = (GtkListStore *) user_data;
667 	gtk_list_store_append (store, &iter);
668 	gtk_list_store_set (store, &iter, 0, strgf, 1, strff, -1);
669 
670 	g_free (strgf);
671 	g_free (strff);
672 }
673 
674 
675 void
on_button_font_set_del_clicked(GtkButton * button,gpointer user_data)676 on_button_font_set_del_clicked (GtkButton * button, gpointer user_data)
677 {
678 	GtkListStore *store;
679 	GtkWidget *treeview;
680 	GtkTreeSelection *selection;
681 	gboolean isselected;
682 	GtkTreeIter iter;
683 
684 	store = (GtkListStore *) user_data;
685 	treeview = lookup_widget (GTK_WIDGET (button), "treeview");
686 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
687 	isselected = gtk_tree_selection_get_selected (selection, NULL, &iter);
688 
689 	if (isselected)
690 	{
691 		gtk_list_store_remove (store, &iter);
692 	}
693 }
694 
695 /* This needs three callbacks
696  * ************************************************************************* */
on_font_family_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)697 void on_font_family_dialog_okbutton_clicked
698 	(GtkButton * button, gpointer user_data)
699 {
700 	CssedCssDialogsData *data;
701 	CssedWindow *window;
702 	CssedDoc *tmpdoc;
703 	gboolean add_previous;
704 	GtkWidget *font_family_dialog;
705 	gchar *output_string;
706 
707 	data = (CssedCssDialogsData *) user_data;
708 	window = CSSED_WINDOW (data->main_window);
709 	tmpdoc = document_get_current (window);
710 	add_previous = data->add_property_string;
711 
712 	font_family_dialog =
713 		lookup_widget (GTK_WIDGET (button), "font_family_dialog");
714 	output_string =
715 		cssdialog_font_family_get_string ( window, (gpointer) button );
716 
717 	if (output_string != NULL)
718 	{
719 		//document_new_undo_action(tmpdoc);
720 		if (add_previous)
721 		{
722 			document_add_text (tmpdoc,
723 					   (gchar *) data->previous_string);
724 			document_add_text (tmpdoc, ": ");
725 		}
726 		document_add_text (tmpdoc, output_string);
727 		if (add_previous)
728 		{
729 			document_add_text (tmpdoc, ";\n");
730 			if( document_last_line_is_indented(tmpdoc) )
731 				document_indent_as_last_line(tmpdoc);
732 			else
733 				document_add_text (tmpdoc, "\t");
734 		}
735 		//document_new_undo_action(tmpdoc);
736 		g_free (output_string);
737 		g_free (data->previous_string);
738 		g_free (user_data);
739 		gtk_widget_destroy (font_family_dialog);
740 	}
741 	else
742 	{
743 		document_write_error_to_program_output (tmpdoc,
744 							_
745 							("font family dialog: rejecting to add empty values."),
746 							ERROR_COLOR_STRING);
747 	}
748 }
749 
on_button_font_family_dialog_add_clicked(GtkButton * button,gpointer user_data)750 void on_button_font_family_dialog_add_clicked
751 	(GtkButton * button, gpointer user_data)
752 {
753 	GtkWidget *combo_entry_font_family;
754 	GtkWidget *combo_entry_generic_family;
755 	GtkListStore *store;
756 	GtkTreeIter iter;
757 	gchar *strgf;
758 	gchar *strff;
759 
760 	combo_entry_font_family =
761 		lookup_widget (GTK_WIDGET (button),
762 			       "combo_entry_font_family");
763 	combo_entry_generic_family = lookup_widget (GTK_WIDGET (button),
764 						    "combo_entry_generic_family");
765 
766 	strgf = gtk_editable_get_chars (GTK_EDITABLE
767 					(combo_entry_font_family), 0, -1);
768 	strff = gtk_editable_get_chars (GTK_EDITABLE
769 					(combo_entry_generic_family), 0, -1);
770 
771 	store = (GtkListStore *) user_data;
772 	gtk_list_store_append (store, &iter);
773 	gtk_list_store_set (store, &iter, 0, strgf, 1, strff, -1);
774 
775 	g_free (strgf);
776 	g_free (strff);
777 }
778 
779 
on_button_font_family_dialog_del_clicked(GtkButton * button,gpointer user_data)780 void on_button_font_family_dialog_del_clicked
781 	(GtkButton * button, gpointer user_data)
782 {
783 	GtkListStore *store;
784 	GtkWidget *treeview;
785 	GtkTreeSelection *selection;
786 	gboolean isselected;
787 	GtkTreeIter iter;
788 
789 	store = (GtkListStore *) user_data;
790 	treeview = lookup_widget (GTK_WIDGET (button), "treeview");
791 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
792 	isselected = gtk_tree_selection_get_selected (selection, NULL, &iter);
793 
794 	if (isselected)
795 	{
796 		gtk_list_store_remove (store, &iter);
797 	}
798 }
on_button_font_fam_dialog_set_toggled(GtkToggleButton * togglebutton,gpointer user_data)799 void on_button_font_fam_dialog_set_toggled
800 	(GtkToggleButton * togglebutton, gpointer user_data)
801 {
802 	GtkWidget *radiobutton;
803 	gboolean isactive;
804 
805 	radiobutton = GTK_WIDGET (user_data);
806 	isactive = gtk_toggle_button_get_active (togglebutton);
807 	if (isactive)
808 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radiobutton),
809 					      TRUE);
810 }
811 
on_font_size_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)812 void on_font_size_dialog_okbutton_clicked
813 	(GtkButton * button, gpointer user_data)
814 {
815 	CssedCssDialogsData *data;
816 	CssedWindow *window;
817 	CssedDoc *tmpdoc;
818 	gboolean add_previous;
819 	GtkWidget *font_size_dialog;
820 	gchar *output_string;
821 
822 	data = (CssedCssDialogsData *) user_data;
823 	window = CSSED_WINDOW (data->main_window);
824 	tmpdoc = document_get_current (window);
825 	add_previous = data->add_property_string;
826 
827 	font_size_dialog =
828 		lookup_widget (GTK_WIDGET (button), "font_size_dialog");
829 
830 	output_string = cssdialog_font_size_get_string ( window, (gpointer) button );
831 	//document_new_undo_action(tmpdoc);
832 	if (add_previous)
833 	{
834 		document_add_text (tmpdoc, (gchar *) data->previous_string);
835 		document_add_text (tmpdoc, ": ");
836 	}
837 
838 	document_add_text (tmpdoc, output_string);
839 
840 	if (add_previous)
841 	{
842 		document_add_text (tmpdoc, " ;\n\t");
843 	}
844 	//document_new_undo_action(tmpdoc);
845 	g_free (output_string);
846 	g_free (data->previous_string);
847 	g_free (user_data);
848 	gtk_widget_destroy (font_size_dialog);
849 }
850 
on_frecuency_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)851 void on_frecuency_property_dialog_okbutton_clicked
852 	(GtkButton * button, gpointer user_data)
853 {
854 	CssedCssDialogsData *data;
855 	CssedWindow *window;
856 	CssedDoc *tmpdoc;
857 	gboolean add_previous;
858 	GtkWidget *frecuency_property_dialog;
859 	gchar *output_string;
860 
861 	data = (CssedCssDialogsData *) user_data;
862 	window = CSSED_WINDOW (data->main_window);
863 	tmpdoc = document_get_current (window);
864 	add_previous = data->add_property_string;
865 
866 	frecuency_property_dialog =
867 		lookup_widget (GTK_WIDGET (button),
868 			       "frecuency_property_dialog");
869 
870 	output_string =
871 		cssdialog_frecuenzy_property_get_string ( window, (gpointer) button );
872 
873 	//document_new_undo_action(tmpdoc);
874 	if (add_previous)
875 	{
876 		document_add_text (tmpdoc, (gchar *) data->previous_string);
877 		document_add_text (tmpdoc, ": ");
878 	}
879 
880 	document_add_text (tmpdoc, output_string);
881 
882 	if (add_previous)
883 	{
884 		document_add_text (tmpdoc, ";\n\t");
885 	}
886 
887 	//document_new_undo_action(tmpdoc);
888 	g_free (output_string);
889 	g_free (data->previous_string);
890 	g_free (user_data);
891 	gtk_widget_destroy (frecuency_property_dialog);
892 }
893 
on_identifier_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)894 void on_identifier_value_dialog_okbutton_clicked
895 	(GtkButton * button, gpointer user_data)
896 {
897 	CssedCssDialogsData *data;
898 	CssedWindow *window;
899 	CssedDoc *tmpdoc;
900 	gboolean add_previous;
901 	GtkWidget *identifier_value_dialog;
902 	gchar *output_string;
903 
904 	data = (CssedCssDialogsData *) user_data;
905 	window = CSSED_WINDOW (data->main_window);
906 	tmpdoc = document_get_current (window);
907 	add_previous = data->add_property_string;
908 
909 	identifier_value_dialog =
910 		lookup_widget (GTK_WIDGET (button),
911 			       "identifier_value_dialog");
912 
913 	output_string =
914 		cssdialog_identifier_value_get_string ( window, (gpointer) button );
915 	if (output_string != NULL)
916 	{
917 		//document_new_undo_action(tmpdoc);
918 		if (add_previous)
919 		{
920 			document_add_text (tmpdoc,
921 					   (gchar *) data->previous_string);
922 			document_add_text (tmpdoc, ": ");
923 		}
924 		document_add_text (tmpdoc, output_string);
925 		if (add_previous)
926 		{
927 			document_add_text (tmpdoc, ";\n");
928 			if( document_last_line_is_indented(tmpdoc) )
929 				document_indent_as_last_line(tmpdoc);
930 			else
931 				document_add_text (tmpdoc, "\t");
932 		}
933 		//document_new_undo_action(tmpdoc);
934 		g_free (output_string);
935 		g_free (data->previous_string);
936 		g_free (user_data);
937 		gtk_widget_destroy (identifier_value_dialog);
938 	}
939 	else
940 	{
941 		document_write_error_to_program_output (tmpdoc,
942 							_
943 							("identifier dialog: rejecting to add empty values. Identifier required."),
944 							ERROR_COLOR_STRING);
945 	}
946 }
947 
948 /* AQUI AHORA */
on_integer_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)949 void on_integer_value_dialog_okbutton_clicked
950 	(GtkButton * button, gpointer user_data)
951 {
952 	CssedCssDialogsData *data;
953 	CssedWindow *window;
954 	CssedDoc *tmpdoc;
955 	gboolean add_previous;
956 	GtkWidget *integer_value_dialog;
957 	gchar *output_string;
958 	gchar *integer;
959 
960 	data = (CssedCssDialogsData *) user_data;
961 	window = CSSED_WINDOW (data->main_window);
962 	tmpdoc = document_get_current (window);
963 	add_previous = data->add_property_string;
964 
965 	integer_value_dialog =
966 		lookup_widget (GTK_WIDGET (button), "integer_value_dialog");
967 
968 	output_string =
969 		cssdialog_integer_value_get_string ( window, (gpointer) button );
970 	if (output_string != NULL)
971 	{
972 		//document_new_undo_action(tmpdoc);
973 		if (add_previous)
974 		{
975 			integer = g_strdup_printf ("%s: %s;\n\t",
976 						   (gchar *) data->
977 						   previous_string,
978 						   output_string);
979 			document_add_text (tmpdoc, integer);
980 			g_free (integer);
981 		}
982 		else
983 		{
984 			document_add_text (tmpdoc, output_string);
985 		}
986 		//document_new_undo_action(tmpdoc);
987 		g_free (output_string);
988 	}
989 
990 	g_free (data->previous_string);
991 	g_free (user_data);
992 	gtk_widget_destroy (integer_value_dialog);
993 }
994 
on_length_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)995 void on_length_value_dialog_okbutton_clicked
996 	(GtkButton * button, gpointer user_data)
997 {
998 	CssedCssDialogsData *data;
999 	CssedWindow *window;
1000 	CssedDoc *tmpdoc;
1001 	gboolean add_previous;
1002 	GtkWidget *length_value_dialog;
1003 	gchar *output_string;
1004 	gchar *strlength;
1005 
1006 	data = (CssedCssDialogsData *) user_data;
1007 	window = CSSED_WINDOW (data->main_window);
1008 	tmpdoc = document_get_current (window);
1009 	add_previous = data->add_property_string;
1010 
1011 	length_value_dialog =
1012 		lookup_widget (GTK_WIDGET (button), "length_value_dialog");
1013 
1014 	output_string =
1015 		cssdialog_length_value_get_string ( window, (gpointer) button );
1016 
1017 	if (output_string != NULL)
1018 	{
1019 		//document_new_undo_action(tmpdoc);
1020 		if (add_previous)
1021 		{
1022 			strlength =
1023 				g_strdup_printf ("%s: %s;\n\t",
1024 						 (gchar *) data->
1025 						 previous_string,
1026 						 output_string);
1027 
1028 			document_add_text (tmpdoc, strlength);
1029 			g_free (output_string);
1030 			g_free (strlength);
1031 		}
1032 		else
1033 		{
1034 			document_add_text (tmpdoc, output_string);
1035 			g_free (output_string);
1036 		}
1037 		//document_new_undo_action(tmpdoc);
1038 	}
1039 
1040 	g_free (data->previous_string);
1041 	g_free (user_data);
1042 	gtk_widget_destroy (length_value_dialog);
1043 }
1044 
on_list_style_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1045 void on_list_style_dialog_okbutton_clicked
1046 	(GtkButton * button, gpointer user_data)
1047 {
1048 	CssedCssDialogsData *data;
1049 	CssedWindow *window;
1050 	CssedDoc *tmpdoc;
1051 	gboolean add_previous;
1052 	GtkWidget *list_style_dialog;
1053 	gchar *output_string;
1054 
1055 	data = (CssedCssDialogsData *) user_data;
1056 	window = CSSED_WINDOW (data->main_window);
1057 	tmpdoc = document_get_current (window);
1058 	add_previous = data->add_property_string;
1059 
1060 	list_style_dialog =
1061 		lookup_widget (GTK_WIDGET (button), "list_style_dialog");
1062 
1063 	output_string = cssdialog_list_style_get_string ( window, (gpointer) button );
1064 	if (output_string != NULL)
1065 	{
1066 		//document_new_undo_action(tmpdoc);
1067 		if (add_previous)
1068 		{
1069 			document_add_text (tmpdoc,
1070 					   (gchar *) data->previous_string);
1071 			document_add_text (tmpdoc, ": ");
1072 		}
1073 
1074 		document_add_text (tmpdoc, output_string);
1075 
1076 		if (add_previous)
1077 		{
1078 			document_add_text (tmpdoc, ";\n");
1079 			if( document_last_line_is_indented(tmpdoc) )
1080 				document_indent_as_last_line(tmpdoc);
1081 			else
1082 				document_add_text (tmpdoc, "\t");
1083 		}
1084 		//document_new_undo_action(tmpdoc);
1085 
1086 		g_free (output_string);
1087 		g_free (data->previous_string);
1088 		g_free (user_data);
1089 		gtk_widget_destroy (list_style_dialog);
1090 	}
1091 	else
1092 	{
1093 		document_write_error_to_program_output (tmpdoc,
1094 							_
1095 							("list style dialog: rejecting to add empty values"),
1096 							ERROR_COLOR_STRING);
1097 	}
1098 }
1099 
on_margin_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1100 void on_margin_property_dialog_okbutton_clicked
1101 	(GtkButton * button, gpointer user_data)
1102 {
1103 	CssedCssDialogsData *data;
1104 	CssedWindow *window;
1105 	CssedDoc *tmpdoc;
1106 	gboolean add_previous;
1107 	GtkWidget *margin_property_dialog;
1108 	gchar *output_string;
1109 
1110 	data = (CssedCssDialogsData *) user_data;
1111 	window = CSSED_WINDOW (data->main_window);
1112 	tmpdoc = document_get_current (window);
1113 	add_previous = data->add_property_string;
1114 
1115 	margin_property_dialog =
1116 		lookup_widget (GTK_WIDGET (button), "margin_property_dialog");
1117 
1118 	output_string =
1119 		cssdialog_margin_property_get_string ( window, (gpointer) button );
1120 
1121 	if (output_string == NULL)
1122 	{
1123 		document_write_error_to_program_output (tmpdoc,
1124 							_
1125 							("margin property dialog: rejecting to add empty values."),
1126 							ERROR_COLOR_STRING);
1127 	}
1128 	else
1129 	{
1130 
1131 		//document_new_undo_action(tmpdoc);
1132 		if (add_previous)
1133 		{
1134 			document_add_text (tmpdoc,
1135 					   (gchar *) data->previous_string);
1136 			document_add_text (tmpdoc, ": ");
1137 		}
1138 
1139 		document_add_text (tmpdoc, output_string);
1140 
1141 		if (add_previous)
1142 		{
1143 			document_add_text (tmpdoc, ";\n");
1144 			if( document_last_line_is_indented(tmpdoc) )
1145 				document_indent_as_last_line(tmpdoc);
1146 			else
1147 				document_add_text (tmpdoc, "\t");
1148 		}
1149 		//document_new_undo_action(tmpdoc);
1150 
1151 		g_free (output_string);
1152 		g_free (data->previous_string);
1153 		g_free (user_data);
1154 		gtk_widget_destroy (margin_property_dialog);
1155 	}
1156 }
1157 
on_margin_width_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1158 void on_margin_width_dialog_okbutton_clicked
1159 	(GtkButton * button, gpointer user_data)
1160 {
1161 	CssedCssDialogsData *data;
1162 	CssedWindow *window;
1163 	CssedDoc *tmpdoc;
1164 	gboolean add_previous;
1165 	GtkWidget *margin_width_value_dialog;
1166 	gchar *output_string;
1167 
1168 	data = (CssedCssDialogsData *) user_data;
1169 	window = CSSED_WINDOW (data->main_window);
1170 	tmpdoc = document_get_current (window);
1171 	add_previous = data->add_property_string;
1172 
1173 	margin_width_value_dialog =
1174 		lookup_widget (GTK_WIDGET (button),
1175 			       "margin_width_value_dialog");
1176 
1177 	output_string =
1178 		cssdialog_margin_width_get_string ( window, (gpointer) button );
1179 	//document_new_undo_action(tmpdoc);
1180 	if (add_previous)
1181 	{
1182 		document_add_text (tmpdoc, (gchar *) data->previous_string);
1183 		document_add_text (tmpdoc, ": ");
1184 	}
1185 
1186 	document_add_text (tmpdoc, output_string);
1187 
1188 	if (add_previous)
1189 	{
1190 		document_add_text (tmpdoc, ";\n\t");
1191 	}
1192 	//document_new_undo_action(tmpdoc);
1193 
1194 	g_free (output_string);
1195 	g_free (data->previous_string);
1196 	g_free (user_data);
1197 	gtk_widget_destroy (margin_width_value_dialog);
1198 }
1199 
on_number_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1200 void on_number_value_dialog_okbutton_clicked
1201 	(GtkButton * button, gpointer user_data)
1202 {
1203 	CssedCssDialogsData *data;
1204 	CssedWindow *window;
1205 	CssedDoc *tmpdoc;
1206 	gboolean add_previous;
1207 	gchar *output_string;
1208 	GtkWidget *number_value_dialog;
1209 
1210 	data = (CssedCssDialogsData *) user_data;
1211 	window = CSSED_WINDOW (data->main_window);
1212 	tmpdoc = document_get_current (window);
1213 	add_previous = data->add_property_string;
1214 
1215 	number_value_dialog =
1216 		lookup_widget (GTK_WIDGET (button), "number_value_dialog");
1217 
1218 	output_string =
1219 		cssdialog_number_value_get_string ( window, (gpointer) button );
1220 
1221 	//document_new_undo_action(tmpdoc);
1222 	if (add_previous)
1223 	{
1224 		document_add_text (tmpdoc, (gchar *) data->previous_string);
1225 		document_add_text (tmpdoc, ": ");
1226 	}
1227 
1228 	document_add_text (tmpdoc, output_string);
1229 
1230 	if (add_previous)
1231 	{
1232 		document_add_text (tmpdoc, ";\n\t");
1233 	}
1234 	//document_new_undo_action(tmpdoc);
1235 
1236 	g_free (output_string);
1237 	g_free (data->previous_string);
1238 	g_free (user_data);
1239 	gtk_widget_destroy (number_value_dialog);
1240 }
1241 
on_padding_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1242 void on_padding_property_dialog_okbutton_clicked
1243 	(GtkButton * button, gpointer user_data)
1244 {
1245 	CssedCssDialogsData *data;
1246 	CssedWindow *window;
1247 	CssedDoc *tmpdoc;
1248 	gboolean add_previous;
1249 	GtkWidget *padding_property_dialog;
1250 	gchar *output_string;
1251 
1252 	data = (CssedCssDialogsData *) user_data;
1253 	window = CSSED_WINDOW (data->main_window);
1254 	tmpdoc = document_get_current (window);
1255 	add_previous = data->add_property_string;
1256 
1257 	padding_property_dialog =
1258 		lookup_widget (GTK_WIDGET (button),
1259 			       "padding_property_dialog");
1260 
1261 	output_string =
1262 		cssdialog_padding_property_get_string ( window, (gpointer) button );
1263 	if (output_string == NULL)
1264 	{
1265 		document_write_error_to_program_output (tmpdoc,
1266 							_
1267 							("padding property dialog: no value in dialog, defaulting to zero."),
1268 							WARNING_COLOR_STRING);
1269 		//document_new_undo_action(tmpdoc);
1270 		if (add_previous)
1271 		{
1272 			document_add_text (tmpdoc,
1273 					   (gchar *) data->previous_string);
1274 			document_add_text (tmpdoc, ": ");
1275 		}
1276 		document_add_text (tmpdoc, "0");
1277 		if (add_previous)
1278 		{
1279 			document_add_text (tmpdoc, ";\n");
1280 			if( document_last_line_is_indented(tmpdoc) )
1281 				document_indent_as_last_line(tmpdoc);
1282 			else
1283 				document_add_text (tmpdoc, "\t");
1284 		}
1285 		//document_new_undo_action(tmpdoc);
1286 	}
1287 	else
1288 	{
1289 		//document_new_undo_action(tmpdoc);
1290 		if (add_previous)
1291 		{
1292 			document_add_text (tmpdoc,
1293 					   (gchar *) data->previous_string);
1294 			document_add_text (tmpdoc, ": ");
1295 		}
1296 		document_add_text (tmpdoc, output_string);
1297 		if (add_previous)
1298 		{
1299 			document_add_text (tmpdoc, ";\n");
1300 			if( document_last_line_is_indented(tmpdoc) )
1301 				document_indent_as_last_line(tmpdoc);
1302 			else
1303 				document_add_text (tmpdoc, "\t");
1304 		}
1305 		//document_new_undo_action(tmpdoc);
1306 		g_free (output_string);
1307 	}
1308 
1309 	g_free (data->previous_string);
1310 	g_free (user_data);
1311 	gtk_widget_destroy (padding_property_dialog);
1312 }
1313 
on_outline_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1314 void on_outline_property_dialog_okbutton_clicked
1315 	(GtkButton * button, gpointer user_data)
1316 {
1317 	CssedCssDialogsData *data;
1318 	CssedWindow *window;
1319 	CssedDoc *tmpdoc;
1320 	gboolean add_previous;
1321 	GtkWidget *outline_property_dialog;
1322 	gchar *output_string;
1323 
1324 	data = (CssedCssDialogsData *) user_data;
1325 	window = CSSED_WINDOW (data->main_window);
1326 	tmpdoc = document_get_current (window);
1327 	add_previous = data->add_property_string;
1328 
1329 	outline_property_dialog =
1330 		lookup_widget (GTK_WIDGET (button),
1331 			       "outline_property_dialog");
1332 
1333 	output_string =
1334 		cssdialog_outline_property_get_string( window, (gpointer) button );
1335 
1336 	if (output_string == NULL)
1337 	{
1338 		document_write_error_to_program_output (tmpdoc,
1339 							_
1340 							("outline dialog: rejecting to add empty values."),
1341 							ERROR_COLOR_STRING);
1342 	}
1343 	else
1344 	{
1345 		//document_new_undo_action(tmpdoc);
1346 		if (add_previous)
1347 		{
1348 			document_add_text (tmpdoc,
1349 					   (gchar *) data->previous_string);
1350 			document_add_text (tmpdoc, ": ");
1351 		}
1352 		document_add_text (tmpdoc, output_string);
1353 		if (add_previous)
1354 		{
1355 			document_add_text (tmpdoc, ";\n");
1356 			if( document_last_line_is_indented(tmpdoc) )
1357 				document_indent_as_last_line(tmpdoc);
1358 			else
1359 				document_add_text (tmpdoc, "\t");
1360 		}
1361 		//document_new_undo_action(tmpdoc);
1362 
1363 		g_free (output_string);
1364 		g_free (data->previous_string);
1365 		g_free (user_data);
1366 		gtk_widget_destroy (outline_property_dialog);
1367 	}
1368 }
1369 
on_pause_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1370 void on_pause_property_dialog_okbutton_clicked
1371 	(GtkButton * button, gpointer user_data)
1372 {
1373 	CssedCssDialogsData *data;
1374 	CssedWindow *window;
1375 	CssedDoc *tmpdoc;
1376 	gboolean add_previous;
1377 	GtkWidget *pause_property_dialog;
1378 	gchar *output_string;
1379 
1380 	data = (CssedCssDialogsData *) user_data;
1381 	window = CSSED_WINDOW (data->main_window);
1382 	tmpdoc = document_get_current (window);
1383 	add_previous = data->add_property_string;
1384 
1385 	pause_property_dialog =
1386 		lookup_widget (GTK_WIDGET (button), "pause_property_dialog");
1387 
1388 	output_string =
1389 		cssdialog_pause_property_get_string ( window, (gpointer) button );
1390 
1391 	if (output_string == NULL)
1392 	{
1393 		document_write_error_to_program_output (tmpdoc,
1394 							_
1395 							("pause dialog: rejecting to add empty values"),
1396 							ERROR_COLOR_STRING);
1397 	}
1398 	else
1399 	{
1400 		//document_new_undo_action(tmpdoc);
1401 		if (add_previous)
1402 		{
1403 			document_add_text (tmpdoc,
1404 					   (gchar *) data->previous_string);
1405 			document_add_text (tmpdoc, ": ");
1406 		}
1407 		document_add_text (tmpdoc, output_string);
1408 		if (add_previous)
1409 		{
1410 			document_add_text (tmpdoc, ";\n");
1411 			if( document_last_line_is_indented(tmpdoc) )
1412 				document_indent_as_last_line(tmpdoc);
1413 			else
1414 				document_add_text (tmpdoc, "\t");
1415 		}
1416 		//document_new_undo_action(tmpdoc);
1417 
1418 		g_free (output_string);
1419 		g_free (data->previous_string);
1420 		g_free (user_data);
1421 		gtk_widget_destroy (pause_property_dialog);
1422 	}
1423 }
1424 
on_percentage_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1425 void on_percentage_value_dialog_okbutton_clicked
1426 	(GtkButton * button, gpointer user_data)
1427 {
1428 	CssedCssDialogsData *data;
1429 	CssedWindow *window;
1430 	CssedDoc *tmpdoc;
1431 	gboolean add_previous;
1432 	GtkWidget *percentage_value_dialog;
1433 	gchar *output_string;
1434 
1435 	data = (CssedCssDialogsData *) user_data;
1436 	window = CSSED_WINDOW (data->main_window);
1437 	tmpdoc = document_get_current (window);
1438 	add_previous = data->add_property_string;
1439 
1440 	percentage_value_dialog =
1441 		lookup_widget (GTK_WIDGET (button),
1442 			       "percentage_value_dialog");
1443 
1444 	output_string =
1445 		cssdialog_percentage_value_get_string ( window, (gpointer) button );
1446 
1447 	//document_new_undo_action(tmpdoc);
1448 	if (add_previous)
1449 	{
1450 		document_add_text (tmpdoc, (gchar *) data->previous_string);
1451 		document_add_text (tmpdoc, ": ");
1452 	}
1453 
1454 	document_add_text (tmpdoc, output_string);
1455 
1456 	document_add_text (tmpdoc, "%");
1457 	if (add_previous)
1458 	{
1459 		document_add_text (tmpdoc, ";\n\t");
1460 	}
1461 	//document_new_undo_action(tmpdoc);
1462 	g_free (output_string);
1463 	g_free (data->previous_string);
1464 	g_free (user_data);
1465 	gtk_widget_destroy (percentage_value_dialog);
1466 }
1467 
on_percentage_length_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1468 void on_percentage_length_value_dialog_okbutton_clicked
1469 	(GtkButton * button, gpointer user_data)
1470 {
1471 	CssedCssDialogsData *data;
1472 	CssedWindow *window;
1473 	CssedDoc *tmpdoc;
1474 	gboolean add_previous;
1475 	GtkWidget *percentage_length_value_dialog;
1476 	gchar *output_string;
1477 
1478 	data = (CssedCssDialogsData *) user_data;
1479 	window = CSSED_WINDOW (data->main_window);
1480 	tmpdoc = document_get_current (window);
1481 	add_previous = data->add_property_string;
1482 
1483 	percentage_length_value_dialog =
1484 		lookup_widget (GTK_WIDGET (button),
1485 			       "percentage_length_value_dialog");
1486 	output_string =
1487 		cssdialog_percentage_length_value_get_string ( window, (gpointer) button );
1488 
1489 	//document_new_undo_action(tmpdoc);
1490 	if (add_previous)
1491 	{
1492 		document_add_text (tmpdoc, (gchar *) data->previous_string);
1493 		document_add_text (tmpdoc, ": ");
1494 	}
1495 
1496 	document_add_text (tmpdoc, output_string);
1497 
1498 	if (add_previous)
1499 	{
1500 		document_add_text (tmpdoc, ";\n\t");
1501 	}
1502 	//document_new_undo_action(tmpdoc);
1503 	g_free (output_string);
1504 	g_free (data->previous_string);
1505 	g_free (user_data);
1506 	gtk_widget_destroy (percentage_length_value_dialog);
1507 }
1508 
on_play_during_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1509 void on_play_during_property_dialog_okbutton_clicked
1510 	(GtkButton * button, gpointer user_data)
1511 {
1512 	CssedCssDialogsData *data;
1513 	CssedWindow *window;
1514 	CssedDoc *tmpdoc;
1515 	gboolean add_previous;
1516 	GtkWidget *play_during_property_dialog;
1517 	gchar *output_string;
1518 
1519 	data = (CssedCssDialogsData *) user_data;
1520 	window = CSSED_WINDOW (data->main_window);
1521 	tmpdoc = document_get_current (window);
1522 	add_previous = data->add_property_string;
1523 
1524 	play_during_property_dialog =
1525 		lookup_widget (GTK_WIDGET (button),
1526 			       "play_during_property_dialog");
1527 	output_string =
1528 		cssdialog_play_during_property_get_string ( window, (gpointer) button );
1529 	if (output_string != NULL)
1530 	{
1531 
1532 		//document_new_undo_action(tmpdoc);
1533 		if (add_previous)
1534 		{
1535 			document_add_text (tmpdoc,
1536 					   (gchar *) data->previous_string);
1537 			document_add_text (tmpdoc, ":");
1538 		}
1539 
1540 		document_add_text (tmpdoc, output_string);
1541 
1542 		if (add_previous)
1543 		{
1544 			document_add_text (tmpdoc, ";\n");
1545 			if( document_last_line_is_indented(tmpdoc) )
1546 				document_indent_as_last_line(tmpdoc);
1547 			else
1548 				document_add_text (tmpdoc, "\t");
1549 		}
1550 		//document_new_undo_action(tmpdoc);
1551 
1552 		g_free (output_string);
1553 		g_free (data->previous_string);
1554 		g_free (user_data);
1555 		gtk_widget_destroy (play_during_property_dialog);
1556 	}
1557 	else
1558 	{
1559 		document_write_error_to_program_output (tmpdoc,
1560 							_
1561 							("play during dialog: value \"uri\" required, rejecting to add invalid values"),
1562 							ERROR_COLOR_STRING);
1563 	}
1564 }
1565 
1566 /* this needs three callbacks */
on_button_quotes_property_dialog_add_clicked(GtkButton * button,gpointer user_data)1567 void on_button_quotes_property_dialog_add_clicked
1568 	(GtkButton * button, gpointer user_data)
1569 {
1570 	GtkWidget *entry_open;
1571 	GtkWidget *entry_close;
1572 
1573 	GtkListStore *store;
1574 	GtkTreeIter iter;
1575 	gchar *stroq;
1576 	gchar *strcq;
1577 
1578 	store = (GtkListStore *) user_data;
1579 
1580 	entry_open = lookup_widget (GTK_WIDGET (button), "entry_open");
1581 	entry_close = lookup_widget (GTK_WIDGET (button), "entry_close");
1582 
1583 	stroq = gtk_editable_get_chars (GTK_EDITABLE (entry_open), 0, -1);
1584 	strcq = gtk_editable_get_chars (GTK_EDITABLE (entry_close), 0, -1);
1585 
1586 	if ((strlen (stroq) > 0) && (strlen (strcq) > 0))
1587 	{
1588 		gtk_list_store_append (store, &iter);
1589 		gtk_list_store_set (store, &iter, 0, stroq, 1, strcq, -1);
1590 	}
1591 	else
1592 	{			// this will default to the same open and close quotes if only
1593 		// one value is added. nothing will be added to the store if both
1594 		// values are empty.
1595 		if (strlen (stroq) > 0)
1596 		{
1597 			gtk_list_store_append (store, &iter);
1598 			gtk_list_store_set (store, &iter, 0, stroq, 1, stroq,
1599 					    -1);
1600 		}
1601 		if (strlen (strcq) > 0)
1602 		{
1603 			gtk_list_store_append (store, &iter);
1604 			gtk_list_store_set (store, &iter, 0, strcq, 1, strcq,
1605 					    -1);
1606 		}
1607 	}
1608 
1609 	g_free (stroq);
1610 	g_free (strcq);
1611 }
1612 
1613 
on_button_quotes_property_dialog_del_clicked(GtkButton * button,gpointer user_data)1614 void on_button_quotes_property_dialog_del_clicked
1615 	(GtkButton * button, gpointer user_data)
1616 {
1617 	GtkListStore *store;
1618 	GtkWidget *treeview;
1619 	GtkTreeSelection *selection;
1620 	gboolean isselected;
1621 	GtkTreeIter iter;
1622 
1623 	store = (GtkListStore *) user_data;
1624 	treeview = lookup_widget (GTK_WIDGET (button), "treeview");
1625 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
1626 	isselected = gtk_tree_selection_get_selected (selection, NULL, &iter);
1627 
1628 	if (isselected)
1629 	{
1630 		gtk_list_store_remove (store, &iter);
1631 	}
1632 }
1633 
on_quotes_property_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1634 void on_quotes_property_dialog_okbutton_clicked
1635 	(GtkButton * button, gpointer user_data)
1636 {
1637 	CssedCssDialogsData *data;
1638 	CssedWindow *window;
1639 	CssedDoc *tmpdoc;
1640 	GtkWidget *quotes_property_dialog;
1641 	gboolean add_previous;
1642 	gchar *output_string;
1643 
1644 	data = (CssedCssDialogsData *) user_data;
1645 	window = CSSED_WINDOW (data->main_window);
1646 	tmpdoc = document_get_current (window);
1647 	add_previous = data->add_property_string;
1648 
1649 	quotes_property_dialog =
1650 		lookup_widget (GTK_WIDGET (button), "quotes_property_dialog");
1651 
1652 	output_string =
1653 		cssdialog_quotes_property_get_string ( window, (gpointer) button );
1654 	if (output_string != NULL)
1655 	{
1656 		//document_new_undo_action(tmpdoc);
1657 		if (add_previous)
1658 		{
1659 			document_add_text (tmpdoc,
1660 					   (gchar *) data->previous_string);
1661 			document_add_text (tmpdoc, ": ");
1662 		}
1663 		document_add_text (tmpdoc, output_string);
1664 		if (add_previous)
1665 		{
1666 			document_add_text (tmpdoc, ";\n");
1667 			if( document_last_line_is_indented(tmpdoc) )
1668 				document_indent_as_last_line(tmpdoc);
1669 			else
1670 				document_add_text (tmpdoc, "\t");
1671 		}
1672 		//document_new_undo_action(tmpdoc);
1673 		g_free (output_string);
1674 		g_free (data->previous_string);
1675 		g_free (user_data);
1676 		gtk_widget_destroy (quotes_property_dialog);
1677 	}
1678 	else
1679 	{			// not valid nothing in the list
1680 		document_write_error_to_program_output (tmpdoc,
1681 							_
1682 							("quotes dialog: nothing in the list, rejecting to add empty values."),
1683 							WARNING_COLOR_STRING);
1684 	}
1685 }
1686 
1687 /* end quotes */
1688 
1689 void
on_shape_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1690 on_shape_value_dialog_okbutton_clicked (GtkButton * button,
1691 					gpointer user_data)
1692 {
1693 	CssedCssDialogsData *data;
1694 	CssedWindow *window;
1695 	CssedDoc *tmpdoc;
1696 	gboolean add_previous;
1697 	GtkWidget *shape_value_dialog;
1698 	gchar *output_string;
1699 
1700 	data = (CssedCssDialogsData *) user_data;
1701 	window = CSSED_WINDOW (data->main_window);
1702 	tmpdoc = document_get_current (window);
1703 	add_previous = data->add_property_string;
1704 
1705 	shape_value_dialog =
1706 		lookup_widget (GTK_WIDGET (button), "shape_value_dialog");
1707 	output_string =
1708 		cssdialog_shape_value_get_string ( window, (gpointer) button );
1709 	//document_new_undo_action(tmpdoc);
1710 	if (add_previous)
1711 	{
1712 		document_add_text (tmpdoc, (gchar *) data->previous_string);
1713 		document_add_text (tmpdoc, ": ");
1714 	}
1715 
1716 	document_add_text (tmpdoc, output_string);
1717 
1718 	if (add_previous)
1719 	{
1720 		document_add_text (tmpdoc, ";\n\t");
1721 	}
1722 	//document_new_undo_action(tmpdoc);
1723 
1724 	g_free (output_string);
1725 	g_free (data->previous_string);
1726 	g_free (user_data);
1727 	gtk_widget_destroy (shape_value_dialog);
1728 }
1729 
1730 
on_size_length_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1731 void on_size_length_value_dialog_okbutton_clicked
1732 	(GtkButton * button, gpointer user_data)
1733 {
1734 	CssedCssDialogsData *data;
1735 	CssedWindow *window;
1736 	CssedDoc *tmpdoc;
1737 	gboolean add_previous;
1738 	GtkWidget *size_length_value_dialog;
1739 	gchar *output_string;
1740 
1741 	data = (CssedCssDialogsData *) user_data;
1742 	window = CSSED_WINDOW (data->main_window);
1743 	tmpdoc = document_get_current (window);
1744 	add_previous = data->add_property_string;
1745 
1746 	size_length_value_dialog =
1747 		lookup_widget (GTK_WIDGET (button),
1748 			       "size_length_value_dialog");
1749 	output_string =
1750 		cssdialog_size_length_value_get_string ( window, (gpointer) button );
1751 	//document_new_undo_action(tmpdoc);
1752 	if (add_previous)
1753 	{
1754 		document_add_text (tmpdoc, (gchar *) data->previous_string);
1755 		document_add_text (tmpdoc, ": ");
1756 	}
1757 
1758 	document_add_text (tmpdoc, output_string);
1759 
1760 	if (add_previous)
1761 	{
1762 		document_add_text (tmpdoc, ";\n\t");
1763 	}
1764 	//document_new_undo_action(tmpdoc);
1765 
1766 	g_free (output_string);
1767 	g_free (data->previous_string);
1768 	g_free (user_data);
1769 	gtk_widget_destroy (size_length_value_dialog);
1770 }
1771 
1772 
1773 /* needs three callbacks */
1774 /* **************  I'm working here right now  ****************************** */
on_button_text_shadow_value_dialog_add_clicked(GtkButton * button,gpointer user_data)1775 void on_button_text_shadow_value_dialog_add_clicked
1776 	(GtkButton * button, gpointer user_data)
1777 {
1778 	GtkListStore *store;
1779 	GtkTreeIter iter;
1780 	GtkWidget *spinbutton_right;
1781 	GtkWidget *combo_entry_right;
1782 	GtkWidget *spinbutton_below;
1783 	GtkWidget *combo_entry_below;
1784 	GtkWidget *checkbutton_use_color;
1785 	GtkWidget *checkbutton_blur;
1786 	GtkWidget *spinbutton_blur;
1787 	GtkWidget *combo_entry_blur;
1788 	GtkWidget *combo_entry_use_color;
1789 	GtkWidget *colorselection;
1790 	GtkWidget *checkbutton_use_shadow_list;
1791 	gchar *str_right_units;
1792 	gchar *str_right;
1793 	gdouble nright;
1794 	gchar *str_below_units;
1795 	gchar *str_below;
1796 	gdouble nbelow;
1797 	gchar *str_blur_units = NULL;
1798 	gchar *str_blur;
1799 	gdouble nblur;
1800 	gboolean b_blur;
1801 	gchar *strcolor = NULL;
1802 	gchar *strrgbcolor = NULL;
1803 	GdkColor gdkcolor;
1804 	gboolean b_color;
1805 
1806 	enum
1807 	{
1808 		COL_RIGHT,
1809 		COL_BELOW,
1810 		COL_BLUR,
1811 		COL_COLOR,
1812 		N_COLS
1813 	};
1814 	// if the're adding valus to the list is for using it so check the
1815 	// use shadow list on bahalve of the user.
1816 	checkbutton_use_shadow_list =
1817 		lookup_widget (GTK_WIDGET (button),
1818 			       "checkbutton_use_shadow_list");
1819 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
1820 				      (checkbutton_use_shadow_list), TRUE);
1821 
1822 	store = (GtkListStore *) user_data;
1823 
1824 	spinbutton_right =
1825 		lookup_widget (GTK_WIDGET (button), "spinbutton_right");
1826 	combo_entry_right =
1827 		lookup_widget (GTK_WIDGET (button), "combo_entry_right");
1828 	spinbutton_below =
1829 		lookup_widget (GTK_WIDGET (button), "spinbutton_below");
1830 	combo_entry_below =
1831 		lookup_widget (GTK_WIDGET (button), "combo_entry_below");
1832 	checkbutton_blur =
1833 		lookup_widget (GTK_WIDGET (button), "checkbutton_blur");
1834 	checkbutton_use_color =
1835 		lookup_widget (GTK_WIDGET (button), "checkbutton_use_color");
1836 
1837 	b_blur = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
1838 					       (checkbutton_blur));
1839 	b_color =
1840 		gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
1841 					      (checkbutton_use_color));
1842 
1843 	nright = gtk_spin_button_get_value (GTK_SPIN_BUTTON
1844 						     (spinbutton_right));
1845 	str_right_units =
1846 		gtk_editable_get_chars (GTK_EDITABLE (combo_entry_right), 0,
1847 					-1);
1848 	str_right = g_strdup_printf ("%0.2f%s", nright, str_right_units);
1849 
1850 	nbelow = gtk_spin_button_get_value (GTK_SPIN_BUTTON
1851 						     (spinbutton_below));
1852 	str_below_units =
1853 		gtk_editable_get_chars (GTK_EDITABLE (combo_entry_below), 0,
1854 					-1);
1855 	str_below = g_strdup_printf ("%0.2f%s", nbelow, str_below_units);
1856 
1857 	if (b_blur)
1858 	{
1859 		spinbutton_blur =
1860 			lookup_widget (GTK_WIDGET (button),
1861 				       "spinbutton_blur");
1862 		combo_entry_blur =
1863 			lookup_widget (GTK_WIDGET (button),
1864 				       "combo_entry_blur");
1865 		nblur = gtk_spin_button_get_value (GTK_SPIN_BUTTON
1866 							    (spinbutton_blur));
1867 		str_blur_units =
1868 			gtk_editable_get_chars (GTK_EDITABLE
1869 						(combo_entry_blur), 0, -1);
1870 		str_blur = g_strdup_printf ("%0.2f%s", nblur, str_blur_units);
1871 	}
1872 	else
1873 	{
1874 		str_blur = g_strdup ("");
1875 	}
1876 	if (b_color)
1877 	{
1878 		combo_entry_use_color =
1879 			lookup_widget (GTK_WIDGET (button),
1880 				       "combo_entry_use_color");
1881 		colorselection =
1882 			lookup_widget (GTK_WIDGET (button), "colorselection");
1883 		strcolor =
1884 			gtk_editable_get_chars (GTK_EDITABLE
1885 						(combo_entry_use_color), 0,
1886 						-1);
1887 		if (strcmp (strcolor, CSS_STR_USE_COLORSEL) == 0)
1888 		{
1889 			gtk_color_selection_get_current_color
1890 				(GTK_COLOR_SELECTION (colorselection),
1891 				 &gdkcolor);
1892 			strrgbcolor =
1893 				gdk_color_to_rgb_triplet_string (&gdkcolor);
1894 		}
1895 		else
1896 		{
1897 			strrgbcolor = g_strdup (strcolor);
1898 		}
1899 	}
1900 
1901 	gtk_list_store_append (store, &iter);
1902 	gtk_list_store_set (store, &iter, COL_RIGHT, str_right, COL_BELOW,
1903 			    str_below, COL_BLUR, str_blur, COL_COLOR,
1904 			    strrgbcolor, -1);
1905 
1906 	g_free (strcolor);
1907 	g_free (strrgbcolor);
1908 	g_free (str_blur_units);
1909 	g_free (str_blur);
1910 	g_free (str_right_units);
1911 	g_free (str_below_units);
1912 	g_free (str_below);
1913 	g_free (str_right);
1914 }
1915 
1916 
on_button_text_shadow_value_dialog_del_clicked(GtkButton * button,gpointer user_data)1917 void on_button_text_shadow_value_dialog_del_clicked
1918 	(GtkButton * button, gpointer user_data)
1919 {
1920 	GtkListStore *store;
1921 	GtkWidget *treeview;
1922 	GtkTreeSelection *selection;
1923 	gboolean isselected;
1924 	GtkTreeIter iter;
1925 
1926 	store = (GtkListStore *) user_data;
1927 	treeview = lookup_widget (GTK_WIDGET (button), "treeview");
1928 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
1929 	isselected = gtk_tree_selection_get_selected (selection, NULL, &iter);
1930 
1931 	if (isselected)
1932 	{
1933 		gtk_list_store_remove (store, &iter);
1934 	}
1935 }
1936 
1937 
on_text_shadow_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)1938 void on_text_shadow_value_dialog_okbutton_clicked
1939 	(GtkButton * button, gpointer user_data)
1940 {
1941 	CssedCssDialogsData *data;
1942 	CssedWindow *window;
1943 	CssedDoc *tmpdoc;
1944 	gboolean add_previous;
1945 	GtkWidget *text_shadow_value_dialog;
1946 	gchar *output_string;
1947 
1948 	data = (CssedCssDialogsData *) user_data;
1949 	window = CSSED_WINDOW (data->main_window);
1950 	tmpdoc = document_get_current (window);
1951 	add_previous = data->add_property_string;
1952 
1953 	text_shadow_value_dialog =
1954 		lookup_widget (GTK_WIDGET (button),
1955 			       "text_shadow_value_dialog");
1956 
1957 	output_string =
1958 		cssdialog_text_shadow_value_get_string ( window, (gpointer) button );
1959 	if (output_string != NULL)
1960 	{
1961 		//document_new_undo_action(tmpdoc);
1962 		if (add_previous)
1963 		{
1964 			document_add_text (tmpdoc,
1965 					   (gchar *) data->previous_string);
1966 			document_add_text (tmpdoc, ": ");
1967 		}
1968 		document_add_text (tmpdoc, output_string);
1969 		if (add_previous)
1970 		{
1971 			document_add_text (tmpdoc, ";\n");
1972 			if( document_last_line_is_indented(tmpdoc) )
1973 				document_indent_as_last_line(tmpdoc);
1974 			else
1975 				document_add_text (tmpdoc, "\t");
1976 		}
1977 		//document_new_undo_action(tmpdoc);
1978 		g_free (output_string);
1979 		g_free (data->previous_string);
1980 		g_free (user_data);
1981 		gtk_widget_destroy (text_shadow_value_dialog);
1982 	}
1983 	else
1984 	{			// nothing in the list
1985 		document_write_error_to_program_output (tmpdoc,
1986 							_
1987 							("text shadow dialog: shadow list selected but nothing in the list. Rejecting to add empty values."),
1988 							WARNING_COLOR_STRING);
1989 	}
1990 }
1991 
1992 // end text shadow
1993 /* needs three callbacks */
on_button_voice_family_value_dialog_add_clicked(GtkButton * button,gpointer user_data)1994 void on_button_voice_family_value_dialog_add_clicked
1995 	(GtkButton * button, gpointer user_data)
1996 {
1997 	GtkWidget *entry_specific_voice;
1998 	GtkWidget *combo_entry_generic;
1999 	GtkWidget *checkbutton_voice_set;
2000 	GtkListStore *store;
2001 	GtkTreeIter iter;
2002 	gchar *str_gen;
2003 	gchar *str_spec;
2004 
2005 	enum
2006 	{
2007 		COL_GENERIC,
2008 		COL_SPECIFIC,
2009 		N_COLS
2010 	};
2011 
2012 	store = (GtkListStore *) user_data;
2013 
2014 	entry_specific_voice =
2015 		lookup_widget (GTK_WIDGET (button), "entry_specific_voice");
2016 	combo_entry_generic = lookup_widget (GTK_WIDGET (button),
2017 					     "combo_entry_generic");
2018 
2019 	checkbutton_voice_set = lookup_widget (GTK_WIDGET (button),
2020 					       "checkbutton_voice_set");
2021 
2022 	str_spec = gtk_editable_get_chars (GTK_EDITABLE
2023 					   (entry_specific_voice), 0, -1);
2024 	str_gen = gtk_editable_get_chars (GTK_EDITABLE
2025 					  (combo_entry_generic), 0, -1);
2026 	// add only if there is at least one valid value
2027 	if ((strlen (str_spec) > 0) || (strlen (str_gen) > 0))
2028 	{
2029 		gtk_list_store_append (store, &iter);
2030 		gtk_list_store_set (store, &iter, COL_GENERIC, str_gen,
2031 				    COL_SPECIFIC, str_spec, -1);
2032 		// set the "use list" toggle active as they are adding values to the list
2033 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
2034 					      (checkbutton_voice_set), TRUE);
2035 	}
2036 	g_free (str_spec);
2037 	g_free (str_gen);
2038 }
2039 
on_button_voice_family_value_dialog_del_clicked(GtkButton * button,gpointer user_data)2040 void on_button_voice_family_value_dialog_del_clicked
2041 	(GtkButton * button, gpointer user_data)
2042 {
2043 	GtkListStore *store;
2044 	GtkWidget *treeview;
2045 	GtkTreeSelection *selection;
2046 	gboolean isselected;
2047 	GtkTreeIter iter;
2048 
2049 	store = (GtkListStore *) user_data;
2050 	treeview = lookup_widget (GTK_WIDGET (button), "treeview");
2051 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
2052 	isselected = gtk_tree_selection_get_selected (selection, NULL, &iter);
2053 
2054 	if (isselected)
2055 	{
2056 		gtk_list_store_remove (store, &iter);
2057 	}
2058 }
2059 
on_voice_family_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)2060 void on_voice_family_value_dialog_okbutton_clicked
2061 	(GtkButton * button, gpointer user_data)
2062 {
2063 	CssedCssDialogsData *data;
2064 	CssedWindow *window;
2065 	CssedDoc *tmpdoc;
2066 	gboolean add_previous;
2067 	GtkWidget *voice_family_value_dialog;
2068 	gchar *output_string;
2069 
2070 	data = (CssedCssDialogsData *) user_data;
2071 	window = CSSED_WINDOW (data->main_window);
2072 	tmpdoc = document_get_current (window);
2073 	add_previous = data->add_property_string;
2074 
2075 	voice_family_value_dialog =
2076 		lookup_widget (GTK_WIDGET (button),
2077 			       "voice_family_value_dialog");
2078 	output_string =
2079 		cssdialog_voice_family_value_get_string ( window, (gpointer) button );
2080 	if (output_string != NULL)
2081 	{
2082 		//document_new_undo_action(tmpdoc);
2083 		if (add_previous)
2084 		{
2085 			document_add_text (tmpdoc,
2086 					   (gchar *) data->previous_string);
2087 			document_add_text (tmpdoc, ": ");
2088 		}
2089 		document_add_text (tmpdoc, output_string);
2090 		if (add_previous)
2091 		{
2092 			document_add_text (tmpdoc, ";\n");
2093 			if( document_last_line_is_indented(tmpdoc) )
2094 				document_indent_as_last_line(tmpdoc);
2095 			else
2096 				document_add_text (tmpdoc, "\t");
2097 		}
2098 		g_free (output_string);
2099 		g_free (data->previous_string);
2100 		g_free (user_data);
2101 		gtk_widget_destroy (voice_family_value_dialog);
2102 	}
2103 	else
2104 	{			// nothing in the list
2105 		document_write_error_to_program_output (tmpdoc,
2106 							_
2107 							("voice family dialog: rejecting to add empty values"),
2108 							ERROR_COLOR_STRING);
2109 	}
2110 }
2111 
2112 // end voice family
on_border_width_style_color_value_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)2113 void on_border_width_style_color_value_dialog_okbutton_clicked
2114 	(GtkButton * button, gpointer user_data)
2115 {
2116 	CssedCssDialogsData *data;
2117 	CssedWindow *window;
2118 	CssedDoc *tmpdoc;
2119 	gboolean add_previous;
2120 	GtkWidget *border_width_style_color_value_dialog;
2121 	gchar *output_string;
2122 
2123 	data = (CssedCssDialogsData *) user_data;
2124 	window = CSSED_WINDOW (data->main_window);
2125 	tmpdoc = document_get_current (window);
2126 	add_previous = data->add_property_string;
2127 
2128 	border_width_style_color_value_dialog =
2129 		lookup_widget (GTK_WIDGET (button),
2130 			       "border_width_style_color_value_dialog");
2131 
2132 	output_string =
2133 		cssdialog_border_width_style_color_value_get_string( window, (gpointer) button );
2134 	if (output_string == NULL)
2135 	{
2136 		document_write_error_to_program_output (tmpdoc,
2137 							_
2138 							("width style and color dialog: nothing selected. rejecting to add empty values."),
2139 							ERROR_COLOR_STRING);
2140 	}
2141 	else
2142 	{
2143 		//document_new_undo_action(tmpdoc);
2144 		if (add_previous)
2145 		{
2146 			document_add_text (tmpdoc,
2147 					   (gchar *) data->previous_string);
2148 			document_add_text (tmpdoc, ": ");
2149 		}
2150 		document_add_text (tmpdoc, output_string);
2151 
2152 		if (add_previous)
2153 		{
2154 			document_add_text (tmpdoc, ";\n");
2155 			if( document_last_line_is_indented(tmpdoc) )
2156 				document_indent_as_last_line(tmpdoc);
2157 			else
2158 				document_add_text (tmpdoc, "\t");
2159 		}
2160 		//document_new_undo_action(tmpdoc);
2161 
2162 		g_free (output_string);
2163 		g_free (data->previous_string);
2164 		g_free (user_data);
2165 		gtk_widget_destroy (border_width_style_color_value_dialog);
2166 	}
2167 }
2168 
on_color_selector_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)2169 void on_color_selector_dialog_okbutton_clicked
2170 	(GtkButton * button, gpointer user_data)
2171 {
2172 	CssedCssDialogsData *data;
2173 	CssedWindow *window;
2174 	CssedDoc *tmpdoc;
2175 	gboolean add_previous;
2176 	GtkWidget *color_selector_dialog;
2177 	gchar *output_string;
2178 
2179 	data = (CssedCssDialogsData *) user_data;
2180 	window = CSSED_WINDOW (data->main_window);
2181 	tmpdoc = document_get_current (window);
2182 	add_previous = data->add_property_string;
2183 
2184 	color_selector_dialog =
2185 		lookup_widget (GTK_WIDGET (button), "color_selector_dialog");
2186 
2187 	output_string =
2188 		cssdialog_color_selector_get_string ( window, (gpointer) button );
2189 	//document_new_undo_action(tmpdoc);
2190 	if (add_previous)
2191 	{
2192 		document_add_text (tmpdoc, (gchar *) data->previous_string);
2193 		document_add_text (tmpdoc, ": ");
2194 	}
2195 
2196 	document_add_text (tmpdoc, output_string);
2197 
2198 	if (add_previous)
2199 	{
2200 		document_add_text (tmpdoc, ";\n\t");
2201 	}
2202 	//document_new_undo_action(tmpdoc);
2203 
2204 	g_free (output_string);
2205 	g_free (data->previous_string);
2206 	g_free (user_data);
2207 	gtk_widget_destroy (color_selector_dialog);
2208 }
2209 
on_border_style_dialog_okbutton_clicked(GtkButton * button,gpointer user_data)2210 void on_border_style_dialog_okbutton_clicked
2211 	(GtkButton * button, gpointer user_data)
2212 {
2213 	CssedCssDialogsData *data;
2214 	CssedWindow *window;
2215 	CssedDoc *tmpdoc;
2216 	gboolean add_previous;
2217 	GtkWidget *border_style_dialog;
2218 	gchar *output_string;
2219 
2220 	data = (CssedCssDialogsData *) user_data;
2221 	window = CSSED_WINDOW (data->main_window);
2222 	tmpdoc = document_get_current (window);
2223 	add_previous = data->add_property_string;
2224 
2225 	border_style_dialog =
2226 		lookup_widget (GTK_WIDGET (button), "border_style_dialog");
2227 	output_string =
2228 		cssdialog_border_style_get_string ( window, (gpointer) button );
2229 
2230 	if (add_previous)
2231 	{
2232 		document_add_text (tmpdoc, (gchar *) data->previous_string);
2233 		document_add_text (tmpdoc, ": ");
2234 	}
2235 	document_add_text (tmpdoc, output_string);
2236 	if (add_previous)
2237 	{
2238 		document_add_text (tmpdoc, ";\n\t");
2239 	}
2240 
2241 	g_free (output_string);
2242 	g_free (data->previous_string);
2243 	g_free (user_data);
2244 	gtk_widget_destroy (border_style_dialog);
2245 }
2246 
2247 /* ---------------- CALLED BY ALL DIALOGS ----------------------------------  */
2248 /* this will be called on all cancel button click events                      */
2249 void
on_css_dialog_cancel_button_clicked(GtkButton * button,gpointer user_data)2250 on_css_dialog_cancel_button_clicked (GtkButton * button, gpointer user_data)
2251 {
2252 	GtkWidget *dialog;
2253 	CssedCssDialogsData *data;
2254 
2255 	data = (CssedCssDialogsData *) user_data;
2256 
2257 	dialog = gtk_widget_get_toplevel (GTK_WIDGET (button));
2258 	gtk_widget_destroy (dialog);
2259 	g_free (data->previous_string);
2260 	g_free (user_data);
2261 }
2262 void
on_css_dialog_unit_changed(GtkEditable * editable,gpointer user_data)2263 on_css_dialog_unit_changed				(GtkEditable *editable,
2264                                             gpointer user_data)
2265 {
2266 	gchar* unit;
2267 
2268 	unit = gtk_editable_get_chars(editable,0,-1);
2269 	if( strlen(unit) != 0 ){
2270 		if( strcmp(unit,"em") == 0 ||
2271 			strcmp(unit,"in")==0 ){
2272 			gtk_spin_button_set_digits (GTK_SPIN_BUTTON(user_data),     2);
2273 			gtk_spin_button_set_increments  (GTK_SPIN_BUTTON(user_data), 0.1, 1);
2274 		}else{
2275 			gtk_spin_button_set_digits (GTK_SPIN_BUTTON(user_data), 0);
2276 			gtk_spin_button_set_increments  (GTK_SPIN_BUTTON(user_data), 1, 1);
2277 		}
2278 
2279 	}
2280 	g_free(unit);
2281 }
2282 /* this is called when any dialog is closed                                   */
2283 void
on_css_dialog_close(GtkDialog * dialog,gpointer user_data)2284 on_css_dialog_close (GtkDialog * dialog, gpointer user_data)
2285 {
2286 	CssedCssDialogsData *data;
2287 
2288 	data = (CssedCssDialogsData *) user_data;
2289 
2290 	g_free (data->previous_string);
2291 	g_free (user_data);
2292 }
2293 
2294 /* *************************** HELP BUTTONS ********************************* */
on_angle_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2295 void on_angle_property_dialog_helpbutton_clicked
2296 	(GtkButton * button, gpointer user_data)
2297 {
2298 
2299 
2300 }
on_background_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2301 void on_background_property_dialog_helpbutton_clicked
2302 	(GtkButton * button, gpointer user_data)
2303 {
2304 
2305 }
on_border_properties_helpbutton_clicked(GtkButton * button,gpointer user_data)2306 void on_border_properties_helpbutton_clicked
2307 	(GtkButton * button, gpointer user_data)
2308 {
2309 
2310 }
on_border_with_properties_helpbutton_clicked(GtkButton * button,gpointer user_data)2311 void on_border_with_properties_helpbutton_clicked
2312 	(GtkButton * button, gpointer user_data)
2313 {
2314 
2315 }
on_border_width_single_helpbutton_clicked(GtkButton * button,gpointer user_data)2316 void on_border_width_single_helpbutton_clicked
2317 	(GtkButton * button, gpointer user_data)
2318 {
2319 
2320 }
on_dialog_counter_increment_reset_helpbutton_clicked(GtkButton * button,gpointer user_data)2321 void on_dialog_counter_increment_reset_helpbutton_clicked
2322 	(GtkButton * button, gpointer user_data)
2323 {
2324 
2325 }
on_string_properties_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2326 void on_string_properties_dialog_helpbutton_clicked
2327 	(GtkButton * button, gpointer user_data)
2328 {
2329 
2330 }
2331 void
on_uri_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2332 on_uri_value_dialog_helpbutton_clicked (GtkButton * button,
2333 					gpointer user_data)
2334 {
2335 
2336 }
on_attr_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2337 void on_attr_value_dialog_helpbutton_clicked
2338 	(GtkButton * button, gpointer user_data)
2339 {
2340 
2341 }
on_counter_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2342 void on_counter_property_dialog_helpbutton_clicked
2343 	(GtkButton * button, gpointer user_data)
2344 {
2345 
2346 }
on_font_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2347 void on_font_property_dialog_helpbutton_clicked
2348 	(GtkButton * button, gpointer user_data)
2349 {
2350 
2351 }
on_font_family_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2352 void on_font_family_dialog_helpbutton_clicked
2353 	(GtkButton * button, gpointer user_data)
2354 {
2355 
2356 }
2357 void
on_font_size_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2358 on_font_size_dialog_helpbutton_clicked (GtkButton * button,
2359 					gpointer user_data)
2360 {
2361 
2362 }
2363 void
on_dialog_frecuency_helpbutton_clicked(GtkButton * button,gpointer user_data)2364 on_dialog_frecuency_helpbutton_clicked (GtkButton * button,
2365 					gpointer user_data)
2366 {
2367 
2368 }
2369 void
on_dialog_integer_helpbutton_clicked(GtkButton * button,gpointer user_data)2370 on_dialog_integer_helpbutton_clicked (GtkButton * button, gpointer user_data)
2371 {
2372 
2373 }
on_length_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2374 void on_length_value_dialog_helpbutton_clicked
2375 	(GtkButton * button, gpointer user_data)
2376 {
2377 
2378 }
on_list_style_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2379 void on_list_style_dialog_helpbutton_clicked
2380 	(GtkButton * button, gpointer user_data)
2381 {
2382 
2383 }
on_margin_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2384 void on_margin_property_dialog_helpbutton_clicked
2385 	(GtkButton * button, gpointer user_data)
2386 {
2387 
2388 }
on_margin_width_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2389 void on_margin_width_value_dialog_helpbutton_clicked
2390 	(GtkButton * button, gpointer user_data)
2391 {
2392 
2393 }
on_number_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2394 void on_number_value_dialog_helpbutton_clicked
2395 	(GtkButton * button, gpointer user_data)
2396 {
2397 
2398 }
on_padding_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2399 void on_padding_property_dialog_helpbutton_clicked
2400 	(GtkButton * button, gpointer user_data)
2401 {
2402 
2403 }
on_outline_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2404 void on_outline_property_dialog_helpbutton_clicked
2405 	(GtkButton * button, gpointer user_data)
2406 {
2407 
2408 }
on_pause_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2409 void on_pause_property_dialog_helpbutton_clicked
2410 	(GtkButton * button, gpointer user_data)
2411 {
2412 
2413 }
on_percentage_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2414 void on_percentage_value_dialog_helpbutton_clicked
2415 	(GtkButton * button, gpointer user_data)
2416 {
2417 
2418 }
on_percentage_length_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2419 void on_percentage_length_value_dialog_helpbutton_clicked
2420 	(GtkButton * button, gpointer user_data)
2421 {
2422 
2423 }
on_play_during_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2424 void on_play_during_property_dialog_helpbutton_clicked
2425 	(GtkButton * button, gpointer user_data)
2426 {
2427 
2428 }
on_quotes_property_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2429 void on_quotes_property_dialog_helpbutton_clicked
2430 	(GtkButton * button, gpointer user_data)
2431 {
2432 
2433 }
on_shape_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2434 void on_shape_value_dialog_helpbutton_clicked
2435 	(GtkButton * button, gpointer user_data)
2436 {
2437 
2438 }
on_size_lenght_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2439 void on_size_lenght_value_dialog_helpbutton_clicked
2440 	(GtkButton * button, gpointer user_data)
2441 {
2442 
2443 }
on_border_width_style_color_value_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2444 void on_border_width_style_color_value_dialog_helpbutton_clicked
2445 	(GtkButton * button, gpointer user_data)
2446 {
2447 
2448 }
on_color_selector_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2449 void on_color_selector_dialog_helpbutton_clicked
2450 	(GtkButton * button, gpointer user_data)
2451 {
2452 
2453 }
on_identifier_value_helpbutton_clicked(GtkButton * button,gpointer user_data)2454 void on_identifier_value_helpbutton_clicked
2455 	(GtkButton * button, gpointer user_data)
2456 {
2457 
2458 }
2459 
on_border_style_dialog_helpbutton_clicked(GtkButton * button,gpointer user_data)2460 void on_border_style_dialog_helpbutton_clicked
2461 	(GtkButton * button, gpointer user_data)
2462 {
2463 
2464 }
2465 
2466