File: interface.c

package info (click to toggle)
lightlab 0.1-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 492 kB
  • ctags: 207
  • sloc: sh: 2,494; ansic: 1,301; makefile: 138
file content (1273 lines) | stat: -rw-r--r-- 62,030 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
/*
 * DO NOT EDIT THIS FILE - it is generated by Glade.
 */

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>

#include <gnome.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"

static GnomeUIInfo file_menu_uiinfo[] =
{
  {
    GNOME_APP_UI_ITEM, "E_xit",
    NULL,
    (gpointer) on_exit_activate, NULL, NULL,
    GNOME_APP_PIXMAP_NONE, NULL,
    0, (GdkModifierType) 0, NULL
  },
  GNOMEUIINFO_END
};

static GnomeUIInfo help_menu_uiinfo[] =
{
  {
    GNOME_APP_UI_ITEM, "_About...",
    NULL,
    (gpointer) on_about_activate, NULL, NULL,
    GNOME_APP_PIXMAP_NONE, NULL,
    0, (GdkModifierType) 0, NULL
  },
  GNOMEUIINFO_END
};

static GnomeUIInfo menubar_uiinfo[] =
{
  {
    GNOME_APP_UI_SUBTREE, "_File",
    NULL,
    file_menu_uiinfo, NULL, NULL,
    GNOME_APP_PIXMAP_NONE, NULL,
    0, (GdkModifierType) 0, NULL
  },
  {
    GNOME_APP_UI_SUBTREE, "_Help",
    NULL,
    help_menu_uiinfo, NULL, NULL,
    GNOME_APP_PIXMAP_NONE, NULL,
    0, (GdkModifierType) 0, NULL
  },
  GNOMEUIINFO_END
};

GtkWidget*
create_lightlab (void)
{
  GtkWidget *lightlab;
  GtkWidget *outer_vbox;
  GtkWidget *menubar;
  GtkWidget *outer_hbox;
  GtkWidget *notebook1;
  GtkWidget *light_table1;
  GtkWidget *light_top_table1;
  GtkWidget *w_hscale1;
  GtkWidget *z_hscale1;
  GtkWidget *y_hscale1;
  GtkWidget *x_hscale1;
  GtkWidget *w_label1;
  GtkWidget *z_label1;
  GtkWidget *y_label1;
  GtkWidget *x_label1;
  GtkWidget *light_check1;
  GtkWidget *type_notebook1;
  GtkWidget *colorselection_ambient1;
  GtkWidget *ambient_label1;
  GtkWidget *colorselection_diffuse1;
  GtkWidget *diffuse_label1;
  GtkWidget *colorselection_specular1;
  GtkWidget *specular_label1;
  GtkWidget *dummy_label1;
  GtkWidget *hbuttonbox1;
  GtkWidget *reset1;
  GtkWidget *light1_tab;
  GtkWidget *light_table2;
  GtkWidget *light_top_table2;
  GtkWidget *z_hscale2;
  GtkWidget *y_hscale2;
  GtkWidget *x_hscale2;
  GtkWidget *w_label2;
  GtkWidget *z_label2;
  GtkWidget *y_label2;
  GtkWidget *x_label2;
  GtkWidget *light_check2;
  GtkWidget *w_hscale2;
  GtkWidget *type_notebook2;
  GtkWidget *colorselection_ambient2;
  GtkWidget *ambient_label2;
  GtkWidget *colorselection_diffuse2;
  GtkWidget *diffuse_label2;
  GtkWidget *colorselection_specular2;
  GtkWidget *specular_label2;
  GtkWidget *dummy_label2;
  GtkWidget *hbuttonbox2;
  GtkWidget *reset2;
  GtkWidget *light2_tab;
  GtkWidget *light_table3;
  GtkWidget *light_top_table3;
  GtkWidget *w_hscale3;
  GtkWidget *z_hscale3;
  GtkWidget *y_hscale3;
  GtkWidget *x_hscale3;
  GtkWidget *w_label3;
  GtkWidget *z_label3;
  GtkWidget *y_label3;
  GtkWidget *x_label3;
  GtkWidget *light_check3;
  GtkWidget *type_notebook3;
  GtkWidget *colorselection_ambient3;
  GtkWidget *ambient_label3;
  GtkWidget *colorselection_diffuse3;
  GtkWidget *diffuse_label3;
  GtkWidget *colorselection_specular3;
  GtkWidget *specular_label3;
  GtkWidget *dummy_label3;
  GtkWidget *hbuttonbox3;
  GtkWidget *reset3;
  GtkWidget *light3_tab;
  GtkWidget *object_table4;
  GtkWidget *object_top_table4;
  GtkWidget *object_render_menu4;
  GtkWidget *object_render_menu4_menu;
  GtkWidget *glade_menuitem;
  GtkWidget *shiny_label4;
  GtkWidget *dummy_label4;
  GtkWidget *shininess_hscale4;
  GtkWidget *object_type_menu4;
  GtkWidget *object_type_menu4_menu;
  GtkWidget *object_texture_menu4;
  GtkWidget *object_texture_menu4_menu;
  GtkWidget *type_notebook4;
  GtkWidget *colorselection_ambient4;
  GtkWidget *ambient_label4;
  GtkWidget *colorselection_diffuse4;
  GtkWidget *diffuse_label4;
  GtkWidget *colorselection_specular4;
  GtkWidget *specular_label4;
  GtkWidget *dummy_label5;
  GtkWidget *hbuttonbox4;
  GtkWidget *reset4;
  GtkWidget *light_label4;
  GtkWidget *gl_frame;
  GtkWidget *gl_area;
  GtkTooltips *tooltips;

  tooltips = gtk_tooltips_new ();

  lightlab = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_name (lightlab, "lightlab");
  gtk_object_set_data (GTK_OBJECT (lightlab), "lightlab", lightlab);
  gtk_window_set_title (GTK_WINDOW (lightlab), "Light Lab");
  gtk_window_set_wmclass (GTK_WINDOW (lightlab), "lightlab", "LightLab");

  outer_vbox = gtk_vbox_new (FALSE, 0);
  gtk_widget_set_name (outer_vbox, "outer_vbox");
  gtk_widget_ref (outer_vbox);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "outer_vbox", outer_vbox,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (outer_vbox);
  gtk_container_add (GTK_CONTAINER (lightlab), outer_vbox);

  menubar = gtk_menu_bar_new ();
  gtk_widget_set_name (menubar, "menubar");
  gtk_widget_ref (menubar);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "menubar", menubar,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (menubar);
  gtk_box_pack_start (GTK_BOX (outer_vbox), menubar, FALSE, FALSE, 0);
  gnome_app_fill_menu (GTK_MENU_SHELL (menubar), menubar_uiinfo,
                       NULL, FALSE, 0);

  gtk_widget_set_name (menubar_uiinfo[0].widget, "file");
  gtk_widget_ref (menubar_uiinfo[0].widget);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "file",
                            menubar_uiinfo[0].widget,
                            (GtkDestroyNotify) gtk_widget_unref);

  gtk_widget_set_name (file_menu_uiinfo[0].widget, "exit");
  gtk_widget_ref (file_menu_uiinfo[0].widget);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "exit",
                            file_menu_uiinfo[0].widget,
                            (GtkDestroyNotify) gtk_widget_unref);

  gtk_widget_set_name (menubar_uiinfo[1].widget, "help");
  gtk_widget_ref (menubar_uiinfo[1].widget);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "help",
                            menubar_uiinfo[1].widget,
                            (GtkDestroyNotify) gtk_widget_unref);

  gtk_widget_set_name (help_menu_uiinfo[0].widget, "about");
  gtk_widget_ref (help_menu_uiinfo[0].widget);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "about",
                            help_menu_uiinfo[0].widget,
                            (GtkDestroyNotify) gtk_widget_unref);

  outer_hbox = gtk_hbox_new (FALSE, 0);
  gtk_widget_set_name (outer_hbox, "outer_hbox");
  gtk_widget_ref (outer_hbox);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "outer_hbox", outer_hbox,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (outer_hbox);
  gtk_box_pack_start (GTK_BOX (outer_vbox), outer_hbox, TRUE, TRUE, 0);

  notebook1 = gtk_notebook_new ();
  gtk_widget_set_name (notebook1, "notebook1");
  gtk_widget_ref (notebook1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "notebook1", notebook1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (notebook1);
  gtk_box_pack_start (GTK_BOX (outer_hbox), notebook1, FALSE, FALSE, 0);
  gtk_container_set_border_width (GTK_CONTAINER (notebook1), 4);

  light_table1 = gtk_table_new (4, 1, FALSE);
  gtk_widget_set_name (light_table1, "light_table1");
  gtk_widget_ref (light_table1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_table1", light_table1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_table1);
  gtk_container_add (GTK_CONTAINER (notebook1), light_table1);
  gtk_container_set_border_width (GTK_CONTAINER (light_table1), 12);
  gtk_table_set_row_spacings (GTK_TABLE (light_table1), 12);

  light_top_table1 = gtk_table_new (5, 3, FALSE);
  gtk_widget_set_name (light_top_table1, "light_top_table1");
  gtk_widget_ref (light_top_table1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_top_table1", light_top_table1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_top_table1);
  gtk_table_attach (GTK_TABLE (light_table1), light_top_table1, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  w_hscale1 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (w_hscale1, "w_hscale1");
  gtk_widget_ref (w_hscale1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "w_hscale1", w_hscale1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (w_hscale1);
  gtk_table_attach (GTK_TABLE (light_top_table1), w_hscale1, 2, 3, 4, 5,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (w_hscale1), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (w_hscale1), 2);
  gtk_range_set_update_policy (GTK_RANGE (w_hscale1), GTK_UPDATE_DISCONTINUOUS);

  z_hscale1 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (z_hscale1, "z_hscale1");
  gtk_widget_ref (z_hscale1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "z_hscale1", z_hscale1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (z_hscale1);
  gtk_table_attach (GTK_TABLE (light_top_table1), z_hscale1, 2, 3, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (z_hscale1), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (z_hscale1), 2);
  gtk_range_set_update_policy (GTK_RANGE (z_hscale1), GTK_UPDATE_DISCONTINUOUS);

  y_hscale1 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (-1, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (y_hscale1, "y_hscale1");
  gtk_widget_ref (y_hscale1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "y_hscale1", y_hscale1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (y_hscale1);
  gtk_table_attach (GTK_TABLE (light_top_table1), y_hscale1, 2, 3, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (y_hscale1), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (y_hscale1), 2);
  gtk_range_set_update_policy (GTK_RANGE (y_hscale1), GTK_UPDATE_DISCONTINUOUS);

  x_hscale1 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (-1, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (x_hscale1, "x_hscale1");
  gtk_widget_ref (x_hscale1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "x_hscale1", x_hscale1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (x_hscale1);
  gtk_table_attach (GTK_TABLE (light_top_table1), x_hscale1, 2, 3, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (x_hscale1), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (x_hscale1), 2);
  gtk_range_set_update_policy (GTK_RANGE (x_hscale1), GTK_UPDATE_DISCONTINUOUS);

  w_label1 = gtk_label_new ("Divisor");
  gtk_widget_set_name (w_label1, "w_label1");
  gtk_widget_ref (w_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "w_label1", w_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (w_label1);
  gtk_table_attach (GTK_TABLE (light_top_table1), w_label1, 1, 2, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (w_label1), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (w_label1), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (w_label1), 4, 0);

  z_label1 = gtk_label_new ("Z");
  gtk_widget_set_name (z_label1, "z_label1");
  gtk_widget_ref (z_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "z_label1", z_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (z_label1);
  gtk_table_attach (GTK_TABLE (light_top_table1), z_label1, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (z_label1), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (z_label1), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (z_label1), 4, 0);

  y_label1 = gtk_label_new ("Y");
  gtk_widget_set_name (y_label1, "y_label1");
  gtk_widget_ref (y_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "y_label1", y_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (y_label1);
  gtk_table_attach (GTK_TABLE (light_top_table1), y_label1, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (y_label1), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (y_label1), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (y_label1), 4, 0);

  x_label1 = gtk_label_new ("X");
  gtk_widget_set_name (x_label1, "x_label1");
  gtk_widget_ref (x_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "x_label1", x_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (x_label1);
  gtk_table_attach (GTK_TABLE (light_top_table1), x_label1, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (x_label1), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (x_label1), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (x_label1), 4, 0);

  light_check1 = gtk_check_button_new_with_label ("Enabled");
  gtk_widget_set_name (light_check1, "light_check1");
  gtk_widget_ref (light_check1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_check1", light_check1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_check1);
  gtk_table_attach (GTK_TABLE (light_top_table1), light_check1, 0, 2, 0, 1,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 2, 0);
  gtk_tooltips_set_tip (tooltips, light_check1, "Whether this light is in use.", NULL);
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (light_check1), TRUE);

  type_notebook1 = gtk_notebook_new ();
  gtk_widget_set_name (type_notebook1, "type_notebook1");
  gtk_widget_ref (type_notebook1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "type_notebook1", type_notebook1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (type_notebook1);
  gtk_table_attach (GTK_TABLE (light_table1), type_notebook1, 0, 1, 1, 2,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 0, 0);

  colorselection_ambient1 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_ambient1, "colorselection_ambient1");
  gtk_widget_ref (colorselection_ambient1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_ambient1", colorselection_ambient1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_ambient1);
  gtk_container_add (GTK_CONTAINER (type_notebook1), colorselection_ambient1);

  ambient_label1 = gtk_label_new ("Ambient");
  gtk_widget_set_name (ambient_label1, "ambient_label1");
  gtk_widget_ref (ambient_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "ambient_label1", ambient_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (ambient_label1);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook1), 0), ambient_label1);

  colorselection_diffuse1 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_diffuse1, "colorselection_diffuse1");
  gtk_widget_ref (colorselection_diffuse1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_diffuse1", colorselection_diffuse1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_diffuse1);
  gtk_container_add (GTK_CONTAINER (type_notebook1), colorselection_diffuse1);

  diffuse_label1 = gtk_label_new ("Diffuse");
  gtk_widget_set_name (diffuse_label1, "diffuse_label1");
  gtk_widget_ref (diffuse_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "diffuse_label1", diffuse_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (diffuse_label1);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook1), 1), diffuse_label1);

  colorselection_specular1 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_specular1, "colorselection_specular1");
  gtk_widget_ref (colorselection_specular1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_specular1", colorselection_specular1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_specular1);
  gtk_container_add (GTK_CONTAINER (type_notebook1), colorselection_specular1);

  specular_label1 = gtk_label_new ("Specular");
  gtk_widget_set_name (specular_label1, "specular_label1");
  gtk_widget_ref (specular_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "specular_label1", specular_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (specular_label1);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook1), 2), specular_label1);

  dummy_label1 = gtk_label_new ("");
  gtk_widget_set_name (dummy_label1, "dummy_label1");
  gtk_widget_ref (dummy_label1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "dummy_label1", dummy_label1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (dummy_label1);
  gtk_table_attach (GTK_TABLE (light_table1), dummy_label1, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (dummy_label1), 0, 0.5);

  hbuttonbox1 = gtk_hbutton_box_new ();
  gtk_widget_set_name (hbuttonbox1, "hbuttonbox1");
  gtk_widget_ref (hbuttonbox1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "hbuttonbox1", hbuttonbox1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (hbuttonbox1);
  gtk_table_attach (GTK_TABLE (light_table1), hbuttonbox1, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END);

  reset1 = gtk_button_new_with_label ("Reset Light 0 to Defaults");
  gtk_widget_set_name (reset1, "reset1");
  gtk_widget_ref (reset1);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "reset1", reset1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (reset1);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), reset1);
  GTK_WIDGET_SET_FLAGS (reset1, GTK_CAN_DEFAULT);

  light1_tab = gtk_label_new ("Light 0");
  gtk_widget_set_name (light1_tab, "light1_tab");
  gtk_widget_ref (light1_tab);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light1_tab", light1_tab,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light1_tab);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), light1_tab);
  gtk_misc_set_padding (GTK_MISC (light1_tab), 8, 0);

  light_table2 = gtk_table_new (4, 1, FALSE);
  gtk_widget_set_name (light_table2, "light_table2");
  gtk_widget_ref (light_table2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_table2", light_table2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_table2);
  gtk_container_add (GTK_CONTAINER (notebook1), light_table2);
  gtk_container_set_border_width (GTK_CONTAINER (light_table2), 12);
  gtk_table_set_row_spacings (GTK_TABLE (light_table2), 12);

  light_top_table2 = gtk_table_new (5, 3, FALSE);
  gtk_widget_set_name (light_top_table2, "light_top_table2");
  gtk_widget_ref (light_top_table2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_top_table2", light_top_table2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_top_table2);
  gtk_table_attach (GTK_TABLE (light_table2), light_top_table2, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  z_hscale2 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (z_hscale2, "z_hscale2");
  gtk_widget_ref (z_hscale2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "z_hscale2", z_hscale2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (z_hscale2);
  gtk_table_attach (GTK_TABLE (light_top_table2), z_hscale2, 2, 3, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (z_hscale2), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (z_hscale2), 2);
  gtk_range_set_update_policy (GTK_RANGE (z_hscale2), GTK_UPDATE_DISCONTINUOUS);

  y_hscale2 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (y_hscale2, "y_hscale2");
  gtk_widget_ref (y_hscale2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "y_hscale2", y_hscale2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (y_hscale2);
  gtk_table_attach (GTK_TABLE (light_top_table2), y_hscale2, 2, 3, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (y_hscale2), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (y_hscale2), 2);
  gtk_range_set_update_policy (GTK_RANGE (y_hscale2), GTK_UPDATE_DISCONTINUOUS);

  x_hscale2 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (-1, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (x_hscale2, "x_hscale2");
  gtk_widget_ref (x_hscale2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "x_hscale2", x_hscale2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (x_hscale2);
  gtk_table_attach (GTK_TABLE (light_top_table2), x_hscale2, 2, 3, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (x_hscale2), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (x_hscale2), 2);
  gtk_range_set_update_policy (GTK_RANGE (x_hscale2), GTK_UPDATE_DISCONTINUOUS);

  w_label2 = gtk_label_new ("Divisor");
  gtk_widget_set_name (w_label2, "w_label2");
  gtk_widget_ref (w_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "w_label2", w_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (w_label2);
  gtk_table_attach (GTK_TABLE (light_top_table2), w_label2, 1, 2, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (w_label2), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (w_label2), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (w_label2), 4, 0);

  z_label2 = gtk_label_new ("Z");
  gtk_widget_set_name (z_label2, "z_label2");
  gtk_widget_ref (z_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "z_label2", z_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (z_label2);
  gtk_table_attach (GTK_TABLE (light_top_table2), z_label2, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (z_label2), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (z_label2), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (z_label2), 4, 0);

  y_label2 = gtk_label_new ("Y");
  gtk_widget_set_name (y_label2, "y_label2");
  gtk_widget_ref (y_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "y_label2", y_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (y_label2);
  gtk_table_attach (GTK_TABLE (light_top_table2), y_label2, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (y_label2), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (y_label2), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (y_label2), 4, 0);

  x_label2 = gtk_label_new ("X");
  gtk_widget_set_name (x_label2, "x_label2");
  gtk_widget_ref (x_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "x_label2", x_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (x_label2);
  gtk_table_attach (GTK_TABLE (light_top_table2), x_label2, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (x_label2), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (x_label2), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (x_label2), 4, 0);

  light_check2 = gtk_check_button_new_with_label ("Enabled");
  gtk_widget_set_name (light_check2, "light_check2");
  gtk_widget_ref (light_check2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_check2", light_check2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_check2);
  gtk_table_attach (GTK_TABLE (light_top_table2), light_check2, 0, 2, 0, 1,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 2, 0);
  gtk_tooltips_set_tip (tooltips, light_check2, "Whether this light is in use.", NULL);

  w_hscale2 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (w_hscale2, "w_hscale2");
  gtk_widget_ref (w_hscale2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "w_hscale2", w_hscale2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (w_hscale2);
  gtk_table_attach (GTK_TABLE (light_top_table2), w_hscale2, 2, 3, 4, 5,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (w_hscale2), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (w_hscale2), 2);
  gtk_range_set_update_policy (GTK_RANGE (w_hscale2), GTK_UPDATE_DISCONTINUOUS);

  type_notebook2 = gtk_notebook_new ();
  gtk_widget_set_name (type_notebook2, "type_notebook2");
  gtk_widget_ref (type_notebook2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "type_notebook2", type_notebook2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (type_notebook2);
  gtk_table_attach (GTK_TABLE (light_table2), type_notebook2, 0, 1, 1, 2,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 0, 0);

  colorselection_ambient2 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_ambient2, "colorselection_ambient2");
  gtk_widget_ref (colorselection_ambient2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_ambient2", colorselection_ambient2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_ambient2);
  gtk_container_add (GTK_CONTAINER (type_notebook2), colorselection_ambient2);

  ambient_label2 = gtk_label_new ("Ambient");
  gtk_widget_set_name (ambient_label2, "ambient_label2");
  gtk_widget_ref (ambient_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "ambient_label2", ambient_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (ambient_label2);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook2), 0), ambient_label2);

  colorselection_diffuse2 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_diffuse2, "colorselection_diffuse2");
  gtk_widget_ref (colorselection_diffuse2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_diffuse2", colorselection_diffuse2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_diffuse2);
  gtk_container_add (GTK_CONTAINER (type_notebook2), colorselection_diffuse2);

  diffuse_label2 = gtk_label_new ("Diffuse");
  gtk_widget_set_name (diffuse_label2, "diffuse_label2");
  gtk_widget_ref (diffuse_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "diffuse_label2", diffuse_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (diffuse_label2);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook2), 1), diffuse_label2);

  colorselection_specular2 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_specular2, "colorselection_specular2");
  gtk_widget_ref (colorselection_specular2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_specular2", colorselection_specular2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_specular2);
  gtk_container_add (GTK_CONTAINER (type_notebook2), colorselection_specular2);

  specular_label2 = gtk_label_new ("Specular");
  gtk_widget_set_name (specular_label2, "specular_label2");
  gtk_widget_ref (specular_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "specular_label2", specular_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (specular_label2);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook2), 2), specular_label2);

  dummy_label2 = gtk_label_new ("");
  gtk_widget_set_name (dummy_label2, "dummy_label2");
  gtk_widget_ref (dummy_label2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "dummy_label2", dummy_label2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (dummy_label2);
  gtk_table_attach (GTK_TABLE (light_table2), dummy_label2, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (dummy_label2), 0, 0.5);

  hbuttonbox2 = gtk_hbutton_box_new ();
  gtk_widget_set_name (hbuttonbox2, "hbuttonbox2");
  gtk_widget_ref (hbuttonbox2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "hbuttonbox2", hbuttonbox2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (hbuttonbox2);
  gtk_table_attach (GTK_TABLE (light_table2), hbuttonbox2, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END);

  reset2 = gtk_button_new_with_label ("Reset Light 1 to Defaults");
  gtk_widget_set_name (reset2, "reset2");
  gtk_widget_ref (reset2);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "reset2", reset2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (reset2);
  gtk_container_add (GTK_CONTAINER (hbuttonbox2), reset2);
  GTK_WIDGET_SET_FLAGS (reset2, GTK_CAN_DEFAULT);

  light2_tab = gtk_label_new ("Light 1");
  gtk_widget_set_name (light2_tab, "light2_tab");
  gtk_widget_ref (light2_tab);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light2_tab", light2_tab,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light2_tab);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), light2_tab);
  gtk_misc_set_padding (GTK_MISC (light2_tab), 8, 0);

  light_table3 = gtk_table_new (4, 1, FALSE);
  gtk_widget_set_name (light_table3, "light_table3");
  gtk_widget_ref (light_table3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_table3", light_table3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_table3);
  gtk_container_add (GTK_CONTAINER (notebook1), light_table3);
  gtk_container_set_border_width (GTK_CONTAINER (light_table3), 12);
  gtk_table_set_row_spacings (GTK_TABLE (light_table3), 12);

  light_top_table3 = gtk_table_new (5, 3, FALSE);
  gtk_widget_set_name (light_top_table3, "light_top_table3");
  gtk_widget_ref (light_top_table3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_top_table3", light_top_table3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_top_table3);
  gtk_table_attach (GTK_TABLE (light_table3), light_top_table3, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  w_hscale3 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (w_hscale3, "w_hscale3");
  gtk_widget_ref (w_hscale3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "w_hscale3", w_hscale3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (w_hscale3);
  gtk_table_attach (GTK_TABLE (light_top_table3), w_hscale3, 2, 3, 4, 5,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (w_hscale3), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (w_hscale3), 2);

  z_hscale3 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (z_hscale3, "z_hscale3");
  gtk_widget_ref (z_hscale3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "z_hscale3", z_hscale3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (z_hscale3);
  gtk_table_attach (GTK_TABLE (light_top_table3), z_hscale3, 2, 3, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (z_hscale3), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (z_hscale3), 2);
  gtk_range_set_update_policy (GTK_RANGE (z_hscale3), GTK_UPDATE_DISCONTINUOUS);

  y_hscale3 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (y_hscale3, "y_hscale3");
  gtk_widget_ref (y_hscale3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "y_hscale3", y_hscale3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (y_hscale3);
  gtk_table_attach (GTK_TABLE (light_top_table3), y_hscale3, 2, 3, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (y_hscale3), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (y_hscale3), 2);
  gtk_range_set_update_policy (GTK_RANGE (y_hscale3), GTK_UPDATE_DISCONTINUOUS);

  x_hscale3 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (-1, -1, 1, 0.2, 0.05, 0)));
  gtk_widget_set_name (x_hscale3, "x_hscale3");
  gtk_widget_ref (x_hscale3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "x_hscale3", x_hscale3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (x_hscale3);
  gtk_table_attach (GTK_TABLE (light_top_table3), x_hscale3, 2, 3, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (x_hscale3), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (x_hscale3), 2);
  gtk_range_set_update_policy (GTK_RANGE (x_hscale3), GTK_UPDATE_DISCONTINUOUS);

  w_label3 = gtk_label_new ("Divisor");
  gtk_widget_set_name (w_label3, "w_label3");
  gtk_widget_ref (w_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "w_label3", w_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (w_label3);
  gtk_table_attach (GTK_TABLE (light_top_table3), w_label3, 1, 2, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (w_label3), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (w_label3), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (w_label3), 4, 0);

  z_label3 = gtk_label_new ("Z");
  gtk_widget_set_name (z_label3, "z_label3");
  gtk_widget_ref (z_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "z_label3", z_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (z_label3);
  gtk_table_attach (GTK_TABLE (light_top_table3), z_label3, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (z_label3), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (z_label3), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (z_label3), 4, 0);

  y_label3 = gtk_label_new ("Y");
  gtk_widget_set_name (y_label3, "y_label3");
  gtk_widget_ref (y_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "y_label3", y_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (y_label3);
  gtk_table_attach (GTK_TABLE (light_top_table3), y_label3, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (y_label3), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (y_label3), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (y_label3), 4, 0);

  x_label3 = gtk_label_new ("X");
  gtk_widget_set_name (x_label3, "x_label3");
  gtk_widget_ref (x_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "x_label3", x_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (x_label3);
  gtk_table_attach (GTK_TABLE (light_top_table3), x_label3, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_label_set_justify (GTK_LABEL (x_label3), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (x_label3), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (x_label3), 4, 0);

  light_check3 = gtk_check_button_new_with_label ("Enabled");
  gtk_widget_set_name (light_check3, "light_check3");
  gtk_widget_ref (light_check3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_check3", light_check3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_check3);
  gtk_table_attach (GTK_TABLE (light_top_table3), light_check3, 0, 2, 0, 1,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 2, 0);
  gtk_tooltips_set_tip (tooltips, light_check3, "Whether this light is in use.", NULL);

  type_notebook3 = gtk_notebook_new ();
  gtk_widget_set_name (type_notebook3, "type_notebook3");
  gtk_widget_ref (type_notebook3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "type_notebook3", type_notebook3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (type_notebook3);
  gtk_table_attach (GTK_TABLE (light_table3), type_notebook3, 0, 1, 1, 2,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 0, 0);

  colorselection_ambient3 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_ambient3, "colorselection_ambient3");
  gtk_widget_ref (colorselection_ambient3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_ambient3", colorselection_ambient3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_ambient3);
  gtk_container_add (GTK_CONTAINER (type_notebook3), colorselection_ambient3);

  ambient_label3 = gtk_label_new ("Ambient");
  gtk_widget_set_name (ambient_label3, "ambient_label3");
  gtk_widget_ref (ambient_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "ambient_label3", ambient_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (ambient_label3);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook3), 0), ambient_label3);

  colorselection_diffuse3 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_diffuse3, "colorselection_diffuse3");
  gtk_widget_ref (colorselection_diffuse3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_diffuse3", colorselection_diffuse3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_diffuse3);
  gtk_container_add (GTK_CONTAINER (type_notebook3), colorselection_diffuse3);

  diffuse_label3 = gtk_label_new ("Diffuse");
  gtk_widget_set_name (diffuse_label3, "diffuse_label3");
  gtk_widget_ref (diffuse_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "diffuse_label3", diffuse_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (diffuse_label3);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook3), 1), diffuse_label3);

  colorselection_specular3 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_specular3, "colorselection_specular3");
  gtk_widget_ref (colorselection_specular3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_specular3", colorselection_specular3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_specular3);
  gtk_container_add (GTK_CONTAINER (type_notebook3), colorselection_specular3);

  specular_label3 = gtk_label_new ("Specular");
  gtk_widget_set_name (specular_label3, "specular_label3");
  gtk_widget_ref (specular_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "specular_label3", specular_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (specular_label3);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook3), 2), specular_label3);

  dummy_label3 = gtk_label_new ("");
  gtk_widget_set_name (dummy_label3, "dummy_label3");
  gtk_widget_ref (dummy_label3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "dummy_label3", dummy_label3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (dummy_label3);
  gtk_table_attach (GTK_TABLE (light_table3), dummy_label3, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (dummy_label3), 0, 0.5);

  hbuttonbox3 = gtk_hbutton_box_new ();
  gtk_widget_set_name (hbuttonbox3, "hbuttonbox3");
  gtk_widget_ref (hbuttonbox3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "hbuttonbox3", hbuttonbox3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (hbuttonbox3);
  gtk_table_attach (GTK_TABLE (light_table3), hbuttonbox3, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox3), GTK_BUTTONBOX_END);

  reset3 = gtk_button_new_with_label ("Reset Light 2 to Defaults");
  gtk_widget_set_name (reset3, "reset3");
  gtk_widget_ref (reset3);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "reset3", reset3,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (reset3);
  gtk_container_add (GTK_CONTAINER (hbuttonbox3), reset3);
  GTK_WIDGET_SET_FLAGS (reset3, GTK_CAN_DEFAULT);

  light3_tab = gtk_label_new ("Light 2");
  gtk_widget_set_name (light3_tab, "light3_tab");
  gtk_widget_ref (light3_tab);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light3_tab", light3_tab,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light3_tab);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), light3_tab);
  gtk_misc_set_padding (GTK_MISC (light3_tab), 8, 0);

  object_table4 = gtk_table_new (4, 1, FALSE);
  gtk_widget_set_name (object_table4, "object_table4");
  gtk_widget_ref (object_table4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "object_table4", object_table4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (object_table4);
  gtk_container_add (GTK_CONTAINER (notebook1), object_table4);
  gtk_container_set_border_width (GTK_CONTAINER (object_table4), 12);
  gtk_table_set_row_spacings (GTK_TABLE (object_table4), 12);

  object_top_table4 = gtk_table_new (2, 4, FALSE);
  gtk_widget_set_name (object_top_table4, "object_top_table4");
  gtk_widget_ref (object_top_table4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "object_top_table4", object_top_table4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (object_top_table4);
  gtk_table_attach (GTK_TABLE (object_table4), object_top_table4, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  object_render_menu4 = gtk_option_menu_new ();
  gtk_widget_set_name (object_render_menu4, "object_render_menu4");
  gtk_widget_ref (object_render_menu4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "object_render_menu4", object_render_menu4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (object_render_menu4);
  gtk_table_attach (GTK_TABLE (object_top_table4), object_render_menu4, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_tooltips_set_tip (tooltips, object_render_menu4, "How to render the object's polygons.", NULL);
  object_render_menu4_menu = gtk_menu_new ();
  glade_menuitem = gtk_menu_item_new_with_label ("Smooth");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_render_menu4_menu), glade_menuitem);
  glade_menuitem = gtk_menu_item_new_with_label ("Faceted");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_render_menu4_menu), glade_menuitem);
  glade_menuitem = gtk_menu_item_new_with_label ("Wireframe");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_render_menu4_menu), glade_menuitem);
  gtk_option_menu_set_menu (GTK_OPTION_MENU (object_render_menu4), object_render_menu4_menu);

  shiny_label4 = gtk_label_new ("Shininess");
  gtk_widget_set_name (shiny_label4, "shiny_label4");
  gtk_widget_ref (shiny_label4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "shiny_label4", shiny_label4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (shiny_label4);
  gtk_table_attach (GTK_TABLE (object_top_table4), shiny_label4, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 8);
  gtk_label_set_justify (GTK_LABEL (shiny_label4), GTK_JUSTIFY_RIGHT);
  gtk_misc_set_alignment (GTK_MISC (shiny_label4), 1, 0.5);
  gtk_misc_set_padding (GTK_MISC (shiny_label4), 4, 0);

  dummy_label4 = gtk_label_new ("");
  gtk_widget_set_name (dummy_label4, "dummy_label4");
  gtk_widget_ref (dummy_label4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "dummy_label4", dummy_label4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (dummy_label4);
  gtk_table_attach (GTK_TABLE (object_top_table4), dummy_label4, 3, 4, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (dummy_label4), 0, 0.5);

  shininess_hscale4 = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 128, 10, 1, 0)));
  gtk_widget_set_name (shininess_hscale4, "shininess_hscale4");
  gtk_widget_ref (shininess_hscale4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "shininess_hscale4", shininess_hscale4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (shininess_hscale4);
  gtk_table_attach (GTK_TABLE (object_top_table4), shininess_hscale4, 1, 4, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_scale_set_value_pos (GTK_SCALE (shininess_hscale4), GTK_POS_LEFT);
  gtk_scale_set_digits (GTK_SCALE (shininess_hscale4), 0);
  gtk_range_set_update_policy (GTK_RANGE (shininess_hscale4), GTK_UPDATE_DISCONTINUOUS);

  object_type_menu4 = gtk_option_menu_new ();
  gtk_widget_set_name (object_type_menu4, "object_type_menu4");
  gtk_widget_ref (object_type_menu4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "object_type_menu4", object_type_menu4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (object_type_menu4);
  gtk_table_attach (GTK_TABLE (object_top_table4), object_type_menu4, 2, 3, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_tooltips_set_tip (tooltips, object_type_menu4, "Which object to display.", NULL);
  object_type_menu4_menu = gtk_menu_new ();
  glade_menuitem = gtk_menu_item_new_with_label ("Teapot");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_type_menu4_menu), glade_menuitem);
  glade_menuitem = gtk_menu_item_new_with_label ("Cube");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_type_menu4_menu), glade_menuitem);
  glade_menuitem = gtk_menu_item_new_with_label ("Sphere");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_type_menu4_menu), glade_menuitem);
  gtk_option_menu_set_menu (GTK_OPTION_MENU (object_type_menu4), object_type_menu4_menu);

  object_texture_menu4 = gtk_option_menu_new ();
  gtk_widget_set_name (object_texture_menu4, "object_texture_menu4");
  gtk_widget_ref (object_texture_menu4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "object_texture_menu4", object_texture_menu4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (object_texture_menu4);
  gtk_table_attach (GTK_TABLE (object_top_table4), object_texture_menu4, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, object_texture_menu4, "How to render the object's surface.", NULL);
  object_texture_menu4_menu = gtk_menu_new ();
  glade_menuitem = gtk_menu_item_new_with_label ("Solid");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_texture_menu4_menu), glade_menuitem);
  glade_menuitem = gtk_menu_item_new_with_label ("Textured");
  gtk_widget_show (glade_menuitem);
  gtk_menu_append (GTK_MENU (object_texture_menu4_menu), glade_menuitem);
  gtk_option_menu_set_menu (GTK_OPTION_MENU (object_texture_menu4), object_texture_menu4_menu);

  type_notebook4 = gtk_notebook_new ();
  gtk_widget_set_name (type_notebook4, "type_notebook4");
  gtk_widget_ref (type_notebook4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "type_notebook4", type_notebook4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (type_notebook4);
  gtk_table_attach (GTK_TABLE (object_table4), type_notebook4, 0, 1, 1, 2,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 0, 0);

  colorselection_ambient4 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_ambient4, "colorselection_ambient4");
  gtk_widget_ref (colorselection_ambient4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_ambient4", colorselection_ambient4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_ambient4);
  gtk_container_add (GTK_CONTAINER (type_notebook4), colorselection_ambient4);

  ambient_label4 = gtk_label_new ("Ambient");
  gtk_widget_set_name (ambient_label4, "ambient_label4");
  gtk_widget_ref (ambient_label4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "ambient_label4", ambient_label4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (ambient_label4);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook4), 0), ambient_label4);

  colorselection_diffuse4 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_diffuse4, "colorselection_diffuse4");
  gtk_widget_ref (colorselection_diffuse4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_diffuse4", colorselection_diffuse4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_diffuse4);
  gtk_container_add (GTK_CONTAINER (type_notebook4), colorselection_diffuse4);

  diffuse_label4 = gtk_label_new ("Diffuse");
  gtk_widget_set_name (diffuse_label4, "diffuse_label4");
  gtk_widget_ref (diffuse_label4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "diffuse_label4", diffuse_label4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (diffuse_label4);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook4), 1), diffuse_label4);

  colorselection_specular4 = gtk_color_selection_new ();
  gtk_widget_set_name (colorselection_specular4, "colorselection_specular4");
  gtk_widget_ref (colorselection_specular4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "colorselection_specular4", colorselection_specular4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (colorselection_specular4);
  gtk_container_add (GTK_CONTAINER (type_notebook4), colorselection_specular4);

  specular_label4 = gtk_label_new ("Specular");
  gtk_widget_set_name (specular_label4, "specular_label4");
  gtk_widget_ref (specular_label4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "specular_label4", specular_label4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (specular_label4);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (type_notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (type_notebook4), 2), specular_label4);

  dummy_label5 = gtk_label_new ("");
  gtk_widget_set_name (dummy_label5, "dummy_label5");
  gtk_widget_ref (dummy_label5);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "dummy_label5", dummy_label5,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (dummy_label5);
  gtk_table_attach (GTK_TABLE (object_table4), dummy_label5, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (dummy_label5), 0, 0.5);

  hbuttonbox4 = gtk_hbutton_box_new ();
  gtk_widget_set_name (hbuttonbox4, "hbuttonbox4");
  gtk_widget_ref (hbuttonbox4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "hbuttonbox4", hbuttonbox4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (hbuttonbox4);
  gtk_table_attach (GTK_TABLE (object_table4), hbuttonbox4, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox4), GTK_BUTTONBOX_END);

  reset4 = gtk_button_new_with_label ("Reset Object Colors to Defaults");
  gtk_widget_set_name (reset4, "reset4");
  gtk_widget_ref (reset4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "reset4", reset4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (reset4);
  gtk_container_add (GTK_CONTAINER (hbuttonbox4), reset4);
  GTK_WIDGET_SET_FLAGS (reset4, GTK_CAN_DEFAULT);

  light_label4 = gtk_label_new ("Object");
  gtk_widget_set_name (light_label4, "light_label4");
  gtk_widget_ref (light_label4);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "light_label4", light_label4,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (light_label4);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), light_label4);
  gtk_misc_set_padding (GTK_MISC (light_label4), 8, 0);

  gl_frame = gtk_frame_new ("3D Scene");
  gtk_widget_set_name (gl_frame, "gl_frame");
  gtk_widget_ref (gl_frame);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "gl_frame", gl_frame,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (gl_frame);
  gtk_box_pack_start (GTK_BOX (outer_hbox), gl_frame, TRUE, TRUE, 0);
  gtk_container_set_border_width (GTK_CONTAINER (gl_frame), 6);

  gl_area = gtk_drawing_area_new ();
  gtk_widget_set_name (gl_area, "gl_area");
  gtk_widget_ref (gl_area);
  gtk_object_set_data_full (GTK_OBJECT (lightlab), "gl_area", gl_area,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (gl_area);
  gtk_container_add (GTK_CONTAINER (gl_frame), gl_area);
  gtk_widget_set_usize (gl_area, 300, 301);

  gtk_signal_connect (GTK_OBJECT (light_check1), "toggled",
                      GTK_SIGNAL_FUNC (on_light_check1_toggled),
                      NULL);
  gtk_signal_connect (GTK_OBJECT (reset1), "clicked",
                      GTK_SIGNAL_FUNC (on_reset1_clicked),
                      NULL);
  gtk_signal_connect (GTK_OBJECT (light_check2), "toggled",
                      GTK_SIGNAL_FUNC (on_light_check2_toggled),
                      NULL);
  gtk_signal_connect (GTK_OBJECT (reset2), "clicked",
                      GTK_SIGNAL_FUNC (on_reset2_clicked),
                      NULL);
  gtk_signal_connect (GTK_OBJECT (light_check3), "toggled",
                      GTK_SIGNAL_FUNC (on_light_check3_toggled),
                      NULL);
  gtk_signal_connect (GTK_OBJECT (reset3), "clicked",
                      GTK_SIGNAL_FUNC (on_reset3_clicked),
                      NULL);
  gtk_signal_connect (GTK_OBJECT (reset4), "clicked",
                      GTK_SIGNAL_FUNC (on_reset4_clicked),
                      NULL);

  gtk_object_set_data (GTK_OBJECT (lightlab), "tooltips", tooltips);

  return lightlab;
}

GtkWidget*
create_about_dialog (void)
{
  GtkWidget *about_dialog;
  GtkWidget *dialog_vbox1;
  GtkWidget *vbox1;
  GtkWidget *about1;
  GtkWidget *about2;
  GtkWidget *dialog_action_area1;
  GtkWidget *hbuttonbox5;
  GtkWidget *ok;

  about_dialog = gtk_dialog_new ();
  gtk_widget_set_name (about_dialog, "about_dialog");
  gtk_object_set_data (GTK_OBJECT (about_dialog), "about_dialog", about_dialog);
  gtk_window_set_title (GTK_WINDOW (about_dialog), "Light Lab");
  GTK_WINDOW (about_dialog)->type = GTK_WINDOW_DIALOG;
  gtk_window_set_modal (GTK_WINDOW (about_dialog), TRUE);
  gtk_window_set_policy (GTK_WINDOW (about_dialog), TRUE, TRUE, FALSE);

  dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
  gtk_widget_set_name (dialog_vbox1, "dialog_vbox1");
  gtk_object_set_data (GTK_OBJECT (about_dialog), "dialog_vbox1", dialog_vbox1);
  gtk_widget_show (dialog_vbox1);

  vbox1 = gtk_vbox_new (FALSE, 0);
  gtk_widget_set_name (vbox1, "vbox1");
  gtk_widget_ref (vbox1);
  gtk_object_set_data_full (GTK_OBJECT (about_dialog), "vbox1", vbox1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (vbox1);
  gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
  gtk_container_set_border_width (GTK_CONTAINER (vbox1), 24);

  about1 = gtk_label_new ("Light Lab");
  gtk_widget_set_name (about1, "about1");
  gtk_widget_ref (about1);
  gtk_object_set_data_full (GTK_OBJECT (about_dialog), "about1", about1,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (about1);
  gtk_box_pack_start (GTK_BOX (vbox1), about1, FALSE, FALSE, 0);

  about2 = gtk_label_new ("\na toy for experimenting with the OpenGL lighting model.\n\nby Jamie Zawinski <jwz@jwz.org>\nhttp://www.jwz.org/lightlab/\n");
  gtk_widget_set_name (about2, "about2");
  gtk_widget_ref (about2);
  gtk_object_set_data_full (GTK_OBJECT (about_dialog), "about2", about2,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (about2);
  gtk_box_pack_start (GTK_BOX (vbox1), about2, FALSE, FALSE, 0);

  dialog_action_area1 = GTK_DIALOG (about_dialog)->action_area;
  gtk_widget_set_name (dialog_action_area1, "dialog_action_area1");
  gtk_object_set_data (GTK_OBJECT (about_dialog), "dialog_action_area1", dialog_action_area1);
  gtk_widget_show (dialog_action_area1);
  gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 10);

  hbuttonbox5 = gtk_hbutton_box_new ();
  gtk_widget_set_name (hbuttonbox5, "hbuttonbox5");
  gtk_widget_ref (hbuttonbox5);
  gtk_object_set_data_full (GTK_OBJECT (about_dialog), "hbuttonbox5", hbuttonbox5,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (hbuttonbox5);
  gtk_box_pack_start (GTK_BOX (dialog_action_area1), hbuttonbox5, TRUE, TRUE, 0);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox5), GTK_BUTTONBOX_END);

  ok = gtk_button_new_with_label ("OK");
  gtk_widget_set_name (ok, "ok");
  gtk_widget_ref (ok);
  gtk_object_set_data_full (GTK_OBJECT (about_dialog), "ok", ok,
                            (GtkDestroyNotify) gtk_widget_unref);
  gtk_widget_show (ok);
  gtk_container_add (GTK_CONTAINER (hbuttonbox5), ok);
  GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT);

  gtk_signal_connect (GTK_OBJECT (ok), "clicked",
                      GTK_SIGNAL_FUNC (on_about_ok_clicked),
                      NULL);

  return about_dialog;
}