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 #include "cssedwindow.h"
31 #include "document.h"
32 #include "cssdialogs-interface.h"
33 #include "cssdialogs-functions.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 /* callbacks */
44 
45 void
on_box_wizard_close(GtkDialog * dialog,gpointer user_data)46 on_box_wizard_close                    (GtkDialog       *dialog,
47                                         gpointer         user_data)
48 {
49 	gtk_widget_destroy(GTK_WIDGET(user_data));
50 }
51 
52 void
run_css_dialog(CssedWindow * window,GtkWidget * parent_widget,char * entry_name,char * title,GtkWidget * (* create_function)(CssedWindow *,gchar *,gboolean,gboolean),gchar * (* get_string_function)(CssedWindow *,gpointer))53 run_css_dialog(CssedWindow *window, GtkWidget *parent_widget,
54 				char *entry_name,char *title,
55 				GtkWidget *(*create_function) (CssedWindow*,gchar *,gboolean, gboolean),
56 				gchar *(*get_string_function) (CssedWindow*, gpointer ) )
57 {
58 	GtkWidget *dialog;
59 	gint response;
60 	gchar *string;
61 	CssedDoc *doc;
62 	GtkWidget *entry;
63 
64 	doc = document_get_current(window);
65 	entry = lookup_widget(GTK_WIDGET(parent_widget), entry_name);
66 
67 	dialog = create_function(window, title,	FALSE, FALSE);
68 	response = gtk_dialog_run(GTK_DIALOG(dialog));
69 
70 	if( response == GTK_RESPONSE_OK ){
71 		string = get_string_function( window, (gpointer) dialog );
72 		gtk_entry_set_text(GTK_ENTRY(entry),string);
73 		g_free(string);
74 	}
75 	gtk_widget_destroy(dialog);
76 }
77 
78 void
on_button_all_width_clicked(GtkButton * button,gpointer user_data)79 on_button_all_width_clicked            (GtkButton       *button,
80                                         gpointer         user_data)
81 {
82 	CssedWindow *window;
83 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
84 	char *(*get_string_function) ( CssedWindow*, gpointer  );
85 
86 	window = CSSED_WINDOW(user_data);
87 	create_function = &create_percentage_length_value_dialog;
88 	get_string_function = &cssdialog_percentage_length_value_get_string;
89 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_width", "width",
90 											create_function,
91 											get_string_function);
92 }
93 
94 
95 void
on_button_all_height_clicked(GtkButton * button,gpointer user_data)96 on_button_all_height_clicked           (GtkButton       *button,
97                                         gpointer         user_data)
98 {
99 	CssedWindow *window;
100 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
101 	char *(*get_string_function) ( CssedWindow*, gpointer  );
102 
103 	window = CSSED_WINDOW(user_data);
104 	create_function = &create_percentage_length_value_dialog;
105 	get_string_function = &cssdialog_percentage_length_value_get_string;
106 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_height", "height",
107 											create_function,
108 											get_string_function);
109 }
110 
111 
112 void
on_button_all_border_top_clicked(GtkButton * button,gpointer user_data)113 on_button_all_border_top_clicked       (GtkButton       *button,
114                                         gpointer         user_data)
115 {
116 	CssedWindow *window;
117 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
118 	char *(*get_string_function) ( CssedWindow*, gpointer  );
119 
120 	window = CSSED_WINDOW(user_data);
121 	create_function = &create_border_properties_dialog;
122 	get_string_function = &cssdialog_border_properties_get_string;
123 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_border_top",
124 											"border-top",
125 											create_function,
126 											get_string_function);
127 }
128 
129 
130 void
on_button_all_border_left_clicked(GtkButton * button,gpointer user_data)131 on_button_all_border_left_clicked      (GtkButton       *button,
132                                         gpointer         user_data)
133 {
134 	CssedWindow *window;
135 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
136 	char *(*get_string_function) ( CssedWindow*, gpointer  );
137 
138 	window = CSSED_WINDOW(user_data);
139 	create_function = &create_border_properties_dialog;
140 	get_string_function = &cssdialog_border_properties_get_string;
141 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_border_left",
142 											"border-left",
143 											create_function,
144 											get_string_function);
145 }
146 
147 
148 void
on_button_all_border_bottom_clicked(GtkButton * button,gpointer user_data)149 on_button_all_border_bottom_clicked    (GtkButton       *button,
150                                         gpointer         user_data)
151 {
152 	CssedWindow *window;
153 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
154 	char *(*get_string_function) ( CssedWindow*, gpointer  );
155 
156 	window = CSSED_WINDOW(user_data);
157 	create_function = &create_border_properties_dialog;
158 	get_string_function = &cssdialog_border_properties_get_string;
159 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_border_bottom",
160 											"border-bottom",
161 											create_function,
162 											get_string_function);
163 }
164 
165 
166 void
on_button_all_border_right_clicked(GtkButton * button,gpointer user_data)167 on_button_all_border_right_clicked     (GtkButton       *button,
168                                         gpointer         user_data)
169 {
170 	CssedWindow *window;
171 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
172 	char *(*get_string_function) ( CssedWindow*, gpointer  );
173 
174 	window = CSSED_WINDOW(user_data);
175 	create_function = &create_border_properties_dialog;
176 	get_string_function = &cssdialog_border_properties_get_string;
177 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_border_right",
178 											"border-right",
179 											create_function,
180 											get_string_function);
181 }
182 
183 
184 void
on_button_all_padding_top_clicked(GtkButton * button,gpointer user_data)185 on_button_all_padding_top_clicked      (GtkButton       *button,
186                                         gpointer         user_data)
187 {
188 	CssedWindow *window;
189 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
190 	char *(*get_string_function) ( CssedWindow*, gpointer  );
191 
192 	window = CSSED_WINDOW(user_data);
193 	create_function = &create_percentage_length_value_dialog;
194 	get_string_function = &cssdialog_percentage_length_value_get_string;
195 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_padding_top",
196 											"padding-top",
197 											create_function,
198 											get_string_function);
199 }
200 
201 
202 void
on_button_all_padding_left_clicked(GtkButton * button,gpointer user_data)203 on_button_all_padding_left_clicked     (GtkButton       *button,
204                                         gpointer         user_data)
205 {
206 	CssedWindow *window;
207 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
208 	char *(*get_string_function) ( CssedWindow*, gpointer  );
209 
210 	window = CSSED_WINDOW(user_data);
211 	create_function = &create_percentage_length_value_dialog;
212 	get_string_function = &cssdialog_percentage_length_value_get_string;
213 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_padding_left",
214 											"padding-left",
215 											create_function,
216 											get_string_function);
217 }
218 
219 
220 void
on_button_all_margin_right_clicked(GtkButton * button,gpointer user_data)221 on_button_all_margin_right_clicked     (GtkButton       *button,
222                                         gpointer         user_data)
223 {
224 	CssedWindow *window;
225 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
226 	char *(*get_string_function) ( CssedWindow*, gpointer  );
227 
228 	window = CSSED_WINDOW(user_data);
229 	create_function = &create_percentage_length_value_dialog;
230 	get_string_function = &cssdialog_percentage_length_value_get_string;
231 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_padding_right",
232 											"padding-right",
233 											create_function,
234 											get_string_function);
235 }
236 
237 
238 void
on_button_all_padding_bottom_clicked(GtkButton * button,gpointer user_data)239 on_button_all_padding_bottom_clicked   (GtkButton       *button,
240                                         gpointer         user_data)
241 {
242 	CssedWindow *window;
243 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
244 	char *(*get_string_function) ( CssedWindow*, gpointer  );
245 
246 	window = CSSED_WINDOW(user_data);
247 	create_function = &create_percentage_length_value_dialog;
248 	get_string_function = &cssdialog_percentage_length_value_get_string;
249 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_padding_bottom",
250 											"padding-bottom",
251 											create_function,
252 											get_string_function);
253 }
254 
255 
256 void
on_button_all_padding_right_clicked(GtkButton * button,gpointer user_data)257 on_button_all_padding_right_clicked    (GtkButton       *button,
258                                         gpointer         user_data)
259 {
260 	CssedWindow *window;
261 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
262 	char *(*get_string_function) ( CssedWindow*, gpointer  );
263 
264 	window = CSSED_WINDOW(user_data);
265 	create_function = &create_percentage_length_value_dialog;
266 	get_string_function = &cssdialog_percentage_length_value_get_string;
267 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_margin_right",
268 											"margin-right",
269 											create_function,
270 											get_string_function);
271 }
272 
273 
274 void
on_button_all_margin_bottom_clicked(GtkButton * button,gpointer user_data)275 on_button_all_margin_bottom_clicked    (GtkButton       *button,
276                                         gpointer         user_data)
277 {
278 	CssedWindow *window;
279 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
280 	char *(*get_string_function) ( CssedWindow*, gpointer  );
281 
282 	window = CSSED_WINDOW(user_data);
283 	create_function = &create_percentage_length_value_dialog;
284 	get_string_function = &cssdialog_percentage_length_value_get_string;
285 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_margin_bottom",
286 											"margin-bottom",
287 											create_function,
288 											get_string_function);
289 }
290 
291 
292 void
on_button_all_margin_top_clicked(GtkButton * button,gpointer user_data)293 on_button_all_margin_top_clicked       (GtkButton       *button,
294                                         gpointer         user_data)
295 {
296 	CssedWindow *window;
297 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
298 	char *(*get_string_function) ( CssedWindow*, gpointer  );
299 
300 	window = CSSED_WINDOW(user_data);
301 	create_function = &create_percentage_length_value_dialog;
302 	get_string_function = &cssdialog_percentage_length_value_get_string;
303 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_margin_top",
304 											"margin-top",
305 											create_function,
306 											get_string_function);
307 }
308 
309 
310 void
on_button_all_margin_left_clicked(GtkButton * button,gpointer user_data)311 on_button_all_margin_left_clicked      (GtkButton       *button,
312                                         gpointer         user_data)
313 {
314 	CssedWindow *window;
315 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
316 	char *(*get_string_function) ( CssedWindow*, gpointer  );
317 
318 	window = CSSED_WINDOW(user_data);
319 	create_function = &create_percentage_length_value_dialog;
320 	get_string_function = &cssdialog_percentage_length_value_get_string;
321 	run_css_dialog(window, GTK_WIDGET(button), "entry_all_margin_left",
322 											"margin-left",
323 											create_function,
324 											get_string_function);
325 }
326 
327 
328 void
on_button_short_width_clicked(GtkButton * button,gpointer user_data)329 on_button_short_width_clicked          (GtkButton       *button,
330                                         gpointer         user_data)
331 {
332 	CssedWindow *window;
333 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
334 	char *(*get_string_function) ( CssedWindow*, gpointer  );
335 
336 	window = CSSED_WINDOW(user_data);
337 	create_function = &create_percentage_length_value_dialog;
338 	get_string_function = &cssdialog_percentage_length_value_get_string;
339 	run_css_dialog(window, GTK_WIDGET(button), "entry_short_width", "width",
340 											create_function,
341 											get_string_function);
342 }
343 
344 
345 void
on_button_short_height_clicked(GtkButton * button,gpointer user_data)346 on_button_short_height_clicked         (GtkButton       *button,
347                                         gpointer         user_data)
348 {
349 	CssedWindow *window;
350 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
351 	char *(*get_string_function) ( CssedWindow*, gpointer  );
352 
353 	window = CSSED_WINDOW(user_data);
354 	create_function = &create_percentage_length_value_dialog;
355 	get_string_function = &cssdialog_percentage_length_value_get_string;
356 	run_css_dialog(window, GTK_WIDGET(button), "entry_short_height", "height",
357 											create_function,
358 											get_string_function);
359 }
360 
361 
362 void
on_button_short_border_clicked(GtkButton * button,gpointer user_data)363 on_button_short_border_clicked         (GtkButton       *button,
364                                         gpointer         user_data)
365 {
366 	CssedWindow *window;
367 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
368 	char *(*get_string_function) ( CssedWindow*, gpointer  );
369 
370 	window = CSSED_WINDOW(user_data);
371 	create_function = &create_border_properties_dialog;
372 	get_string_function = &cssdialog_border_properties_get_string;
373 	run_css_dialog(window, GTK_WIDGET(button), "entry_short_border",
374 											"border",
375 											create_function,
376 											get_string_function);
377 }
378 
379 
380 void
on_button_short_margin_clicked(GtkButton * button,gpointer user_data)381 on_button_short_margin_clicked         (GtkButton       *button,
382                                         gpointer         user_data)
383 {
384 	CssedWindow *window;
385 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
386 	char *(*get_string_function) ( CssedWindow*, gpointer  );
387 
388 	window = CSSED_WINDOW(user_data);
389 	create_function = &create_margin_property_dialog;
390 	get_string_function = &cssdialog_margin_property_get_string;
391 	run_css_dialog(window, GTK_WIDGET(button), "entry_short_margin",
392 											"margin",
393 											create_function,
394 											get_string_function);
395 }
396 
397 
398 void
on_button_short_padding_clicked(GtkButton * button,gpointer user_data)399 on_button_short_padding_clicked        (GtkButton       *button,
400                                         gpointer         user_data)
401 {
402 	CssedWindow *window;
403 	GtkWidget *(*create_function) (CssedWindow*, gchar*, gboolean,   gboolean);
404 	char *(*get_string_function) ( CssedWindow*, gpointer  );
405 
406 	window = CSSED_WINDOW(user_data);
407 	create_function = &create_padding_property_dialog;
408 	get_string_function = &cssdialog_padding_property_get_string;
409 	run_css_dialog(window, GTK_WIDGET(button), "entry_short_padding",
410 											"padding",
411 											create_function,
412 											get_string_function);
413 }
414 
415 
416 void
on_box_wizard_cancelbutton_clicked(GtkButton * button,gpointer user_data)417 on_box_wizard_cancelbutton_clicked     (GtkButton       *button,
418                                         gpointer         user_data)
419 {
420 	gtk_widget_destroy(GTK_WIDGET(user_data));
421 }
422 
423 void
write_entry_contents_if_any(CssedDoc * doc,gchar * previous_string,GtkWidget * entry)424 write_entry_contents_if_any		(CssedDoc *doc, gchar *previous_string,
425 								GtkWidget *entry)
426 {
427 	gchar *entry_contents;
428 	gchar *output_string;
429 
430 	entry_contents = gtk_editable_get_chars(GTK_EDITABLE(entry),
431                                              0,-1);
432 	if( strlen( entry_contents ) > 0 ){
433 		g_strstrip( entry_contents );
434 		output_string = g_strdup_printf("\t%s: %s;\n", previous_string,
435 									entry_contents);
436 		document_add_text(doc,output_string);
437 		g_free(output_string);
438 	}
439 	g_free( entry_contents );
440 }
441 
442 void
on_box_wizard_applybutton_clicked(GtkButton * button,gpointer user_data)443 on_box_wizard_applybutton_clicked      (GtkButton       *button,
444                                         gpointer         user_data)
445 {
446 	CssedWindow *window;
447 	CssedDoc *doc;
448 	GtkWidget *entry_all_width;
449 	GtkWidget *entry_all_height;
450 	GtkWidget *entry_all_border_top;
451 	GtkWidget *entry_all_border_left;
452 	GtkWidget *entry_all_border_bottom;
453 	GtkWidget *entry_all_border_right;
454 	GtkWidget *entry_all_padding_top;
455 	GtkWidget *entry_all_padding_left;
456 	GtkWidget *entry_all_margin_right;
457 	GtkWidget *entry_all_padding_bottom;
458 	GtkWidget *entry_all_margin_bottom;
459 	GtkWidget *entry_all_padding_right;
460 	GtkWidget *entry_all_margin_top;
461 	GtkWidget *entry_all_margin_left;
462 	GtkWidget *entry_short_width;
463 	GtkWidget *entry_short_height;
464 	GtkWidget *entry_short_border;
465 	GtkWidget *entry_short_margin;
466 	GtkWidget *entry_short_padding;
467 	GtkWidget *notebook;
468 	gint pagenum;
469 
470 	window = CSSED_WINDOW(user_data);
471 	doc = document_get_current(window);
472 
473 	notebook = lookup_widget(GTK_WIDGET(button), "notebook");
474 
475 	g_return_if_fail(GTK_IS_NOTEBOOK(notebook));
476 
477 	pagenum = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
478 
479 	switch( pagenum ){
480 		case 0: // first page
481 			entry_all_width = lookup_widget(GTK_WIDGET(button), "entry_all_width");
482 			write_entry_contents_if_any(doc, "width", entry_all_width);
483 
484 			entry_all_height = lookup_widget(GTK_WIDGET(button), "entry_all_height");
485 			write_entry_contents_if_any(doc, "height", entry_all_height);
486 
487 			entry_all_border_top= lookup_widget(GTK_WIDGET(button), "entry_all_border_top");
488 			write_entry_contents_if_any(doc, "border-top", entry_all_border_top);
489 
490 			entry_all_border_left= lookup_widget(GTK_WIDGET(button), "entry_all_border_left");
491 			write_entry_contents_if_any(doc, "border-left", entry_all_border_left);
492 
493 			entry_all_border_bottom = lookup_widget(GTK_WIDGET(button), "entry_all_border_bottom");
494 			write_entry_contents_if_any(doc, "border-bottom", entry_all_border_bottom);
495 
496 			entry_all_border_right = lookup_widget(GTK_WIDGET(button), "entry_all_border_right");
497 			write_entry_contents_if_any(doc, "border-right", entry_all_border_right);
498 
499 			entry_all_padding_top = lookup_widget(GTK_WIDGET(button), "entry_all_padding_top");
500 			write_entry_contents_if_any(doc, "padding-top", entry_all_padding_top);
501 
502 			entry_all_padding_left = lookup_widget(GTK_WIDGET(button), "entry_all_padding_left");
503 			write_entry_contents_if_any(doc, "padding-left", entry_all_padding_left);
504 
505 			entry_all_padding_bottom = lookup_widget(GTK_WIDGET(button), "entry_all_padding_bottom");
506 			write_entry_contents_if_any(doc, "padding-bottom", entry_all_padding_bottom);
507 
508 			entry_all_padding_right = lookup_widget(GTK_WIDGET(button), "entry_all_padding_right");
509 			write_entry_contents_if_any(doc, "padding-right", entry_all_padding_right);
510 
511 			entry_all_margin_top = lookup_widget(GTK_WIDGET(button), "entry_all_margin_top");
512 			write_entry_contents_if_any(doc, "margin-top", entry_all_margin_top);
513 
514 			entry_all_margin_left = lookup_widget(GTK_WIDGET(button), "entry_all_margin_left");
515 			write_entry_contents_if_any(doc, "margin-left", entry_all_margin_left);
516 
517 			entry_all_margin_bottom = lookup_widget(GTK_WIDGET(button), "entry_all_margin_bottom");
518 			write_entry_contents_if_any(doc, "margin-bottom", entry_all_margin_bottom);
519 
520 			entry_all_margin_right = lookup_widget(GTK_WIDGET(button), "entry_all_margin_right");
521 			write_entry_contents_if_any(doc, "margin-right", entry_all_margin_right);
522 
523 			break;
524 		case 1: // shorthand page
525 			entry_short_width = lookup_widget(GTK_WIDGET(button), "entry_short_width");
526 			write_entry_contents_if_any(doc, "width", entry_short_width);
527 
528 			entry_short_height = lookup_widget(GTK_WIDGET(button), "entry_short_height");
529 			write_entry_contents_if_any(doc, "height", entry_short_height);
530 
531 			entry_short_border = lookup_widget(GTK_WIDGET(button), "entry_short_border");
532 			write_entry_contents_if_any(doc, "border", entry_short_border);
533 
534 			entry_short_margin = lookup_widget(GTK_WIDGET(button), "entry_short_margin");
535 			write_entry_contents_if_any(doc, "margin", entry_short_margin);
536 
537 			entry_short_padding = lookup_widget(GTK_WIDGET(button), "entry_short_padding");
538 			write_entry_contents_if_any(doc, "padding", entry_short_padding);
539 
540 			break;
541 		//case 2:// FIXME, do nothing but must say something to user.
542 		default:
543 		break;
544 	}
545 }
546 
547 
548 void
on_box_wizard_okbutton_clicked(GtkButton * button,gpointer user_data)549 on_box_wizard_okbutton_clicked          (GtkButton       *button,
550                                         gpointer         user_data)
551 {
552 	GtkWidget *dialog;
553 
554 	dialog = lookup_widget(GTK_WIDGET(button), "box_wizard");
555 	on_box_wizard_applybutton_clicked (button, user_data);
556 	gtk_widget_destroy(dialog);
557 }
558 
559 /* drawing functions */
560 void
draw_area(GtkWidget * widget)561 draw_area(GtkWidget       *widget)
562 {
563   const gchar *border = _("<span color='black' size='smaller'>border</span>");
564   const gchar *margin = _("<span color='blue' size='smaller'>margin (transparent)</span>");
565   const gchar *padding = _("<span color='blue' size='smaller'>padding (transparent)</span>");
566   const gchar *content = _("<span color='white' size='smaller'>content</span>");
567   const gchar *top = _("<span color='navy' size='smaller'>TOP</span>");
568   const gchar *left = _("<span color='navy' size='smaller'>LEFT</span>");
569   const gchar *bottom = _("<span color='navy' size='smaller'>BOTTOM</span>");
570   const gchar *right = _("<span color='navy' size='smaller'>RIGHT</span>");
571 
572   PangoContext *context;
573   PangoLayout *layout;
574 
575   context = gtk_widget_get_pango_context(widget);
576   layout = pango_layout_new( context );
577 
578 
579   gdk_draw_rectangle            (widget->window,
580                                  widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
581                                  FALSE,
582                                  40,20, widget->allocation.width - 80, widget->allocation.height - 50);
583 
584   gdk_draw_rectangle            (widget->window,
585                                  widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
586                                  FALSE,
587                                  60,40, widget->allocation.width - 120, widget->allocation.height - 90);
588 
589   gdk_draw_rectangle            (widget->window,
590                                  widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
591                                  FALSE,
592                                  80,60, widget->allocation.width - 165, widget->allocation.height - 130);
593 
594   gdk_draw_rectangle            (widget->window,
595                                  widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
596                                  TRUE,
597                                  100,80, widget->allocation.width - 200, widget->allocation.height - 170);
598 
599   pango_layout_set_markup(layout,top ,strlen(top));
600 
601   gdk_draw_layout    (widget->window,
602                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
603                       widget->allocation.width/2 - 15,
604                       5,layout);
605 
606   pango_layout_set_markup(layout,margin,strlen(margin));
607   gdk_draw_layout    (widget->window,
608                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
609                       widget->allocation.width/2 - 100,
610                       24,layout);
611 
612   pango_layout_set_markup(layout,border,strlen(border));
613   gdk_draw_layout    (widget->window,
614                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
615                       widget->allocation.width/2 - 15,
616                       40,layout);
617 
618   pango_layout_set_markup(layout,padding,strlen(padding));
619   gdk_draw_layout    (widget->window,
620                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
621                       widget->allocation.width/2 - 80,
622                       60,layout);
623 
624   pango_layout_set_markup (layout,content,strlen(content));
625   gdk_draw_layout    (widget->window,
626                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
627                       widget->allocation.width/2 - 15,
628                       widget->allocation.height/2 - 10,layout);
629 
630   pango_layout_set_markup (layout,right,strlen(right));
631   gdk_draw_layout    (widget->window,
632                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
633                       0,
634                       widget->allocation.height/2 - 40,layout);
635 
636   pango_layout_set_markup (layout,bottom,strlen(bottom));
637 
638   gdk_draw_layout    (widget->window,
639                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
640                       widget->allocation.width/2 - 5,
641                       widget->allocation.height - 20,layout);
642 
643   pango_layout_set_markup (layout,left,strlen(left));
644 
645   gdk_draw_layout    (widget->window,
646                       widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
647                       widget->allocation.width - 30,
648                       widget->allocation.height/2 - 40,layout);
649 
650 }
651 
652 
653 
654 gboolean
on_drawingarea_expose_event(GtkWidget * widget,GdkEventExpose * event,gpointer user_data)655 on_drawingarea_expose_event            (GtkWidget       *widget,
656                                         GdkEventExpose  *event,
657                                         gpointer         user_data)
658 {
659   draw_area(widget);
660   return FALSE;
661 }
662 /* draw end */
663 
664 
665 /* UI */
666 GtkWidget*
create_box_wizard(CssedWindow * window)667 create_box_wizard (CssedWindow *window)
668 {
669   GtkWidget *label_blank;
670   GtkWidget *box_wizard;
671   //GdkPixbuf *box_wizard_icon_pixbuf;
672   GtkWidget *dialog_vbox;
673   GtkWidget *notebook;
674   GtkWidget *table_all_border_right;
675   GtkWidget *button_all_width;
676   GtkWidget *entry_all_width;
677   GtkWidget *label_all_width;
678   GtkWidget *entry_all_height;
679   GtkWidget *entry_all_border_top;
680   GtkWidget *entry_all_border_left;
681   GtkWidget *entry_all_border_bottom;
682   GtkWidget *entry_all_border_right;
683   GtkWidget *entry_all_padding_top;
684   GtkWidget *entry_all_padding_left;
685   GtkWidget *entry_all_margin_right;
686   GtkWidget *button_all_height;
687   GtkWidget *button_all_border_top;
688   GtkWidget *button_all_border_left;
689   GtkWidget *button_all_border_bottom;
690   GtkWidget *button_all_border_right;
691   GtkWidget *button_all_padding_top;
692   GtkWidget *button_all_padding_left;
693   GtkWidget *button_all_margin_right;
694   GtkWidget *label_all_height;
695   GtkWidget *label_all_border_left;
696   GtkWidget *label_all_border_bottom;
697   GtkWidget *label_all_border_right;
698   GtkWidget *label_all_padding_top;
699   GtkWidget *label_all_padding_left;
700   GtkWidget *button_all_padding_bottom;
701   GtkWidget *button_all_padding_right;
702   GtkWidget *button_all_margin_bottom;
703   GtkWidget *entry_all_padding_bottom;
704   GtkWidget *entry_all_margin_bottom;
705   GtkWidget *entry_all_padding_right;
706   GtkWidget *label_all_padding_bottom;
707   GtkWidget *label_all_padding_right;
708   GtkWidget *label_all_margin_bottom;
709   GtkWidget *label_all_margin_right;
710   GtkWidget *label_all_border_top;
711   GtkWidget *label_all_margin_top;
712   GtkWidget *label_all_margin_left;
713   GtkWidget *entry_all_margin_top;
714   GtkWidget *entry_all_margin_left;
715   GtkWidget *button_all_margin_top;
716   GtkWidget *button_all_margin_left;
717   GtkWidget *label_all_padding_big;
718   GtkWidget *label_all_margin_big;
719   GtkWidget *label_all_border_big;
720   GtkWidget *label_all_box_big;
721   GtkWidget *label_prop;
722   GtkWidget *table_shorthand;
723   GtkWidget *entry_short_width;
724   GtkWidget *button_short_width;
725   GtkWidget *entry_short_height;
726   GtkWidget *entry_short_border;
727   GtkWidget *entry_short_margin;
728   GtkWidget *entry_short_padding;
729   GtkWidget *button_short_height;
730   GtkWidget *button_short_border;
731   GtkWidget *button_short_margin;
732   GtkWidget *button_short_padding;
733   GtkWidget *label_short_box_big;
734   GtkWidget *label_short_width;
735   GtkWidget *label_short_height;
736   GtkWidget *label_short_border;
737   GtkWidget *label_short_margin;
738   GtkWidget *label_short_padding;
739   GtkWidget *label_short_box_big_prop;
740   GtkWidget *label_shorthand;
741   GtkWidget *hbox_help;
742   GtkWidget *vbox_help;
743   GtkWidget *scrolledwindow;
744   GtkWidget *textview;
745   GtkWidget *drawingarea;
746   GtkWidget *label_help;
747   GtkWidget *dialog_action_area;
748   GtkWidget *cancelbutton;
749   GtkWidget *applybutton;
750   GtkWidget *okbutton;
751 
752   label_blank = gtk_label_new ("");
753 
754   box_wizard = gtk_dialog_new ();
755   gtk_window_set_title (GTK_WINDOW (box_wizard), _("Box properties dialog"));
756   gtk_window_set_destroy_with_parent (GTK_WINDOW (box_wizard), TRUE);
757   gtk_window_set_transient_for ( GTK_WINDOW(box_wizard),
758 				      GTK_WINDOW ( cssed_window_get_window_widget(window) ));
759 
760   /*
761   box_wizard_icon_pixbuf = create_pixbuf ("dlg_border.png");
762   if (box_wizard_icon_pixbuf)
763     {
764       gtk_window_set_icon (GTK_WINDOW (box_wizard), box_wizard_icon_pixbuf);
765       gdk_pixbuf_unref (box_wizard_icon_pixbuf);
766     }
767   */
768   dialog_vbox = GTK_DIALOG (box_wizard)->vbox;
769   gtk_widget_show (dialog_vbox);
770 
771   notebook = gtk_notebook_new ();
772   gtk_widget_show (notebook);
773   gtk_box_pack_start (GTK_BOX (dialog_vbox), notebook, TRUE, TRUE, 0);
774 
775   table_all_border_right = gtk_table_new (21, 3, FALSE);
776   gtk_widget_show (table_all_border_right);
777   gtk_container_add (GTK_CONTAINER (notebook), table_all_border_right);
778   gtk_container_set_border_width (GTK_CONTAINER (table_all_border_right), 5);
779 
780   button_all_width = gtk_button_new_with_mnemonic (_("Set"));
781   gtk_widget_show (button_all_width);
782   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_width, 2, 3, 1, 2,
783                     (GtkAttachOptions) (GTK_FILL),
784                     (GtkAttachOptions) (0), 5, 0);
785 
786   entry_all_width = gtk_entry_new ();
787   gtk_widget_show (entry_all_width);
788   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_width, 1, 2, 1, 2,
789                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
790                     (GtkAttachOptions) (0), 5, 0);
791 
792   label_all_width = gtk_label_new (_("width"));
793   gtk_widget_show (label_all_width);
794   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_width, 0, 1, 1, 2,
795                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
796                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
797   gtk_label_set_justify (GTK_LABEL (label_all_width), GTK_JUSTIFY_LEFT);
798   gtk_misc_set_alignment (GTK_MISC (label_all_width), 0, 0.5);
799 
800   entry_all_height = gtk_entry_new ();
801   gtk_widget_show (entry_all_height);
802   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_height, 1, 2, 2, 3,
803                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
804                     (GtkAttachOptions) (0), 5, 0);
805 
806   entry_all_border_top = gtk_entry_new ();
807   gtk_widget_show (entry_all_border_top);
808   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_border_top, 1, 2, 5, 6,
809                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
810                     (GtkAttachOptions) (0), 5, 0);
811 
812   entry_all_border_left = gtk_entry_new ();
813   gtk_widget_show (entry_all_border_left);
814   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_border_left, 1, 2, 6, 7,
815                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
816                     (GtkAttachOptions) (0), 5, 0);
817 
818   entry_all_border_bottom = gtk_entry_new ();
819   gtk_widget_show (entry_all_border_bottom);
820   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_border_bottom, 1, 2, 7, 8,
821                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
822                     (GtkAttachOptions) (0), 5, 0);
823 
824   entry_all_border_right = gtk_entry_new ();
825   gtk_widget_show (entry_all_border_right);
826   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_border_right, 1, 2, 8, 9,
827                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
828                     (GtkAttachOptions) (0), 5, 0);
829 
830   entry_all_padding_top = gtk_entry_new ();
831   gtk_widget_show (entry_all_padding_top);
832   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_padding_top, 1, 2, 11, 12,
833                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
834                     (GtkAttachOptions) (0), 5, 0);
835 
836   entry_all_padding_left = gtk_entry_new ();
837   gtk_widget_show (entry_all_padding_left);
838   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_padding_left, 1, 2, 12, 13,
839                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
840                     (GtkAttachOptions) (0), 5, 0);
841 
842   entry_all_margin_right = gtk_entry_new ();
843   gtk_widget_show (entry_all_margin_right);
844   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_margin_right, 1, 2, 20, 21,
845                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
846                     (GtkAttachOptions) (0), 5, 0);
847 
848   button_all_height = gtk_button_new_with_mnemonic (_("Set"));
849   gtk_widget_show (button_all_height);
850   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_height, 2, 3, 2, 3,
851                     (GtkAttachOptions) (GTK_FILL),
852                     (GtkAttachOptions) (0), 5, 0);
853 
854   button_all_border_top = gtk_button_new_with_mnemonic (_("Set"));
855   gtk_widget_show (button_all_border_top);
856   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_border_top, 2, 3, 5, 6,
857                     (GtkAttachOptions) (GTK_FILL),
858                     (GtkAttachOptions) (0), 5, 0);
859 
860   button_all_border_left = gtk_button_new_with_mnemonic (_("Set"));
861   gtk_widget_show (button_all_border_left);
862   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_border_left, 2, 3, 6, 7,
863                     (GtkAttachOptions) (GTK_FILL),
864                     (GtkAttachOptions) (0), 5, 0);
865 
866   button_all_border_bottom = gtk_button_new_with_mnemonic (_("Set"));
867   gtk_widget_show (button_all_border_bottom);
868   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_border_bottom, 2, 3, 7, 8,
869                     (GtkAttachOptions) (GTK_FILL),
870                     (GtkAttachOptions) (0), 5, 0);
871 
872   button_all_border_right = gtk_button_new_with_mnemonic (_("Set"));
873   gtk_widget_show (button_all_border_right);
874   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_border_right, 2, 3, 8, 9,
875                     (GtkAttachOptions) (GTK_FILL),
876                     (GtkAttachOptions) (0), 5, 0);
877 
878   button_all_padding_top = gtk_button_new_with_mnemonic (_("Set"));
879   gtk_widget_show (button_all_padding_top);
880   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_padding_top, 2, 3, 11, 12,
881                     (GtkAttachOptions) (GTK_FILL),
882                     (GtkAttachOptions) (0), 5, 0);
883 
884   button_all_padding_left = gtk_button_new_with_mnemonic (_("Set"));
885   gtk_widget_show (button_all_padding_left);
886   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_padding_left, 2, 3, 12, 13,
887                     (GtkAttachOptions) (GTK_FILL),
888                     (GtkAttachOptions) (0), 5, 0);
889 
890   button_all_margin_right = gtk_button_new_with_mnemonic (_("Set"));
891   gtk_widget_show (button_all_margin_right);
892   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_margin_right, 2, 3, 20, 21,
893                     (GtkAttachOptions) (GTK_FILL),
894                     (GtkAttachOptions) (0), 5, 0);
895 
896   label_all_height = gtk_label_new (_("height"));
897   gtk_widget_show (label_all_height);
898   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_height, 0, 1, 2, 3,
899                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
900                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
901   gtk_label_set_justify (GTK_LABEL (label_all_height), GTK_JUSTIFY_LEFT);
902   gtk_misc_set_alignment (GTK_MISC (label_all_height), 0, 0.5);
903 
904   label_all_border_left = gtk_label_new (_("border-left"));
905   gtk_widget_show (label_all_border_left);
906   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_border_left, 0, 1, 6, 7,
907                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
908                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
909   gtk_label_set_justify (GTK_LABEL (label_all_border_left), GTK_JUSTIFY_LEFT);
910   gtk_misc_set_alignment (GTK_MISC (label_all_border_left), 0, 0.5);
911 
912   label_all_border_bottom = gtk_label_new (_("border-bottom"));
913   gtk_widget_show (label_all_border_bottom);
914   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_border_bottom, 0, 1, 7, 8,
915                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
916                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
917   gtk_label_set_justify (GTK_LABEL (label_all_border_bottom), GTK_JUSTIFY_LEFT);
918   gtk_misc_set_alignment (GTK_MISC (label_all_border_bottom), 0, 0.5);
919 
920   label_all_border_right = gtk_label_new (_("border-right"));
921   gtk_widget_show (label_all_border_right);
922   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_border_right, 0, 1, 8, 9,
923                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
924                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
925   gtk_label_set_justify (GTK_LABEL (label_all_border_right), GTK_JUSTIFY_LEFT);
926   gtk_misc_set_alignment (GTK_MISC (label_all_border_right), 0, 0.5);
927 
928   label_all_padding_top = gtk_label_new (_("padding-top"));
929   gtk_widget_show (label_all_padding_top);
930   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_padding_top, 0, 1, 11, 12,
931                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
932                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
933   gtk_label_set_justify (GTK_LABEL (label_all_padding_top), GTK_JUSTIFY_LEFT);
934   gtk_misc_set_alignment (GTK_MISC (label_all_padding_top), 0, 0.5);
935 
936   label_all_padding_left = gtk_label_new (_("padding-left"));
937   gtk_widget_show (label_all_padding_left);
938   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_padding_left, 0, 1, 12, 13,
939                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
940                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
941   gtk_label_set_justify (GTK_LABEL (label_all_padding_left), GTK_JUSTIFY_LEFT);
942   gtk_misc_set_alignment (GTK_MISC (label_all_padding_left), 0, 0.5);
943 
944   button_all_padding_bottom = gtk_button_new_with_mnemonic (_("Set"));
945   gtk_widget_show (button_all_padding_bottom);
946   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_padding_bottom, 2, 3, 13, 14,
947                     (GtkAttachOptions) (GTK_FILL),
948                     (GtkAttachOptions) (0), 5, 0);
949 
950   button_all_padding_right = gtk_button_new_with_mnemonic (_("Set"));
951   gtk_widget_show (button_all_padding_right);
952   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_padding_right, 2, 3, 14, 15,
953                     (GtkAttachOptions) (GTK_FILL),
954                     (GtkAttachOptions) (0), 5, 0);
955 
956   button_all_margin_bottom = gtk_button_new_with_mnemonic (_("Set"));
957   gtk_widget_show (button_all_margin_bottom);
958   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_margin_bottom, 2, 3, 19, 20,
959                     (GtkAttachOptions) (GTK_FILL),
960                     (GtkAttachOptions) (0), 5, 0);
961 
962   entry_all_padding_bottom = gtk_entry_new ();
963   gtk_widget_show (entry_all_padding_bottom);
964   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_padding_bottom, 1, 2, 13, 14,
965                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
966                     (GtkAttachOptions) (0), 5, 0);
967 
968   entry_all_margin_bottom = gtk_entry_new ();
969   gtk_widget_show (entry_all_margin_bottom);
970   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_margin_bottom, 1, 2, 19, 20,
971                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
972                     (GtkAttachOptions) (0), 5, 0);
973 
974   entry_all_padding_right = gtk_entry_new ();
975   gtk_widget_show (entry_all_padding_right);
976   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_padding_right, 1, 2, 14, 15,
977                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
978                     (GtkAttachOptions) (0), 5, 0);
979 
980   label_all_padding_bottom = gtk_label_new (_("padding-bottom"));
981   gtk_widget_show (label_all_padding_bottom);
982   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_padding_bottom, 0, 1, 13, 14,
983                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
984                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
985   gtk_label_set_justify (GTK_LABEL (label_all_padding_bottom), GTK_JUSTIFY_LEFT);
986   gtk_misc_set_alignment (GTK_MISC (label_all_padding_bottom), 0, 0.5);
987 
988   label_all_padding_right = gtk_label_new (_("padding-right"));
989   gtk_widget_show (label_all_padding_right);
990   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_padding_right, 0, 1, 14, 15,
991                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
992                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
993   gtk_label_set_justify (GTK_LABEL (label_all_padding_right), GTK_JUSTIFY_LEFT);
994   gtk_misc_set_alignment (GTK_MISC (label_all_padding_right), 0, 0.5);
995 
996   label_all_margin_bottom = gtk_label_new (_("margin-bottom"));
997   gtk_widget_show (label_all_margin_bottom);
998   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_margin_bottom, 0, 1, 19, 20,
999                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1000                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
1001   gtk_label_set_justify (GTK_LABEL (label_all_margin_bottom), GTK_JUSTIFY_LEFT);
1002   gtk_misc_set_alignment (GTK_MISC (label_all_margin_bottom), 0, 0.5);
1003 
1004   label_all_margin_right = gtk_label_new (_("margin-right"));
1005   gtk_widget_show (label_all_margin_right);
1006   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_margin_right, 0, 1, 20, 21,
1007                     (GtkAttachOptions) (GTK_FILL),
1008                     (GtkAttachOptions) (0), 10, 0);
1009   gtk_label_set_justify (GTK_LABEL (label_all_margin_right), GTK_JUSTIFY_LEFT);
1010   gtk_misc_set_alignment (GTK_MISC (label_all_margin_right), 0, 0.5);
1011 
1012   label_all_border_top = gtk_label_new (_("border-top"));
1013   gtk_widget_show (label_all_border_top);
1014   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_border_top, 0, 1, 5, 6,
1015                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1016                     (GtkAttachOptions) (GTK_EXPAND), 10, 0);
1017   gtk_label_set_justify (GTK_LABEL (label_all_border_top), GTK_JUSTIFY_LEFT);
1018   gtk_misc_set_alignment (GTK_MISC (label_all_border_top), 0, 0.5);
1019 
1020   label_blank = gtk_label_new ("");
1021   gtk_widget_show (label_blank);
1022   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 4, 5,
1023                     (GtkAttachOptions) (GTK_FILL),
1024                     (GtkAttachOptions) (0), 0, 0);
1025   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1026   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1027 
1028   label_blank = gtk_label_new ("");
1029   gtk_widget_show (label_blank);
1030   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 4, 5,
1031                     (GtkAttachOptions) (GTK_FILL),
1032                     (GtkAttachOptions) (0), 0, 0);
1033   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1034   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1035 
1036   label_blank = gtk_label_new ("");
1037   gtk_widget_show (label_blank);
1038   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 10, 11,
1039                     (GtkAttachOptions) (GTK_FILL),
1040                     (GtkAttachOptions) (0), 0, 0);
1041   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1042   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1043 
1044   label_blank = gtk_label_new ("");
1045   gtk_widget_show (label_blank);
1046   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 10, 11,
1047                     (GtkAttachOptions) (GTK_FILL),
1048                     (GtkAttachOptions) (0), 0, 0);
1049   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1050   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1051 
1052   label_blank = gtk_label_new ("");
1053   gtk_widget_show (label_blank);
1054   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 16, 17,
1055                     (GtkAttachOptions) (GTK_FILL),
1056                     (GtkAttachOptions) (0), 0, 0);
1057   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1058   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1059 
1060 
1061   label_blank = gtk_label_new ("");
1062   gtk_widget_show (label_blank);
1063   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 16, 17,
1064                     (GtkAttachOptions) (GTK_FILL),
1065                     (GtkAttachOptions) (0), 0, 0);
1066   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1067   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1068 
1069   label_all_margin_top = gtk_label_new (_("margin-top"));
1070   gtk_widget_show (label_all_margin_top);
1071   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_margin_top, 0, 1, 17, 18,
1072                     (GtkAttachOptions) (GTK_FILL),
1073                     (GtkAttachOptions) (0), 10, 0);
1074   gtk_label_set_justify (GTK_LABEL (label_all_margin_top), GTK_JUSTIFY_LEFT);
1075   gtk_misc_set_alignment (GTK_MISC (label_all_margin_top), 0, 0.5);
1076 
1077   label_all_margin_left = gtk_label_new (_("margin-left"));
1078   gtk_widget_show (label_all_margin_left);
1079   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_margin_left, 0, 1, 18, 19,
1080                     (GtkAttachOptions) (GTK_FILL),
1081                     (GtkAttachOptions) (0), 10, 0);
1082   gtk_label_set_justify (GTK_LABEL (label_all_margin_left), GTK_JUSTIFY_LEFT);
1083   gtk_misc_set_alignment (GTK_MISC (label_all_margin_left), 0, 0.5);
1084 
1085   entry_all_margin_top = gtk_entry_new ();
1086   gtk_widget_show (entry_all_margin_top);
1087   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_margin_top, 1, 2, 17, 18,
1088                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1089                     (GtkAttachOptions) (0), 5, 0);
1090 
1091   entry_all_margin_left = gtk_entry_new ();
1092   gtk_widget_show (entry_all_margin_left);
1093   gtk_table_attach (GTK_TABLE (table_all_border_right), entry_all_margin_left, 1, 2, 18, 19,
1094                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1095                     (GtkAttachOptions) (0), 5, 0);
1096 
1097   button_all_margin_top = gtk_button_new_with_mnemonic (_("Set"));
1098   gtk_widget_show (button_all_margin_top);
1099   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_margin_top, 2, 3, 17, 18,
1100                     (GtkAttachOptions) (GTK_FILL),
1101                     (GtkAttachOptions) (0), 5, 0);
1102 
1103   button_all_margin_left = gtk_button_new_with_mnemonic (_("Set"));
1104   gtk_widget_show (button_all_margin_left);
1105   gtk_table_attach (GTK_TABLE (table_all_border_right), button_all_margin_left, 2, 3, 18, 19,
1106                     (GtkAttachOptions) (GTK_FILL),
1107                     (GtkAttachOptions) (0), 5, 0);
1108 
1109   label_all_padding_big = gtk_label_new (_("<span size='large'>Padding</span>"));
1110   gtk_widget_show (label_all_padding_big);
1111   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_padding_big, 0, 1, 10, 11,
1112                     (GtkAttachOptions) (GTK_FILL),
1113                     (GtkAttachOptions) (0), 0, 0);
1114   gtk_label_set_use_markup (GTK_LABEL (label_all_padding_big), TRUE);
1115   gtk_label_set_justify (GTK_LABEL (label_all_padding_big), GTK_JUSTIFY_LEFT);
1116   gtk_misc_set_alignment (GTK_MISC (label_all_padding_big), 0, 0.5);
1117 
1118   label_all_margin_big = gtk_label_new (_("<span size='large'>Margin</span>"));
1119   gtk_widget_show (label_all_margin_big);
1120   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_margin_big, 0, 1, 16, 17,
1121                     (GtkAttachOptions) (GTK_FILL),
1122                     (GtkAttachOptions) (0), 0, 0);
1123   gtk_label_set_use_markup (GTK_LABEL (label_all_margin_big), TRUE);
1124   gtk_label_set_justify (GTK_LABEL (label_all_margin_big), GTK_JUSTIFY_LEFT);
1125   gtk_misc_set_alignment (GTK_MISC (label_all_margin_big), 0, 0.5);
1126 
1127   label_all_border_big = gtk_label_new (_("<span size='large'>Border</span>"));
1128   gtk_widget_show (label_all_border_big);
1129   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_border_big, 0, 1, 4, 5,
1130                     (GtkAttachOptions) (GTK_FILL),
1131                     (GtkAttachOptions) (0), 0, 0);
1132   gtk_label_set_use_markup (GTK_LABEL (label_all_border_big), TRUE);
1133   gtk_label_set_justify (GTK_LABEL (label_all_border_big), GTK_JUSTIFY_LEFT);
1134   gtk_misc_set_alignment (GTK_MISC (label_all_border_big), 0, 0.5);
1135 
1136   label_blank = gtk_label_new ("");
1137   gtk_widget_show (label_blank);
1138   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 0, 1, 15, 16,
1139                     (GtkAttachOptions) (GTK_FILL),
1140                     (GtkAttachOptions) (0), 0, 0);
1141   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1142   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1143 
1144   label_blank = gtk_label_new ("");
1145   gtk_widget_show (label_blank);
1146   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 15, 16,
1147                     (GtkAttachOptions) (GTK_FILL),
1148                     (GtkAttachOptions) (0), 0, 0);
1149   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1150   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1151 
1152   label_blank = gtk_label_new ("");
1153   gtk_widget_show (label_blank);
1154   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 15, 16,
1155                     (GtkAttachOptions) (GTK_FILL),
1156                     (GtkAttachOptions) (0), 0, 0);
1157   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1158   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1159 
1160   label_blank = gtk_label_new ("");
1161   gtk_widget_show (label_blank);
1162   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 0, 1, 9, 10,
1163                     (GtkAttachOptions) (GTK_FILL),
1164                     (GtkAttachOptions) (0), 0, 0);
1165   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1166   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1167 
1168   label_blank = gtk_label_new ("");
1169   gtk_widget_show (label_blank);
1170   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 9, 10,
1171                     (GtkAttachOptions) (GTK_FILL),
1172                     (GtkAttachOptions) (0), 0, 0);
1173   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1174   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1175 
1176   label_blank = gtk_label_new ("");
1177   gtk_widget_show (label_blank);
1178   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 9, 10,
1179                     (GtkAttachOptions) (GTK_FILL),
1180                     (GtkAttachOptions) (0), 0, 0);
1181   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1182   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1183 
1184   label_blank = gtk_label_new ("");
1185   gtk_widget_show (label_blank);
1186   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 0, 1, 3, 4,
1187                     (GtkAttachOptions) (GTK_FILL),
1188                     (GtkAttachOptions) (0), 0, 0);
1189   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1190   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1191 
1192   label_blank = gtk_label_new ("");
1193   gtk_widget_show (label_blank);
1194   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 3, 4,
1195                     (GtkAttachOptions) (GTK_FILL),
1196                     (GtkAttachOptions) (0), 0, 0);
1197   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1198   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1199 
1200   label_blank = gtk_label_new ("");
1201   gtk_widget_show (label_blank);
1202   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 3, 4,
1203                     (GtkAttachOptions) (GTK_FILL),
1204                     (GtkAttachOptions) (0), 0, 0);
1205   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1206   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1207 
1208   label_all_box_big = gtk_label_new (_("<span size='large'>Box</span>"));
1209   gtk_widget_show (label_all_box_big);
1210   gtk_table_attach (GTK_TABLE (table_all_border_right), label_all_box_big, 0, 1, 0, 1,
1211                     (GtkAttachOptions) (GTK_FILL),
1212                     (GtkAttachOptions) (0), 0, 0);
1213   gtk_label_set_use_markup (GTK_LABEL (label_all_box_big), TRUE);
1214   gtk_label_set_justify (GTK_LABEL (label_all_box_big), GTK_JUSTIFY_LEFT);
1215   gtk_misc_set_alignment (GTK_MISC (label_all_box_big), 0, 0.5);
1216 
1217   label_blank = gtk_label_new ("");
1218   gtk_widget_show (label_blank);
1219   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 1, 2, 0, 1,
1220                     (GtkAttachOptions) (GTK_FILL),
1221                     (GtkAttachOptions) (0), 0, 0);
1222   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1223   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1224 
1225   label_blank = gtk_label_new ("");
1226   gtk_widget_show (label_blank);
1227   gtk_table_attach (GTK_TABLE (table_all_border_right), label_blank, 2, 3, 0, 1,
1228                     (GtkAttachOptions) (GTK_FILL),
1229                     (GtkAttachOptions) (0), 0, 0);
1230   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1231   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1232 
1233   label_prop = gtk_label_new (_("All properties"));
1234   gtk_widget_show (label_prop);
1235   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 0), label_prop);
1236   gtk_label_set_justify (GTK_LABEL (label_prop), GTK_JUSTIFY_LEFT);
1237 
1238   table_shorthand = gtk_table_new (8, 3, FALSE);
1239   gtk_widget_show (table_shorthand);
1240   gtk_container_add (GTK_CONTAINER (notebook), table_shorthand);
1241   gtk_container_set_border_width (GTK_CONTAINER (table_shorthand), 5);
1242 
1243   entry_short_width = gtk_entry_new ();
1244   gtk_widget_show (entry_short_width);
1245   gtk_table_attach (GTK_TABLE (table_shorthand), entry_short_width, 1, 2, 1, 2,
1246                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1247                     (GtkAttachOptions) (0), 5, 0);
1248 
1249   button_short_width = gtk_button_new_with_mnemonic (_("Set"));
1250   gtk_widget_show (button_short_width);
1251   gtk_table_attach (GTK_TABLE (table_shorthand), button_short_width, 2, 3, 1, 2,
1252                     (GtkAttachOptions) (GTK_FILL),
1253                     (GtkAttachOptions) (0), 5, 0);
1254 
1255   entry_short_height = gtk_entry_new ();
1256   gtk_widget_show (entry_short_height);
1257   gtk_table_attach (GTK_TABLE (table_shorthand), entry_short_height, 1, 2, 2, 3,
1258                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1259                     (GtkAttachOptions) (0), 5, 0);
1260 
1261   entry_short_border = gtk_entry_new ();
1262   gtk_widget_show (entry_short_border);
1263   gtk_table_attach (GTK_TABLE (table_shorthand), entry_short_border, 1, 2, 5, 6,
1264                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1265                     (GtkAttachOptions) (0), 5, 0);
1266 
1267   entry_short_margin = gtk_entry_new ();
1268   gtk_widget_show (entry_short_margin);
1269   gtk_table_attach (GTK_TABLE (table_shorthand), entry_short_margin, 1, 2, 6, 7,
1270                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1271                     (GtkAttachOptions) (0), 5, 0);
1272 
1273   entry_short_padding = gtk_entry_new ();
1274   gtk_widget_show (entry_short_padding);
1275   gtk_table_attach (GTK_TABLE (table_shorthand), entry_short_padding, 1, 2, 7, 8,
1276                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1277                     (GtkAttachOptions) (0), 5, 0);
1278 
1279   button_short_height = gtk_button_new_with_mnemonic (_("Set"));
1280   gtk_widget_show (button_short_height);
1281   gtk_table_attach (GTK_TABLE (table_shorthand), button_short_height, 2, 3, 2, 3,
1282                     (GtkAttachOptions) (GTK_FILL),
1283                     (GtkAttachOptions) (0), 5, 0);
1284 
1285   button_short_border = gtk_button_new_with_mnemonic (_("Set"));
1286   gtk_widget_show (button_short_border);
1287   gtk_table_attach (GTK_TABLE (table_shorthand), button_short_border, 2, 3, 5, 6,
1288                     (GtkAttachOptions) (GTK_FILL),
1289                     (GtkAttachOptions) (0), 5, 0);
1290 
1291   button_short_margin = gtk_button_new_with_mnemonic (_("Set"));
1292   gtk_widget_show (button_short_margin);
1293   gtk_table_attach (GTK_TABLE (table_shorthand), button_short_margin, 2, 3, 6, 7,
1294                     (GtkAttachOptions) (GTK_FILL),
1295                     (GtkAttachOptions) (0), 5, 0);
1296 
1297   button_short_padding = gtk_button_new_with_mnemonic (_("Set"));
1298   gtk_widget_show (button_short_padding);
1299   gtk_table_attach (GTK_TABLE (table_shorthand), button_short_padding, 2, 3, 7, 8,
1300                     (GtkAttachOptions) (GTK_FILL),
1301                     (GtkAttachOptions) (0), 5, 0);
1302 
1303   label_short_box_big = gtk_label_new (_("<span size='large'>Box</span>"));
1304   gtk_widget_show (label_short_box_big);
1305   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_box_big, 0, 1, 0, 1,
1306                     (GtkAttachOptions) (GTK_FILL),
1307                     (GtkAttachOptions) (0), 0, 0);
1308   gtk_label_set_use_markup (GTK_LABEL (label_short_box_big), TRUE);
1309   gtk_label_set_justify (GTK_LABEL (label_short_box_big), GTK_JUSTIFY_LEFT);
1310   gtk_misc_set_alignment (GTK_MISC (label_short_box_big), 0, 0.5);
1311 
1312   label_blank = gtk_label_new ("");
1313   gtk_widget_show (label_blank);
1314   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 1, 2, 0, 1,
1315                     (GtkAttachOptions) (GTK_FILL),
1316                     (GtkAttachOptions) (0), 0, 0);
1317   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1318   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1319 
1320   label_blank = gtk_label_new ("");
1321   gtk_widget_show (label_blank);
1322   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 2, 3, 0, 1,
1323                     (GtkAttachOptions) (GTK_FILL),
1324                     (GtkAttachOptions) (0), 0, 0);
1325   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1326   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1327 
1328   label_blank = gtk_label_new ("");
1329   gtk_widget_show (label_blank);
1330   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 1, 2, 4, 5,
1331                     (GtkAttachOptions) (GTK_FILL),
1332                     (GtkAttachOptions) (0), 0, 0);
1333   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1334   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1335 
1336   label_blank = gtk_label_new ("");
1337   gtk_widget_show (label_blank);
1338   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 2, 3, 4, 5,
1339                     (GtkAttachOptions) (GTK_FILL),
1340                     (GtkAttachOptions) (0), 0, 0);
1341   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1342   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1343 
1344   label_short_width = gtk_label_new (_("width"));
1345   gtk_widget_show (label_short_width);
1346   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_width, 0, 1, 1, 2,
1347                     (GtkAttachOptions) (GTK_FILL),
1348                     (GtkAttachOptions) (0), 10, 0);
1349   gtk_label_set_justify (GTK_LABEL (label_short_width), GTK_JUSTIFY_LEFT);
1350   gtk_misc_set_alignment (GTK_MISC (label_short_width), 0, 0.5);
1351 
1352   label_short_height = gtk_label_new (_("height"));
1353   gtk_widget_show (label_short_height);
1354   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_height, 0, 1, 2, 3,
1355                     (GtkAttachOptions) (GTK_FILL),
1356                     (GtkAttachOptions) (0), 10, 0);
1357   gtk_label_set_justify (GTK_LABEL (label_short_height), GTK_JUSTIFY_LEFT);
1358   gtk_misc_set_alignment (GTK_MISC (label_short_height), 0, 0.5);
1359 
1360   label_short_border = gtk_label_new (_("border"));
1361   gtk_widget_show (label_short_border);
1362   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_border, 0, 1, 5, 6,
1363                     (GtkAttachOptions) (GTK_FILL),
1364                     (GtkAttachOptions) (0), 10, 0);
1365   gtk_label_set_justify (GTK_LABEL (label_short_border), GTK_JUSTIFY_LEFT);
1366   gtk_misc_set_alignment (GTK_MISC (label_short_border), 0, 0.5);
1367 
1368   label_short_margin = gtk_label_new (_("margin"));
1369   gtk_widget_show (label_short_margin);
1370   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_margin, 0, 1, 6, 7,
1371                     (GtkAttachOptions) (GTK_FILL),
1372                     (GtkAttachOptions) (0), 10, 0);
1373   gtk_label_set_justify (GTK_LABEL (label_short_margin), GTK_JUSTIFY_LEFT);
1374   gtk_misc_set_alignment (GTK_MISC (label_short_margin), 0, 0.5);
1375 
1376   label_short_padding = gtk_label_new (_("padding"));
1377   gtk_widget_show (label_short_padding);
1378   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_padding, 0, 1, 7, 8,
1379                     (GtkAttachOptions) (GTK_FILL),
1380                     (GtkAttachOptions) (0), 10, 0);
1381   gtk_label_set_justify (GTK_LABEL (label_short_padding), GTK_JUSTIFY_LEFT);
1382   gtk_misc_set_alignment (GTK_MISC (label_short_padding), 0, 0.5);
1383 
1384   label_short_box_big_prop = gtk_label_new (_("<span size='large'>Box properties</span>"));
1385   gtk_widget_show (label_short_box_big_prop);
1386   gtk_table_attach (GTK_TABLE (table_shorthand), label_short_box_big_prop, 0, 1, 4, 5,
1387                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1388                     (GtkAttachOptions) (0), 0, 0);
1389   gtk_label_set_use_markup (GTK_LABEL (label_short_box_big_prop), TRUE);
1390   gtk_label_set_justify (GTK_LABEL (label_short_box_big_prop), GTK_JUSTIFY_LEFT);
1391   gtk_misc_set_alignment (GTK_MISC (label_short_box_big_prop), 0, 0.5);
1392 
1393   label_blank = gtk_label_new ("");
1394   gtk_widget_show (label_blank);
1395   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 0, 1, 3, 4,
1396                     (GtkAttachOptions) (GTK_FILL),
1397                     (GtkAttachOptions) (0), 0, 0);
1398   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1399   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1400 
1401   label_blank = gtk_label_new ("");
1402   gtk_widget_show (label_blank);
1403   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 1, 2, 3, 4,
1404                     (GtkAttachOptions) (GTK_FILL),
1405                     (GtkAttachOptions) (0), 0, 0);
1406   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1407   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1408 
1409   label_blank = gtk_label_new ("");
1410   gtk_widget_show (label_blank);
1411   gtk_table_attach (GTK_TABLE (table_shorthand), label_blank, 2, 3, 3, 4,
1412                     (GtkAttachOptions) (GTK_FILL),
1413                     (GtkAttachOptions) (0), 0, 0);
1414   gtk_label_set_justify (GTK_LABEL (label_blank), GTK_JUSTIFY_LEFT);
1415   gtk_misc_set_alignment (GTK_MISC (label_blank), 0, 0.5);
1416 
1417   label_shorthand = gtk_label_new (_("Shorthand properties"));
1418   gtk_widget_show (label_shorthand);
1419   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 1), label_shorthand);
1420   gtk_label_set_justify (GTK_LABEL (label_shorthand), GTK_JUSTIFY_LEFT);
1421 
1422   hbox_help = gtk_hbox_new (FALSE, 0);
1423   gtk_widget_show (hbox_help);
1424   gtk_container_add (GTK_CONTAINER (notebook), hbox_help);
1425 
1426   vbox_help = gtk_vbox_new (FALSE, 0);
1427   gtk_widget_show (vbox_help);
1428   gtk_box_pack_start (GTK_BOX (hbox_help), vbox_help, TRUE, TRUE, 0);
1429 
1430   scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1431   gtk_widget_show (scrolledwindow);
1432   gtk_box_pack_start (GTK_BOX (vbox_help), scrolledwindow, TRUE, TRUE, 0);
1433 
1434   textview = gtk_text_view_new ();
1435   gtk_widget_show (textview);
1436   gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
1437   gtk_container_set_border_width (GTK_CONTAINER (textview), 5);
1438   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview), GTK_WRAP_WORD);
1439   gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)),
1440 	_("From: http://www.w3.org/TR/CSS2/box.html\n\nEach box has a content area (e.g., text, an image, etc.) and optional surrounding padding, border, and margin areas; the size of each area is specified by properties defined below. The following diagram shows how these areas relate and the terminology used to refer to pieces of margin, border, and padding.\n\nThe perimeter of each of the four areas (content, padding, border, and margin) is called an \"edge\", so each box has four edges:\n\n- content edge or inner edge:\n    The content edge surrounds the element's rendered content. \n\n- padding edge:\n    The padding edge surrounds the box padding. If the padding has 0 width, the padding edge is the same as the content edge. The padding edge of a box defines the edges of the containing block established by the box. \n\n- border edge:\n    The border edge surrounds the box's border. If the border has 0 width, the border edge is the same as the padding edge. \n\n- margin edge or outer edge:\n    The margin edge surrounds the box margin. If the margin has 0 width, the margin edge is the same as the border edge. "), -1);
1441 
1442   drawingarea = gtk_drawing_area_new();
1443   gtk_widget_show (drawingarea);
1444   gtk_box_pack_start (GTK_BOX (vbox_help), drawingarea, TRUE, TRUE, 0);
1445 
1446   label_help = gtk_label_new (_("Quick help"));
1447   gtk_widget_show (label_help);
1448   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 2), label_help);
1449   gtk_label_set_justify (GTK_LABEL (label_help), GTK_JUSTIFY_LEFT);
1450 
1451   dialog_action_area = GTK_DIALOG (box_wizard)->action_area;
1452   gtk_widget_show (dialog_action_area);
1453   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area), GTK_BUTTONBOX_END);
1454 
1455   cancelbutton = gtk_button_new_from_stock ("gtk-cancel");
1456   gtk_widget_show (cancelbutton);
1457   gtk_dialog_add_action_widget (GTK_DIALOG (box_wizard), cancelbutton, GTK_RESPONSE_CANCEL);
1458   GTK_WIDGET_SET_FLAGS (cancelbutton, GTK_CAN_DEFAULT);
1459 
1460   applybutton = gtk_button_new_from_stock ("gtk-apply");
1461   gtk_widget_show (applybutton);
1462   gtk_dialog_add_action_widget (GTK_DIALOG (box_wizard), applybutton, GTK_RESPONSE_APPLY);
1463   GTK_WIDGET_SET_FLAGS (applybutton, GTK_CAN_DEFAULT);
1464 
1465   okbutton = gtk_button_new_from_stock ("gtk-ok");
1466   gtk_widget_show (okbutton);
1467   gtk_dialog_add_action_widget (GTK_DIALOG (box_wizard), okbutton, GTK_RESPONSE_OK);
1468   GTK_WIDGET_SET_FLAGS (okbutton, GTK_CAN_DEFAULT);
1469 
1470 //
1471   g_signal_connect ((gpointer) drawingarea, "expose_event",
1472                     G_CALLBACK (on_drawingarea_expose_event),
1473                     NULL);
1474 /*
1475   g_signal_connect ((gpointer) box_wizard, "close",
1476                     G_CALLBACK (on_box_wizard_close),
1477                     box_wizard);
1478 */
1479   g_signal_connect ((gpointer) button_all_width, "clicked",
1480                     G_CALLBACK (on_button_all_width_clicked),
1481                     window);
1482   g_signal_connect ((gpointer) button_all_height, "clicked",
1483                     G_CALLBACK (on_button_all_height_clicked),
1484                     window);
1485   g_signal_connect ((gpointer) button_all_border_top, "clicked",
1486                     G_CALLBACK (on_button_all_border_top_clicked),
1487                     window);
1488   g_signal_connect ((gpointer) button_all_border_left, "clicked",
1489                     G_CALLBACK (on_button_all_border_left_clicked),
1490                     window);
1491   g_signal_connect ((gpointer) button_all_border_bottom, "clicked",
1492                     G_CALLBACK (on_button_all_border_bottom_clicked),
1493                     window);
1494   g_signal_connect ((gpointer) button_all_border_right, "clicked",
1495                     G_CALLBACK (on_button_all_border_right_clicked),
1496                     window);
1497   g_signal_connect ((gpointer) button_all_padding_top, "clicked",
1498                     G_CALLBACK (on_button_all_padding_top_clicked),
1499                     window);
1500   g_signal_connect ((gpointer) button_all_padding_left, "clicked",
1501                     G_CALLBACK (on_button_all_padding_left_clicked),
1502                     window);
1503   g_signal_connect ((gpointer) button_all_margin_right, "clicked",
1504                     G_CALLBACK (on_button_all_margin_right_clicked),
1505                     window);
1506   g_signal_connect ((gpointer) button_all_padding_bottom, "clicked",
1507                     G_CALLBACK (on_button_all_padding_bottom_clicked),
1508                     window);
1509   g_signal_connect ((gpointer) button_all_padding_right, "clicked",
1510                     G_CALLBACK (on_button_all_padding_right_clicked),
1511                     window);
1512   g_signal_connect ((gpointer) button_all_margin_bottom, "clicked",
1513                     G_CALLBACK (on_button_all_margin_bottom_clicked),
1514                     window);
1515   g_signal_connect ((gpointer) button_all_margin_top, "clicked",
1516                     G_CALLBACK (on_button_all_margin_top_clicked),
1517                     window);
1518   g_signal_connect ((gpointer) button_all_margin_left, "clicked",
1519                     G_CALLBACK (on_button_all_margin_left_clicked),
1520                     window);
1521   g_signal_connect ((gpointer) button_short_width, "clicked",
1522                     G_CALLBACK (on_button_short_width_clicked),
1523                     window);
1524   g_signal_connect ((gpointer) button_short_height, "clicked",
1525                     G_CALLBACK (on_button_short_height_clicked),
1526                     window);
1527   g_signal_connect ((gpointer) button_short_border, "clicked",
1528                     G_CALLBACK (on_button_short_border_clicked),
1529                     window);
1530   g_signal_connect ((gpointer) button_short_margin, "clicked",
1531                     G_CALLBACK (on_button_short_margin_clicked),
1532                     window);
1533   g_signal_connect ((gpointer) button_short_padding, "clicked",
1534                     G_CALLBACK (on_button_short_padding_clicked),
1535                     window);
1536   g_signal_connect ((gpointer) cancelbutton, "clicked",
1537                     G_CALLBACK (on_box_wizard_cancelbutton_clicked),
1538                     box_wizard);
1539   g_signal_connect ((gpointer) applybutton, "clicked",
1540                     G_CALLBACK (on_box_wizard_applybutton_clicked),
1541                     window);
1542   g_signal_connect ((gpointer) okbutton, "clicked",
1543                     G_CALLBACK (on_box_wizard_okbutton_clicked),
1544                     window);
1545 
1546   /* Store pointers to all widgets, for use by lookup_widget(). */
1547   GLADE_HOOKUP_OBJECT_NO_REF (box_wizard, box_wizard, 			"box_wizard");
1548   GLADE_HOOKUP_OBJECT (box_wizard, notebook, 					"notebook");
1549   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_width, 			"entry_all_width");
1550   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_height, 			"entry_all_height");
1551   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_border_top, 		"entry_all_border_top");
1552   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_border_left, 		"entry_all_border_left");
1553   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_border_bottom, 	"entry_all_border_bottom");
1554   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_border_right, 		"entry_all_border_right");
1555   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_padding_top, 		"entry_all_padding_top");
1556   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_padding_left, 		"entry_all_padding_left");
1557   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_margin_right, 		"entry_all_margin_right");
1558   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_padding_bottom, 	"entry_all_padding_bottom");
1559   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_margin_bottom, 	"entry_all_margin_bottom");
1560   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_padding_right, 	"entry_all_padding_right");
1561   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_margin_top, 		"entry_all_margin_top");
1562   GLADE_HOOKUP_OBJECT (box_wizard, entry_all_margin_left, 		"entry_all_margin_left");
1563   GLADE_HOOKUP_OBJECT (box_wizard, entry_short_width, 			"entry_short_width");
1564   GLADE_HOOKUP_OBJECT (box_wizard, entry_short_height, 			"entry_short_height");
1565   GLADE_HOOKUP_OBJECT (box_wizard, entry_short_border, 			"entry_short_border");
1566   GLADE_HOOKUP_OBJECT (box_wizard, entry_short_margin, 			"entry_short_margin");
1567   GLADE_HOOKUP_OBJECT (box_wizard, entry_short_padding, 		"entry_short_padding");
1568   GLADE_HOOKUP_OBJECT (box_wizard, cancelbutton, 				"cancelbutton");
1569   GLADE_HOOKUP_OBJECT (box_wizard, applybutton, 				"applybutton");
1570   GLADE_HOOKUP_OBJECT (box_wizard, okbutton, 					"okbutton");
1571 
1572   return box_wizard;
1573 }
1574