summaryrefslogtreecommitdiff
path: root/interface.c
blob: f864a253c53d0e816564e46016560637789e951f (plain)
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
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
/*
 * 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 <stdio.h>

#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>

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

#define GLADE_HOOKUP_OBJECT(component,widget,name) \
  g_object_set_data_full (G_OBJECT (component), name, \
    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)

#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  g_object_set_data (G_OBJECT (component), name, widget)

GtkWidget*
create_mainwin (void)
{
  GtkWidget *mainwin;
  GtkWidget *vbox1;
  GtkWidget *menubar1;
  GtkWidget *menuitem1;
  GtkWidget *menuitem1_menu;
  GtkWidget *open;
  GtkWidget *image99;
  GtkWidget *separator2;
  GtkWidget *add_files;
  GtkWidget *image100;
  GtkWidget *add_folders;
  GtkWidget *image101;
  GtkWidget *add_audio_cd;
  GtkWidget *image102;
  GtkWidget *separatormenuitem1;
  GtkWidget *quit;
  GtkWidget *image103;
  GtkWidget *edit1;
  GtkWidget *edit1_menu;
  GtkWidget *clear1;
  GtkWidget *image104;
  GtkWidget *select_all1;
  GtkWidget *selection1;
  GtkWidget *selection1_menu;
  GtkWidget *remove1;
  GtkWidget *image105;
  GtkWidget *crop1;
  GtkWidget *find1;
  GtkWidget *separator5;
  GtkWidget *preferences;
  GtkWidget *playlist1;
  GtkWidget *playlist1_menu;
  GtkWidget *playlist_load;
  GtkWidget *playlist_save;
  GtkWidget *playlist_save_as;
  GtkWidget *order1;
  GtkWidget *order1_menu;
  GSList *order_linear_group = NULL;
  GtkWidget *order_linear;
  GtkWidget *order_shuffle;
  GtkWidget *order_random;
  GtkWidget *looping1;
  GtkWidget *looping1_menu;
  GSList *loop_all_group = NULL;
  GtkWidget *loop_all;
  GtkWidget *loop_single;
  GtkWidget *loop_disable;
  GtkWidget *scroll_follows_playback;
  GtkWidget *menuitem4;
  GtkWidget *menuitem4_menu;
  GtkWidget *about1;
  GtkWidget *help1;
  GtkWidget *image106;
  GtkWidget *hbox2;
  GtkWidget *hbox3;
  GtkWidget *stopbtn;
  GtkWidget *image7;
  GtkWidget *playbtn;
  GtkWidget *image2;
  GtkWidget *pausebtn;
  GtkWidget *image3;
  GtkWidget *prevbtn;
  GtkWidget *image4;
  GtkWidget *nextbtn;
  GtkWidget *image5;
  GtkWidget *playrand;
  GtkWidget *image6;
  GtkWidget *volumebar;
  GtkWidget *seekbar;
  GtkWidget *table1;
  GtkWidget *_;
  GtkWidget *vbox3;
  GtkWidget *header;
  GtkWidget *playlist;
  GtkWidget *playscroll;
  GtkWidget *playhscroll;
  GtkWidget *statusbar;
  GtkAccelGroup *accel_group;

  accel_group = gtk_accel_group_new ();

  mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_events (mainwin, GDK_KEY_PRESS_MASK);
  gtk_window_set_title (GTK_WINDOW (mainwin), "DeaDBeeF");
  gtk_window_set_default_size (GTK_WINDOW (mainwin), 500, 300);

  vbox1 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox1);
  gtk_container_add (GTK_CONTAINER (mainwin), vbox1);

  menubar1 = gtk_menu_bar_new ();
  gtk_widget_show (menubar1);
  gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0);

  menuitem1 = gtk_menu_item_new_with_mnemonic ("_File");
  gtk_widget_show (menuitem1);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);

  menuitem1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);

  open = gtk_image_menu_item_new_with_mnemonic ("_Open file(s)");
  gtk_widget_show (open);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), open);
  gtk_widget_add_accelerator (open, "activate", accel_group,
                              GDK_O, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  image99 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image99);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open), image99);

  separator2 = gtk_separator_menu_item_new ();
  gtk_widget_show (separator2);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), separator2);
  gtk_widget_set_sensitive (separator2, FALSE);

  add_files = gtk_image_menu_item_new_with_mnemonic ("Add file(s)");
  gtk_widget_show (add_files);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), add_files);

  image100 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image100);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_files), image100);

  add_folders = gtk_image_menu_item_new_with_mnemonic ("Add folder(s)");
  gtk_widget_show (add_folders);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), add_folders);

  image101 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image101);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_folders), image101);

  add_audio_cd = gtk_image_menu_item_new_with_mnemonic ("Add Audio CD");
  gtk_widget_show (add_audio_cd);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), add_audio_cd);

  image102 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image102);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_audio_cd), image102);

  separatormenuitem1 = gtk_separator_menu_item_new ();
  gtk_widget_show (separatormenuitem1);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), separatormenuitem1);
  gtk_widget_set_sensitive (separatormenuitem1, FALSE);

  quit = gtk_image_menu_item_new_with_mnemonic ("_Quit");
  gtk_widget_show (quit);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), quit);
  gtk_widget_add_accelerator (quit, "activate", accel_group,
                              GDK_Q, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  image103 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image103);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit), image103);

  edit1 = gtk_menu_item_new_with_mnemonic ("Edit");
  gtk_widget_show (edit1);
  gtk_container_add (GTK_CONTAINER (menubar1), edit1);

  edit1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit1), edit1_menu);

  clear1 = gtk_image_menu_item_new_with_mnemonic ("_Clear");
  gtk_widget_show (clear1);
  gtk_container_add (GTK_CONTAINER (edit1_menu), clear1);

  image104 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image104);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (clear1), image104);

  select_all1 = gtk_menu_item_new_with_mnemonic ("Select all");
  gtk_widget_show (select_all1);
  gtk_container_add (GTK_CONTAINER (edit1_menu), select_all1);
  gtk_widget_add_accelerator (select_all1, "activate", accel_group,
                              GDK_A, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  selection1 = gtk_menu_item_new_with_mnemonic ("Selection");
  gtk_widget_show (selection1);
  gtk_container_add (GTK_CONTAINER (edit1_menu), selection1);

  selection1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (selection1), selection1_menu);

  remove1 = gtk_image_menu_item_new_with_mnemonic ("Remove");
  gtk_widget_show (remove1);
  gtk_container_add (GTK_CONTAINER (selection1_menu), remove1);
  gtk_widget_add_accelerator (remove1, "activate", accel_group,
                              GDK_Delete, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);

  image105 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image105);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove1), image105);

  crop1 = gtk_menu_item_new_with_mnemonic ("Crop");
  gtk_widget_show (crop1);
  gtk_container_add (GTK_CONTAINER (selection1_menu), crop1);

  find1 = gtk_menu_item_new_with_mnemonic ("_Find");
  gtk_widget_show (find1);
  gtk_container_add (GTK_CONTAINER (edit1_menu), find1);
  gtk_widget_add_accelerator (find1, "activate", accel_group,
                              GDK_F, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  separator5 = gtk_separator_menu_item_new ();
  gtk_widget_show (separator5);
  gtk_container_add (GTK_CONTAINER (edit1_menu), separator5);
  gtk_widget_set_sensitive (separator5, FALSE);

  preferences = gtk_menu_item_new_with_mnemonic ("Preferences");
  gtk_widget_show (preferences);
  gtk_container_add (GTK_CONTAINER (edit1_menu), preferences);

  playlist1 = gtk_menu_item_new_with_mnemonic ("Playlist");
  gtk_widget_show (playlist1);
  gtk_container_add (GTK_CONTAINER (menubar1), playlist1);

  playlist1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (playlist1), playlist1_menu);

  playlist_load = gtk_menu_item_new_with_mnemonic ("Load");
  gtk_widget_show (playlist_load);
  gtk_container_add (GTK_CONTAINER (playlist1_menu), playlist_load);

  playlist_save = gtk_menu_item_new_with_mnemonic ("Save");
  gtk_widget_show (playlist_save);
  gtk_container_add (GTK_CONTAINER (playlist1_menu), playlist_save);

  playlist_save_as = gtk_menu_item_new_with_mnemonic ("Save As");
  gtk_widget_show (playlist_save_as);
  gtk_container_add (GTK_CONTAINER (playlist1_menu), playlist_save_as);

  order1 = gtk_menu_item_new_with_mnemonic ("Order");
  gtk_widget_show (order1);
  gtk_container_add (GTK_CONTAINER (playlist1_menu), order1);

  order1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (order1), order1_menu);

  order_linear = gtk_radio_menu_item_new_with_mnemonic (order_linear_group, "Linear");
  order_linear_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (order_linear));
  gtk_widget_show (order_linear);
  gtk_container_add (GTK_CONTAINER (order1_menu), order_linear);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (order_linear), TRUE);

  order_shuffle = gtk_radio_menu_item_new_with_mnemonic (order_linear_group, "Shuffle");
  order_linear_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (order_shuffle));
  gtk_widget_show (order_shuffle);
  gtk_container_add (GTK_CONTAINER (order1_menu), order_shuffle);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (order_shuffle), TRUE);

  order_random = gtk_radio_menu_item_new_with_mnemonic (order_linear_group, "Random");
  order_linear_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (order_random));
  gtk_widget_show (order_random);
  gtk_container_add (GTK_CONTAINER (order1_menu), order_random);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (order_random), TRUE);

  looping1 = gtk_menu_item_new_with_mnemonic ("Looping");
  gtk_widget_show (looping1);
  gtk_container_add (GTK_CONTAINER (playlist1_menu), looping1);

  looping1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (looping1), looping1_menu);

  loop_all = gtk_radio_menu_item_new_with_mnemonic (loop_all_group, "Loop All");
  loop_all_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (loop_all));
  gtk_widget_show (loop_all);
  gtk_container_add (GTK_CONTAINER (looping1_menu), loop_all);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (loop_all), TRUE);

  loop_single = gtk_radio_menu_item_new_with_mnemonic (loop_all_group, "Loop Single Song");
  loop_all_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (loop_single));
  gtk_widget_show (loop_single);
  gtk_container_add (GTK_CONTAINER (looping1_menu), loop_single);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (loop_single), TRUE);

  loop_disable = gtk_radio_menu_item_new_with_mnemonic (loop_all_group, "Don't Loop");
  loop_all_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (loop_disable));
  gtk_widget_show (loop_disable);
  gtk_container_add (GTK_CONTAINER (looping1_menu), loop_disable);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (loop_disable), TRUE);

  scroll_follows_playback = gtk_check_menu_item_new_with_mnemonic ("Scroll follows playback");
  gtk_widget_show (scroll_follows_playback);
  gtk_container_add (GTK_CONTAINER (playlist1_menu), scroll_follows_playback);
  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (scroll_follows_playback), TRUE);

  menuitem4 = gtk_menu_item_new_with_mnemonic ("_Help");
  gtk_widget_show (menuitem4);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);

  menuitem4_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu);

  about1 = gtk_menu_item_new_with_mnemonic ("_About");
  gtk_widget_show (about1);
  gtk_container_add (GTK_CONTAINER (menuitem4_menu), about1);

  help1 = gtk_image_menu_item_new_with_mnemonic ("Help");
  gtk_widget_show (help1);
  gtk_container_add (GTK_CONTAINER (menuitem4_menu), help1);

  image106 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image106);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), image106);

  hbox2 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox2);
  gtk_box_pack_start (GTK_BOX (vbox1), hbox2, FALSE, FALSE, 0);

  hbox3 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox3);
  gtk_box_pack_start (GTK_BOX (hbox2), hbox3, TRUE, TRUE, 0);

  stopbtn = gtk_button_new ();
  gtk_widget_show (stopbtn);
  gtk_box_pack_start (GTK_BOX (hbox3), stopbtn, FALSE, FALSE, 0);
  GTK_WIDGET_UNSET_FLAGS (stopbtn, GTK_CAN_FOCUS);
  gtk_widget_add_accelerator (stopbtn, "activate", accel_group,
                              GDK_v, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_button_set_relief (GTK_BUTTON (stopbtn), GTK_RELIEF_NONE);

  image7 = create_pixmap (mainwin, "stop_24.png");
  gtk_widget_show (image7);
  gtk_container_add (GTK_CONTAINER (stopbtn), image7);

  playbtn = gtk_button_new ();
  gtk_widget_show (playbtn);
  gtk_box_pack_start (GTK_BOX (hbox3), playbtn, FALSE, FALSE, 0);
  GTK_WIDGET_UNSET_FLAGS (playbtn, GTK_CAN_FOCUS);
  gtk_widget_add_accelerator (playbtn, "activate", accel_group,
                              GDK_x, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_widget_add_accelerator (playbtn, "activate", accel_group,
                              GDK_Return, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_button_set_relief (GTK_BUTTON (playbtn), GTK_RELIEF_NONE);

  image2 = create_pixmap (mainwin, "play_24.png");
  gtk_widget_show (image2);
  gtk_container_add (GTK_CONTAINER (playbtn), image2);

  pausebtn = gtk_button_new ();
  gtk_widget_show (pausebtn);
  gtk_box_pack_start (GTK_BOX (hbox3), pausebtn, FALSE, FALSE, 0);
  GTK_WIDGET_UNSET_FLAGS (pausebtn, GTK_CAN_FOCUS);
  gtk_widget_add_accelerator (pausebtn, "activate", accel_group,
                              GDK_c, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_widget_add_accelerator (pausebtn, "activate", accel_group,
                              GDK_p, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);
  gtk_button_set_relief (GTK_BUTTON (pausebtn), GTK_RELIEF_NONE);

  image3 = create_pixmap (mainwin, "pause_24.png");
  gtk_widget_show (image3);
  gtk_container_add (GTK_CONTAINER (pausebtn), image3);

  prevbtn = gtk_button_new ();
  gtk_widget_show (prevbtn);
  gtk_box_pack_start (GTK_BOX (hbox3), prevbtn, FALSE, FALSE, 0);
  GTK_WIDGET_UNSET_FLAGS (prevbtn, GTK_CAN_FOCUS);
  gtk_widget_add_accelerator (prevbtn, "activate", accel_group,
                              GDK_z, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_button_set_relief (GTK_BUTTON (prevbtn), GTK_RELIEF_NONE);

  image4 = create_pixmap (mainwin, "prev_24.png");
  gtk_widget_show (image4);
  gtk_container_add (GTK_CONTAINER (prevbtn), image4);

  nextbtn = gtk_button_new ();
  gtk_widget_show (nextbtn);
  gtk_box_pack_start (GTK_BOX (hbox3), nextbtn, FALSE, FALSE, 0);
  GTK_WIDGET_UNSET_FLAGS (nextbtn, GTK_CAN_FOCUS);
  gtk_widget_add_accelerator (nextbtn, "activate", accel_group,
                              GDK_b, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_button_set_relief (GTK_BUTTON (nextbtn), GTK_RELIEF_NONE);

  image5 = create_pixmap (mainwin, "next_24.png");
  gtk_widget_show (image5);
  gtk_container_add (GTK_CONTAINER (nextbtn), image5);

  playrand = gtk_button_new ();
  gtk_widget_show (playrand);
  gtk_box_pack_start (GTK_BOX (hbox3), playrand, FALSE, FALSE, 0);
  GTK_WIDGET_UNSET_FLAGS (playrand, GTK_CAN_FOCUS);
  gtk_widget_add_accelerator (playrand, "activate", accel_group,
                              GDK_n, (GdkModifierType) 0,
                              GTK_ACCEL_VISIBLE);
  gtk_button_set_relief (GTK_BUTTON (playrand), GTK_RELIEF_NONE);

  image6 = create_pixmap (mainwin, "random_24.png");
  gtk_widget_show (image6);
  gtk_container_add (GTK_CONTAINER (playrand), image6);

  volumebar = gtk_drawing_area_new ();
  gtk_widget_show (volumebar);
  gtk_box_pack_start (GTK_BOX (hbox2), volumebar, FALSE, TRUE, 2);
  gtk_widget_set_size_request (volumebar, 70, -1);
  gtk_widget_set_events (volumebar, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);

  seekbar = gtk_drawing_area_new ();
  gtk_widget_show (seekbar);
  gtk_box_pack_start (GTK_BOX (hbox2), seekbar, FALSE, TRUE, 2);
  gtk_widget_set_size_request (seekbar, 200, -1);
  gtk_widget_set_events (seekbar, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);

  table1 = gtk_table_new (2, 2, FALSE);
  gtk_widget_show (table1);
  gtk_box_pack_start (GTK_BOX (vbox1), table1, TRUE, TRUE, 0);

  _ = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (_);
  gtk_table_attach (GTK_TABLE (table1), _, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
  gtk_container_set_border_width (GTK_CONTAINER (_), 3);

  vbox3 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox3);
  gtk_box_pack_start (GTK_BOX (_), vbox3, TRUE, TRUE, 0);

  header = gtk_drawing_area_new ();
  gtk_widget_show (header);
  gtk_box_pack_start (GTK_BOX (vbox3), header, FALSE, TRUE, 0);
  gtk_widget_set_size_request (header, -1, 24);
  gtk_widget_set_events (header, GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);

  playlist = gtk_drawing_area_new ();
  gtk_widget_show (playlist);
  gtk_box_pack_start (GTK_BOX (vbox3), playlist, TRUE, TRUE, 0);
  gtk_widget_set_events (playlist, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);

  playscroll = gtk_vscrollbar_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1, 1, 0, 0)));
  gtk_widget_show (playscroll);
  gtk_table_attach (GTK_TABLE (table1), playscroll, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  playhscroll = gtk_hscrollbar_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 0, 0, 0, 0)));
  gtk_widget_show (playhscroll);
  gtk_table_attach (GTK_TABLE (table1), playhscroll, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  statusbar = gtk_statusbar_new ();
  gtk_widget_show (statusbar);
  gtk_box_pack_start (GTK_BOX (vbox1), statusbar, FALSE, FALSE, 0);

  g_signal_connect ((gpointer) mainwin, "key_press_event",
                    G_CALLBACK (on_mainwin_key_press_event),
                    NULL);
  g_signal_connect ((gpointer) mainwin, "delete_event",
                    G_CALLBACK (on_mainwin_delete_event),
                    NULL);
  g_signal_connect ((gpointer) mainwin, "configure_event",
                    G_CALLBACK (on_mainwin_configure_event),
                    NULL);
  g_signal_connect ((gpointer) open, "activate",
                    G_CALLBACK (on_open_activate),
                    NULL);
  g_signal_connect ((gpointer) add_files, "activate",
                    G_CALLBACK (on_add_files_activate),
                    NULL);
  g_signal_connect ((gpointer) add_folders, "activate",
                    G_CALLBACK (on_add_folders_activate),
                    NULL);
  g_signal_connect ((gpointer) add_audio_cd, "activate",
                    G_CALLBACK (on_add_audio_cd_activate),
                    NULL);
  g_signal_connect ((gpointer) quit, "activate",
                    G_CALLBACK (on_quit_activate),
                    NULL);
  g_signal_connect ((gpointer) clear1, "activate",
                    G_CALLBACK (on_clear1_activate),
                    NULL);
  g_signal_connect ((gpointer) select_all1, "activate",
                    G_CALLBACK (on_select_all1_activate),
                    NULL);
  g_signal_connect ((gpointer) remove1, "activate",
                    G_CALLBACK (on_remove1_activate),
                    NULL);
  g_signal_connect ((gpointer) crop1, "activate",
                    G_CALLBACK (on_crop1_activate),
                    NULL);
  g_signal_connect ((gpointer) find1, "activate",
                    G_CALLBACK (on_find_activate),
                    NULL);
  g_signal_connect ((gpointer) preferences, "activate",
                    G_CALLBACK (on_preferences_activate),
                    NULL);
  g_signal_connect ((gpointer) playlist_load, "activate",
                    G_CALLBACK (on_playlist_load_activate),
                    NULL);
  g_signal_connect ((gpointer) playlist_save, "activate",
                    G_CALLBACK (on_playlist_save_activate),
                    NULL);
  g_signal_connect ((gpointer) playlist_save_as, "activate",
                    G_CALLBACK (on_playlist_save_as_activate),
                    NULL);
  g_signal_connect ((gpointer) order_linear, "activate",
                    G_CALLBACK (on_order_linear_activate),
                    NULL);
  g_signal_connect ((gpointer) order_shuffle, "activate",
                    G_CALLBACK (on_order_shuffle_activate),
                    NULL);
  g_signal_connect ((gpointer) order_random, "activate",
                    G_CALLBACK (on_order_random_activate),
                    NULL);
  g_signal_connect ((gpointer) loop_all, "activate",
                    G_CALLBACK (on_loop_all_activate),
                    NULL);
  g_signal_connect ((gpointer) loop_single, "activate",
                    G_CALLBACK (on_loop_single_activate),
                    NULL);
  g_signal_connect ((gpointer) loop_disable, "activate",
                    G_CALLBACK (on_loop_disable_activate),
                    NULL);
  g_signal_connect ((gpointer) scroll_follows_playback, "activate",
                    G_CALLBACK (on_scroll_follows_playback_activate),
                    NULL);
  g_signal_connect ((gpointer) about1, "activate",
                    G_CALLBACK (on_about1_activate),
                    NULL);
  g_signal_connect ((gpointer) help1, "activate",
                    G_CALLBACK (on_help1_activate),
                    NULL);
  g_signal_connect ((gpointer) stopbtn, "clicked",
                    G_CALLBACK (on_stopbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) playbtn, "clicked",
                    G_CALLBACK (on_playbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) pausebtn, "clicked",
                    G_CALLBACK (on_pausebtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) prevbtn, "clicked",
                    G_CALLBACK (on_prevbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) nextbtn, "clicked",
                    G_CALLBACK (on_nextbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) playrand, "clicked",
                    G_CALLBACK (on_playrand_clicked),
                    NULL);
  g_signal_connect ((gpointer) volumebar, "button_press_event",
                    G_CALLBACK (on_volumebar_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) volumebar, "button_release_event",
                    G_CALLBACK (on_volumebar_button_release_event),
                    NULL);
  g_signal_connect ((gpointer) volumebar, "configure_event",
                    G_CALLBACK (on_volumebar_configure_event),
                    NULL);
  g_signal_connect ((gpointer) volumebar, "expose_event",
                    G_CALLBACK (on_volumebar_expose_event),
                    NULL);
  g_signal_connect ((gpointer) volumebar, "motion_notify_event",
                    G_CALLBACK (on_volumebar_motion_notify_event),
                    NULL);
  g_signal_connect ((gpointer) volumebar, "scroll_event",
                    G_CALLBACK (on_volumebar_scroll_event),
                    NULL);
  g_signal_connect ((gpointer) seekbar, "button_press_event",
                    G_CALLBACK (on_seekbar_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) seekbar, "button_release_event",
                    G_CALLBACK (on_seekbar_button_release_event),
                    NULL);
  g_signal_connect ((gpointer) seekbar, "configure_event",
                    G_CALLBACK (on_seekbar_configure_event),
                    NULL);
  g_signal_connect ((gpointer) seekbar, "expose_event",
                    G_CALLBACK (on_seekbar_expose_event),
                    NULL);
  g_signal_connect ((gpointer) seekbar, "motion_notify_event",
                    G_CALLBACK (on_seekbar_motion_notify_event),
                    NULL);
  g_signal_connect ((gpointer) header, "expose_event",
                    G_CALLBACK (on_header_expose_event),
                    NULL);
  g_signal_connect ((gpointer) header, "configure_event",
                    G_CALLBACK (on_header_configure_event),
                    NULL);
  g_signal_connect ((gpointer) header, "realize",
                    G_CALLBACK (on_header_realize),
                    NULL);
  g_signal_connect ((gpointer) header, "motion_notify_event",
                    G_CALLBACK (on_header_motion_notify_event),
                    NULL);
  g_signal_connect ((gpointer) header, "button_press_event",
                    G_CALLBACK (on_header_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) header, "button_release_event",
                    G_CALLBACK (on_header_button_release_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "configure_event",
                    G_CALLBACK (on_playlist_configure_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "expose_event",
                    G_CALLBACK (on_playlist_expose_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "realize",
                    G_CALLBACK (on_playlist_realize),
                    NULL);
  g_signal_connect ((gpointer) playlist, "button_press_event",
                    G_CALLBACK (on_playlist_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "scroll_event",
                    G_CALLBACK (on_playlist_scroll_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_begin",
                    G_CALLBACK (on_playlist_drag_begin),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_motion",
                    G_CALLBACK (on_playlist_drag_motion),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_drop",
                    G_CALLBACK (on_playlist_drag_drop),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_data_get",
                    G_CALLBACK (on_playlist_drag_data_get),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_end",
                    G_CALLBACK (on_playlist_drag_end),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_failed",
                    G_CALLBACK (on_playlist_drag_failed),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_leave",
                    G_CALLBACK (on_playlist_drag_leave),
                    NULL);
  g_signal_connect ((gpointer) playlist, "button_release_event",
                    G_CALLBACK (on_playlist_button_release_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "motion_notify_event",
                    G_CALLBACK (on_playlist_motion_notify_event),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_data_received",
                    G_CALLBACK (on_playlist_drag_data_received),
                    NULL);
  g_signal_connect ((gpointer) playlist, "drag_data_delete",
                    G_CALLBACK (on_playlist_drag_data_delete),
                    NULL);
  g_signal_connect ((gpointer) playscroll, "value_changed",
                    G_CALLBACK (on_playscroll_value_changed),
                    NULL);
  g_signal_connect ((gpointer) playhscroll, "value_changed",
                    G_CALLBACK (on_playhscroll_value_changed),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (mainwin, mainwin, "mainwin");
  GLADE_HOOKUP_OBJECT (mainwin, vbox1, "vbox1");
  GLADE_HOOKUP_OBJECT (mainwin, menubar1, "menubar1");
  GLADE_HOOKUP_OBJECT (mainwin, menuitem1, "menuitem1");
  GLADE_HOOKUP_OBJECT (mainwin, menuitem1_menu, "menuitem1_menu");
  GLADE_HOOKUP_OBJECT (mainwin, open, "open");
  GLADE_HOOKUP_OBJECT (mainwin, image99, "image99");
  GLADE_HOOKUP_OBJECT (mainwin, separator2, "separator2");
  GLADE_HOOKUP_OBJECT (mainwin, add_files, "add_files");
  GLADE_HOOKUP_OBJECT (mainwin, image100, "image100");
  GLADE_HOOKUP_OBJECT (mainwin, add_folders, "add_folders");
  GLADE_HOOKUP_OBJECT (mainwin, image101, "image101");
  GLADE_HOOKUP_OBJECT (mainwin, add_audio_cd, "add_audio_cd");
  GLADE_HOOKUP_OBJECT (mainwin, image102, "image102");
  GLADE_HOOKUP_OBJECT (mainwin, separatormenuitem1, "separatormenuitem1");
  GLADE_HOOKUP_OBJECT (mainwin, quit, "quit");
  GLADE_HOOKUP_OBJECT (mainwin, image103, "image103");
  GLADE_HOOKUP_OBJECT (mainwin, edit1, "edit1");
  GLADE_HOOKUP_OBJECT (mainwin, edit1_menu, "edit1_menu");
  GLADE_HOOKUP_OBJECT (mainwin, clear1, "clear1");
  GLADE_HOOKUP_OBJECT (mainwin, image104, "image104");
  GLADE_HOOKUP_OBJECT (mainwin, select_all1, "select_all1");
  GLADE_HOOKUP_OBJECT (mainwin, selection1, "selection1");
  GLADE_HOOKUP_OBJECT (mainwin, selection1_menu, "selection1_menu");
  GLADE_HOOKUP_OBJECT (mainwin, remove1, "remove1");
  GLADE_HOOKUP_OBJECT (mainwin, image105, "image105");
  GLADE_HOOKUP_OBJECT (mainwin, crop1, "crop1");
  GLADE_HOOKUP_OBJECT (mainwin, find1, "find1");
  GLADE_HOOKUP_OBJECT (mainwin, separator5, "separator5");
  GLADE_HOOKUP_OBJECT (mainwin, preferences, "preferences");
  GLADE_HOOKUP_OBJECT (mainwin, playlist1, "playlist1");
  GLADE_HOOKUP_OBJECT (mainwin, playlist1_menu, "playlist1_menu");
  GLADE_HOOKUP_OBJECT (mainwin, playlist_load, "playlist_load");
  GLADE_HOOKUP_OBJECT (mainwin, playlist_save, "playlist_save");
  GLADE_HOOKUP_OBJECT (mainwin, playlist_save_as, "playlist_save_as");
  GLADE_HOOKUP_OBJECT (mainwin, order1, "order1");
  GLADE_HOOKUP_OBJECT (mainwin, order1_menu, "order1_menu");
  GLADE_HOOKUP_OBJECT (mainwin, order_linear, "order_linear");
  GLADE_HOOKUP_OBJECT (mainwin, order_shuffle, "order_shuffle");
  GLADE_HOOKUP_OBJECT (mainwin, order_random, "order_random");
  GLADE_HOOKUP_OBJECT (mainwin, looping1, "looping1");
  GLADE_HOOKUP_OBJECT (mainwin, looping1_menu, "looping1_menu");
  GLADE_HOOKUP_OBJECT (mainwin, loop_all, "loop_all");
  GLADE_HOOKUP_OBJECT (mainwin, loop_single, "loop_single");
  GLADE_HOOKUP_OBJECT (mainwin, loop_disable, "loop_disable");
  GLADE_HOOKUP_OBJECT (mainwin, scroll_follows_playback, "scroll_follows_playback");
  GLADE_HOOKUP_OBJECT (mainwin, menuitem4, "menuitem4");
  GLADE_HOOKUP_OBJECT (mainwin, menuitem4_menu, "menuitem4_menu");
  GLADE_HOOKUP_OBJECT (mainwin, about1, "about1");
  GLADE_HOOKUP_OBJECT (mainwin, help1, "help1");
  GLADE_HOOKUP_OBJECT (mainwin, image106, "image106");
  GLADE_HOOKUP_OBJECT (mainwin, hbox2, "hbox2");
  GLADE_HOOKUP_OBJECT (mainwin, hbox3, "hbox3");
  GLADE_HOOKUP_OBJECT (mainwin, stopbtn, "stopbtn");
  GLADE_HOOKUP_OBJECT (mainwin, image7, "image7");
  GLADE_HOOKUP_OBJECT (mainwin, playbtn, "playbtn");
  GLADE_HOOKUP_OBJECT (mainwin, image2, "image2");
  GLADE_HOOKUP_OBJECT (mainwin, pausebtn, "pausebtn");
  GLADE_HOOKUP_OBJECT (mainwin, image3, "image3");
  GLADE_HOOKUP_OBJECT (mainwin, prevbtn, "prevbtn");
  GLADE_HOOKUP_OBJECT (mainwin, image4, "image4");
  GLADE_HOOKUP_OBJECT (mainwin, nextbtn, "nextbtn");
  GLADE_HOOKUP_OBJECT (mainwin, image5, "image5");
  GLADE_HOOKUP_OBJECT (mainwin, playrand, "playrand");
  GLADE_HOOKUP_OBJECT (mainwin, image6, "image6");
  GLADE_HOOKUP_OBJECT (mainwin, volumebar, "volumebar");
  GLADE_HOOKUP_OBJECT (mainwin, seekbar, "seekbar");
  GLADE_HOOKUP_OBJECT (mainwin, table1, "table1");
  GLADE_HOOKUP_OBJECT (mainwin, _, "_");
  GLADE_HOOKUP_OBJECT (mainwin, vbox3, "vbox3");
  GLADE_HOOKUP_OBJECT (mainwin, header, "header");
  GLADE_HOOKUP_OBJECT (mainwin, playlist, "playlist");
  GLADE_HOOKUP_OBJECT (mainwin, playscroll, "playscroll");
  GLADE_HOOKUP_OBJECT (mainwin, playhscroll, "playhscroll");
  GLADE_HOOKUP_OBJECT (mainwin, statusbar, "statusbar");

  gtk_window_add_accel_group (GTK_WINDOW (mainwin), accel_group);

  return mainwin;
}

GtkWidget*
create_searchwin (void)
{
  GtkWidget *searchwin;
  GtkWidget *vbox4;
  GtkWidget *searchentry;
  GtkWidget *table2;
  GtkWidget *searchscroll;
  GtkWidget *vbox5;
  GtkWidget *searchheader;
  GtkWidget *searchlist;
  GtkWidget *searchhscroll;

  searchwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (searchwin, 600, 150);
  gtk_widget_set_events (searchwin, GDK_KEY_PRESS_MASK);
  gtk_window_set_title (GTK_WINDOW (searchwin), "Search");
  gtk_window_set_position (GTK_WINDOW (searchwin), GTK_WIN_POS_CENTER_ALWAYS);
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (searchwin), TRUE);
  gtk_window_set_skip_pager_hint (GTK_WINDOW (searchwin), TRUE);

  vbox4 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox4);
  gtk_container_add (GTK_CONTAINER (searchwin), vbox4);
  gtk_container_set_border_width (GTK_CONTAINER (vbox4), 4);

  searchentry = gtk_entry_new ();
  gtk_widget_show (searchentry);
  gtk_box_pack_start (GTK_BOX (vbox4), searchentry, FALSE, FALSE, 0);
  gtk_entry_set_invisible_char (GTK_ENTRY (searchentry), 8226);
  gtk_entry_set_activates_default (GTK_ENTRY (searchentry), TRUE);

  table2 = gtk_table_new (2, 2, FALSE);
  gtk_widget_show (table2);
  gtk_box_pack_start (GTK_BOX (vbox4), table2, TRUE, TRUE, 0);

  searchscroll = gtk_vscrollbar_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 1, 1, 0, 0)));
  gtk_widget_show (searchscroll);
  gtk_table_attach (GTK_TABLE (table2), searchscroll, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  vbox5 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox5);
  gtk_table_attach (GTK_TABLE (table2), vbox5, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);

  searchheader = gtk_drawing_area_new ();
  gtk_widget_show (searchheader);
  gtk_box_pack_start (GTK_BOX (vbox5), searchheader, FALSE, TRUE, 0);
  gtk_widget_set_size_request (searchheader, -1, 24);
  gtk_widget_set_events (searchheader, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);

  searchlist = gtk_drawing_area_new ();
  gtk_widget_show (searchlist);
  gtk_box_pack_start (GTK_BOX (vbox5), searchlist, TRUE, TRUE, 0);
  GTK_WIDGET_SET_FLAGS (searchlist, GTK_CAN_DEFAULT);
  gtk_widget_set_events (searchlist, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);

  searchhscroll = gtk_hscrollbar_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 0, 0, 0, 0)));
  gtk_widget_show (searchhscroll);
  gtk_table_attach (GTK_TABLE (table2), searchhscroll, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);

  g_signal_connect ((gpointer) searchwin, "key_press_event",
                    G_CALLBACK (on_searchwin_key_press_event),
                    NULL);
  g_signal_connect ((gpointer) searchwin, "delete_event",
                    G_CALLBACK (gtk_widget_hide_on_delete),
                    NULL);
  g_signal_connect ((gpointer) searchentry, "changed",
                    G_CALLBACK (on_searchentry_changed),
                    NULL);
  g_signal_connect ((gpointer) searchscroll, "value_changed",
                    G_CALLBACK (on_playscroll_value_changed),
                    NULL);
  g_signal_connect ((gpointer) searchheader, "button_press_event",
                    G_CALLBACK (on_header_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) searchheader, "button_release_event",
                    G_CALLBACK (on_header_button_release_event),
                    NULL);
  g_signal_connect ((gpointer) searchheader, "configure_event",
                    G_CALLBACK (on_header_configure_event),
                    NULL);
  g_signal_connect ((gpointer) searchheader, "expose_event",
                    G_CALLBACK (on_header_expose_event),
                    NULL);
  g_signal_connect ((gpointer) searchheader, "motion_notify_event",
                    G_CALLBACK (on_header_motion_notify_event),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "button_press_event",
                    G_CALLBACK (on_playlist_button_press_event),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "configure_event",
                    G_CALLBACK (on_searchlist_configure_event),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "expose_event",
                    G_CALLBACK (on_playlist_expose_event),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "scroll_event",
                    G_CALLBACK (on_playlist_scroll_event),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "realize",
                    G_CALLBACK (on_searchlist_realize),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "button_release_event",
                    G_CALLBACK (on_playlist_button_release_event),
                    NULL);
  g_signal_connect ((gpointer) searchlist, "motion_notify_event",
                    G_CALLBACK (on_playlist_motion_notify_event),
                    NULL);
  g_signal_connect ((gpointer) searchhscroll, "value_changed",
                    G_CALLBACK (on_searchhscroll_value_changed),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (searchwin, searchwin, "searchwin");
  GLADE_HOOKUP_OBJECT (searchwin, vbox4, "vbox4");
  GLADE_HOOKUP_OBJECT (searchwin, searchentry, "searchentry");
  GLADE_HOOKUP_OBJECT (searchwin, table2, "table2");
  GLADE_HOOKUP_OBJECT (searchwin, searchscroll, "searchscroll");
  GLADE_HOOKUP_OBJECT (searchwin, vbox5, "vbox5");
  GLADE_HOOKUP_OBJECT (searchwin, searchheader, "searchheader");
  GLADE_HOOKUP_OBJECT (searchwin, searchlist, "searchlist");
  GLADE_HOOKUP_OBJECT (searchwin, searchhscroll, "searchhscroll");

  gtk_widget_grab_default (searchlist);
  return searchwin;
}

GtkWidget*
create_traymenu (void)
{
  GtkWidget *traymenu;
  GtkWidget *stop2;
  GtkWidget *image59;
  GtkWidget *play2;
  GtkWidget *image60;
  GtkWidget *pause2;
  GtkWidget *image61;
  GtkWidget *previous2;
  GtkWidget *image62;
  GtkWidget *next2;
  GtkWidget *image63;
  GtkWidget *play_random1;
  GtkWidget *separator4;
  GtkWidget *about3;
  GtkWidget *image64;
  GtkWidget *separator3;
  GtkWidget *quit;
  GtkWidget *image65;

  traymenu = gtk_menu_new ();

  stop2 = gtk_image_menu_item_new_with_mnemonic ("Stop");
  gtk_widget_show (stop2);
  gtk_container_add (GTK_CONTAINER (traymenu), stop2);

  image59 = gtk_image_new_from_stock ("gtk-media-stop", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image59);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (stop2), image59);

  play2 = gtk_image_menu_item_new_with_mnemonic ("Play");
  gtk_widget_show (play2);
  gtk_container_add (GTK_CONTAINER (traymenu), play2);

  image60 = gtk_image_new_from_stock ("gtk-media-play", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image60);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (play2), image60);

  pause2 = gtk_image_menu_item_new_with_mnemonic ("Pause");
  gtk_widget_show (pause2);
  gtk_container_add (GTK_CONTAINER (traymenu), pause2);

  image61 = gtk_image_new_from_stock ("gtk-media-pause", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image61);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pause2), image61);

  previous2 = gtk_image_menu_item_new_with_mnemonic ("Previous");
  gtk_widget_show (previous2);
  gtk_container_add (GTK_CONTAINER (traymenu), previous2);

  image62 = gtk_image_new_from_stock ("gtk-media-previous", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image62);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (previous2), image62);

  next2 = gtk_image_menu_item_new_with_mnemonic ("Next");
  gtk_widget_show (next2);
  gtk_container_add (GTK_CONTAINER (traymenu), next2);

  image63 = gtk_image_new_from_stock ("gtk-media-next", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image63);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (next2), image63);

  play_random1 = gtk_menu_item_new_with_mnemonic ("Play Random");
  gtk_widget_show (play_random1);
  gtk_container_add (GTK_CONTAINER (traymenu), play_random1);

  separator4 = gtk_separator_menu_item_new ();
  gtk_widget_show (separator4);
  gtk_container_add (GTK_CONTAINER (traymenu), separator4);
  gtk_widget_set_sensitive (separator4, FALSE);

  about3 = gtk_image_menu_item_new_with_mnemonic ("About");
  gtk_widget_show (about3);
  gtk_container_add (GTK_CONTAINER (traymenu), about3);

  image64 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image64);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (about3), image64);

  separator3 = gtk_separator_menu_item_new ();
  gtk_widget_show (separator3);
  gtk_container_add (GTK_CONTAINER (traymenu), separator3);
  gtk_widget_set_sensitive (separator3, FALSE);

  quit = gtk_image_menu_item_new_with_mnemonic ("Quit");
  gtk_widget_show (quit);
  gtk_container_add (GTK_CONTAINER (traymenu), quit);

  image65 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image65);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit), image65);

  g_signal_connect ((gpointer) stop2, "activate",
                    G_CALLBACK (on_stopbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) play2, "activate",
                    G_CALLBACK (on_playbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) pause2, "activate",
                    G_CALLBACK (on_pausebtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) previous2, "activate",
                    G_CALLBACK (on_prevbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) next2, "activate",
                    G_CALLBACK (on_nextbtn_clicked),
                    NULL);
  g_signal_connect ((gpointer) play_random1, "activate",
                    G_CALLBACK (on_playrand_clicked),
                    NULL);
  g_signal_connect ((gpointer) about3, "activate",
                    G_CALLBACK (on_about1_activate),
                    NULL);
  g_signal_connect ((gpointer) quit, "activate",
                    G_CALLBACK (on_quit_activate),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (traymenu, traymenu, "traymenu");
  GLADE_HOOKUP_OBJECT (traymenu, stop2, "stop2");
  GLADE_HOOKUP_OBJECT (traymenu, image59, "image59");
  GLADE_HOOKUP_OBJECT (traymenu, play2, "play2");
  GLADE_HOOKUP_OBJECT (traymenu, image60, "image60");
  GLADE_HOOKUP_OBJECT (traymenu, pause2, "pause2");
  GLADE_HOOKUP_OBJECT (traymenu, image61, "image61");
  GLADE_HOOKUP_OBJECT (traymenu, previous2, "previous2");
  GLADE_HOOKUP_OBJECT (traymenu, image62, "image62");
  GLADE_HOOKUP_OBJECT (traymenu, next2, "next2");
  GLADE_HOOKUP_OBJECT (traymenu, image63, "image63");
  GLADE_HOOKUP_OBJECT (traymenu, play_random1, "play_random1");
  GLADE_HOOKUP_OBJECT (traymenu, separator4, "separator4");
  GLADE_HOOKUP_OBJECT (traymenu, about3, "about3");
  GLADE_HOOKUP_OBJECT (traymenu, image64, "image64");
  GLADE_HOOKUP_OBJECT (traymenu, separator3, "separator3");
  GLADE_HOOKUP_OBJECT (traymenu, quit, "quit");
  GLADE_HOOKUP_OBJECT (traymenu, image65, "image65");

  return traymenu;
}

GtkWidget*
create_addprogress (void)
{
  GtkWidget *addprogress;
  GtkWidget *vbox6;
  GtkWidget *progresstitle;
  GtkWidget *hbox7;
  GtkWidget *button1;

  addprogress = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (addprogress), "Adding files...");
  gtk_window_set_position (GTK_WINDOW (addprogress), GTK_WIN_POS_CENTER_ON_PARENT);
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (addprogress), TRUE);
  gtk_window_set_skip_pager_hint (GTK_WINDOW (addprogress), TRUE);

  vbox6 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox6);
  gtk_container_add (GTK_CONTAINER (addprogress), vbox6);
  gtk_container_set_border_width (GTK_CONTAINER (vbox6), 4);

  progresstitle = gtk_entry_new ();
  gtk_widget_show (progresstitle);
  gtk_box_pack_start (GTK_BOX (vbox6), progresstitle, TRUE, FALSE, 0);
  gtk_widget_set_size_request (progresstitle, 500, -1);
  GTK_WIDGET_UNSET_FLAGS (progresstitle, GTK_CAN_FOCUS);
  gtk_editable_set_editable (GTK_EDITABLE (progresstitle), FALSE);
  gtk_entry_set_invisible_char (GTK_ENTRY (progresstitle), 8226);

  hbox7 = gtk_hbox_new (FALSE, 0);
  gtk_widget_show (hbox7);
  gtk_box_pack_start (GTK_BOX (vbox6), hbox7, FALSE, TRUE, 2);

  button1 = gtk_button_new_with_mnemonic ("Abort");
  gtk_widget_show (button1);
  gtk_box_pack_start (GTK_BOX (hbox7), button1, FALSE, FALSE, 0);
  gtk_widget_set_size_request (button1, 83, -1);
  GTK_WIDGET_UNSET_FLAGS (button1, GTK_CAN_FOCUS);

  g_signal_connect ((gpointer) addprogress, "delete_event",
                    G_CALLBACK (on_addprogress_delete_event),
                    NULL);
  g_signal_connect ((gpointer) button1, "clicked",
                    G_CALLBACK (on_progress_abort),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (addprogress, addprogress, "addprogress");
  GLADE_HOOKUP_OBJECT (addprogress, vbox6, "vbox6");
  GLADE_HOOKUP_OBJECT (addprogress, progresstitle, "progresstitle");
  GLADE_HOOKUP_OBJECT (addprogress, hbox7, "hbox7");
  GLADE_HOOKUP_OBJECT (addprogress, button1, "button1");

  return addprogress;
}

GtkWidget*
create_helpwindow (void)
{
  GtkWidget *helpwindow;
  GtkWidget *scrolledwindow1;
  GtkWidget *helptext;

  helpwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (helpwindow, 600, 400);
  gtk_widget_set_events (helpwindow, GDK_KEY_PRESS_MASK);
  gtk_window_set_title (GTK_WINDOW (helpwindow), "Help");
  gtk_window_set_modal (GTK_WINDOW (helpwindow), TRUE);
  gtk_window_set_destroy_with_parent (GTK_WINDOW (helpwindow), TRUE);

  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
  gtk_widget_show (scrolledwindow1);
  gtk_container_add (GTK_CONTAINER (helpwindow), scrolledwindow1);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  helptext = gtk_text_view_new ();
  gtk_widget_show (helptext);
  gtk_container_add (GTK_CONTAINER (scrolledwindow1), helptext);
  gtk_text_view_set_editable (GTK_TEXT_VIEW (helptext), FALSE);
  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (helptext), GTK_WRAP_WORD);
  gtk_text_view_set_left_margin (GTK_TEXT_VIEW (helptext), 10);
  gtk_text_view_set_right_margin (GTK_TEXT_VIEW (helptext), 10);

  g_signal_connect ((gpointer) helpwindow, "key_press_event",
                    G_CALLBACK (on_helpwindow_key_press_event),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (helpwindow, helpwindow, "helpwindow");
  GLADE_HOOKUP_OBJECT (helpwindow, scrolledwindow1, "scrolledwindow1");
  GLADE_HOOKUP_OBJECT (helpwindow, helptext, "helptext");

  return helpwindow;
}

GtkWidget*
create_prefwin (void)
{
  GtkWidget *prefwin;
  GtkWidget *notebook2;
  GtkWidget *table3;
  GtkWidget *label4;
  GtkWidget *pref_soundcard;
  GtkWidget *label5;
  GtkWidget *pref_samplerate;
  GtkWidget *label6;
  GtkWidget *label8;
  GtkWidget *label9;
  GtkWidget *pref_replaygain_scale;
  GtkWidget *pref_src_quality;
  GtkWidget *pref_replaygain_mode;
  GtkWidget *Sound;
  GtkWidget *table4;
  GtkWidget *label7;
  GtkWidget *pref_close_send_to_tray;
  GtkWidget *label2;
  GtkWidget *hpaned1;
  GtkWidget *scrolledwindow2;
  GtkWidget *pref_pluginlist;
  GtkWidget *table5;
  GtkWidget *label11;
  GtkWidget *label12;
  GtkWidget *label13;
  GtkWidget *label14;
  GtkWidget *pref_plugin_descr;
  GtkWidget *pref_plugin_author;
  GtkWidget *pref_plugin_email;
  GtkWidget *pref_plugin_website;
  GtkWidget *pref_plugin_configure;
  GtkWidget *label3;

  prefwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (prefwin, 642, 372);
  gtk_window_set_title (GTK_WINDOW (prefwin), "Preferences");
  gtk_window_set_modal (GTK_WINDOW (prefwin), TRUE);

  notebook2 = gtk_notebook_new ();
  gtk_widget_show (notebook2);
  gtk_container_add (GTK_CONTAINER (prefwin), notebook2);

  table3 = gtk_table_new (5, 2, FALSE);
  gtk_widget_show (table3);
  gtk_container_add (GTK_CONTAINER (notebook2), table3);
  gtk_container_set_border_width (GTK_CONTAINER (table3), 3);
  gtk_table_set_col_spacings (GTK_TABLE (table3), 3);

  label4 = gtk_label_new ("Soundcard");
  gtk_widget_show (label4);
  gtk_table_attach (GTK_TABLE (table3), label4, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label4), 0, 0.5);

  pref_soundcard = gtk_combo_box_entry_new_text ();
  gtk_widget_show (pref_soundcard);
  gtk_table_attach (GTK_TABLE (table3), pref_soundcard, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_soundcard), "default");

  label5 = gtk_label_new ("Samplerate (Hz)");
  gtk_widget_show (label5);
  gtk_table_attach (GTK_TABLE (table3), label5, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label5), 0, 0.5);

  pref_samplerate = gtk_entry_new ();
  gtk_widget_show (pref_samplerate);
  gtk_table_attach (GTK_TABLE (table3), pref_samplerate, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_text (GTK_ENTRY (pref_samplerate), "48000");
  gtk_entry_set_invisible_char (GTK_ENTRY (pref_samplerate), 9679);

  label6 = gtk_label_new ("SRC quality");
  gtk_widget_show (label6);
  gtk_table_attach (GTK_TABLE (table3), label6, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);

  label8 = gtk_label_new ("Replaygain mode");
  gtk_widget_show (label8);
  gtk_table_attach (GTK_TABLE (table3), label8, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label8), 0, 0.5);

  label9 = gtk_label_new ("Apply replaygain peak scale");
  gtk_widget_show (label9);
  gtk_table_attach (GTK_TABLE (table3), label9, 0, 1, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label9), 0, 0.5);

  pref_replaygain_scale = gtk_check_button_new_with_mnemonic ("");
  gtk_widget_show (pref_replaygain_scale);
  gtk_table_attach (GTK_TABLE (table3), pref_replaygain_scale, 1, 2, 4, 5,
                    (GtkAttachOptions) (GTK_EXPAND),
                    (GtkAttachOptions) (0), 0, 0);

  pref_src_quality = gtk_combo_box_new_text ();
  gtk_widget_show (pref_src_quality);
  gtk_table_attach (GTK_TABLE (table3), pref_src_quality, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_src_quality), "sinc_best_quality");
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_src_quality), "sinc_medium_quality");
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_src_quality), "sinc_fastest");
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_src_quality), "sinc_zero_order_hold");
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_src_quality), "linear");

  pref_replaygain_mode = gtk_combo_box_new_text ();
  gtk_widget_show (pref_replaygain_mode);
  gtk_table_attach (GTK_TABLE (table3), pref_replaygain_mode, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_replaygain_mode), "Disable");
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_replaygain_mode), "Track");
  gtk_combo_box_append_text (GTK_COMBO_BOX (pref_replaygain_mode), "Album");

  Sound = gtk_label_new ("Sound");
  gtk_widget_show (Sound);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 0), Sound);

  table4 = gtk_table_new (1, 2, FALSE);
  gtk_widget_show (table4);
  gtk_container_add (GTK_CONTAINER (notebook2), table4);
  gtk_container_set_border_width (GTK_CONTAINER (table4), 3);
  gtk_table_set_col_spacings (GTK_TABLE (table4), 3);

  label7 = gtk_label_new ("Close minimizes to tray");
  gtk_widget_show (label7);
  gtk_table_attach (GTK_TABLE (table4), label7, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label7), 0, 0.5);

  pref_close_send_to_tray = gtk_check_button_new_with_mnemonic ("");
  gtk_widget_show (pref_close_send_to_tray);
  gtk_table_attach (GTK_TABLE (table4), pref_close_send_to_tray, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND),
                    (GtkAttachOptions) (0), 0, 0);

  label2 = gtk_label_new ("GUI");
  gtk_widget_show (label2);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 1), label2);

  hpaned1 = gtk_hpaned_new ();
  gtk_widget_show (hpaned1);
  gtk_container_add (GTK_CONTAINER (notebook2), hpaned1);

  scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
  gtk_widget_show (scrolledwindow2);
  gtk_paned_pack1 (GTK_PANED (hpaned1), scrolledwindow2, FALSE, TRUE);
  gtk_widget_set_size_request (scrolledwindow2, 280, -1);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN);

  pref_pluginlist = gtk_tree_view_new ();
  gtk_widget_show (pref_pluginlist);
  gtk_container_add (GTK_CONTAINER (scrolledwindow2), pref_pluginlist);

  table5 = gtk_table_new (5, 2, FALSE);
  gtk_widget_show (table5);
  gtk_paned_pack2 (GTK_PANED (hpaned1), table5, TRUE, TRUE);
  gtk_widget_set_size_request (table5, 400, -1);

  label11 = gtk_label_new ("Description");
  gtk_widget_show (label11);
  gtk_table_attach (GTK_TABLE (table5), label11, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label11), 0, 0.5);

  label12 = gtk_label_new ("Author(s)");
  gtk_widget_show (label12);
  gtk_table_attach (GTK_TABLE (table5), label12, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5);

  label13 = gtk_label_new ("Email");
  gtk_widget_show (label13);
  gtk_table_attach (GTK_TABLE (table5), label13, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5);

  label14 = gtk_label_new ("Website");
  gtk_widget_show (label14);
  gtk_table_attach (GTK_TABLE (table5), label14, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5);

  pref_plugin_descr = gtk_entry_new ();
  gtk_widget_show (pref_plugin_descr);
  gtk_table_attach (GTK_TABLE (table5), pref_plugin_descr, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_descr), FALSE);
  gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_descr), 9679);

  pref_plugin_author = gtk_entry_new ();
  gtk_widget_show (pref_plugin_author);
  gtk_table_attach (GTK_TABLE (table5), pref_plugin_author, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_author), FALSE);
  gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_author), 9679);

  pref_plugin_email = gtk_entry_new ();
  gtk_widget_show (pref_plugin_email);
  gtk_table_attach (GTK_TABLE (table5), pref_plugin_email, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_email), FALSE);
  gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_email), 9679);

  pref_plugin_website = gtk_entry_new ();
  gtk_widget_show (pref_plugin_website);
  gtk_table_attach (GTK_TABLE (table5), pref_plugin_website, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_website), FALSE);
  gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_website), 9679);

  pref_plugin_configure = gtk_button_new_with_mnemonic ("Configure");
  gtk_widget_show (pref_plugin_configure);
  gtk_table_attach (GTK_TABLE (table5), pref_plugin_configure, 1, 2, 4, 5,
                    (GtkAttachOptions) (0),
                    (GtkAttachOptions) (0), 0, 0);

  label3 = gtk_label_new ("Plugins");
  gtk_widget_show (label3);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook2), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook2), 2), label3);

  g_signal_connect ((gpointer) pref_soundcard, "changed",
                    G_CALLBACK (on_pref_soundcard_changed),
                    NULL);
  g_signal_connect ((gpointer) pref_samplerate, "changed",
                    G_CALLBACK (on_pref_samplerate_changed),
                    NULL);
  g_signal_connect ((gpointer) pref_replaygain_scale, "clicked",
                    G_CALLBACK (on_pref_replaygain_scale_clicked),
                    NULL);
  g_signal_connect ((gpointer) pref_src_quality, "changed",
                    G_CALLBACK (on_pref_src_quality_changed),
                    NULL);
  g_signal_connect ((gpointer) pref_replaygain_mode, "changed",
                    G_CALLBACK (on_pref_replaygain_mode_changed),
                    NULL);
  g_signal_connect ((gpointer) pref_close_send_to_tray, "clicked",
                    G_CALLBACK (on_pref_close_send_to_tray_clicked),
                    NULL);
  g_signal_connect ((gpointer) pref_pluginlist, "cursor_changed",
                    G_CALLBACK (on_pref_pluginlist_cursor_changed),
                    NULL);
  g_signal_connect ((gpointer) pref_plugin_configure, "clicked",
                    G_CALLBACK (on_pref_plugin_configure_activate),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (prefwin, prefwin, "prefwin");
  GLADE_HOOKUP_OBJECT (prefwin, notebook2, "notebook2");
  GLADE_HOOKUP_OBJECT (prefwin, table3, "table3");
  GLADE_HOOKUP_OBJECT (prefwin, label4, "label4");
  GLADE_HOOKUP_OBJECT (prefwin, pref_soundcard, "pref_soundcard");
  GLADE_HOOKUP_OBJECT (prefwin, label5, "label5");
  GLADE_HOOKUP_OBJECT (prefwin, pref_samplerate, "pref_samplerate");
  GLADE_HOOKUP_OBJECT (prefwin, label6, "label6");
  GLADE_HOOKUP_OBJECT (prefwin, label8, "label8");
  GLADE_HOOKUP_OBJECT (prefwin, label9, "label9");
  GLADE_HOOKUP_OBJECT (prefwin, pref_replaygain_scale, "pref_replaygain_scale");
  GLADE_HOOKUP_OBJECT (prefwin, pref_src_quality, "pref_src_quality");
  GLADE_HOOKUP_OBJECT (prefwin, pref_replaygain_mode, "pref_replaygain_mode");
  GLADE_HOOKUP_OBJECT (prefwin, Sound, "Sound");
  GLADE_HOOKUP_OBJECT (prefwin, table4, "table4");
  GLADE_HOOKUP_OBJECT (prefwin, label7, "label7");
  GLADE_HOOKUP_OBJECT (prefwin, pref_close_send_to_tray, "pref_close_send_to_tray");
  GLADE_HOOKUP_OBJECT (prefwin, label2, "label2");
  GLADE_HOOKUP_OBJECT (prefwin, hpaned1, "hpaned1");
  GLADE_HOOKUP_OBJECT (prefwin, scrolledwindow2, "scrolledwindow2");
  GLADE_HOOKUP_OBJECT (prefwin, pref_pluginlist, "pref_pluginlist");
  GLADE_HOOKUP_OBJECT (prefwin, table5, "table5");
  GLADE_HOOKUP_OBJECT (prefwin, label11, "label11");
  GLADE_HOOKUP_OBJECT (prefwin, label12, "label12");
  GLADE_HOOKUP_OBJECT (prefwin, label13, "label13");
  GLADE_HOOKUP_OBJECT (prefwin, label14, "label14");
  GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_descr, "pref_plugin_descr");
  GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_author, "pref_plugin_author");
  GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_email, "pref_plugin_email");
  GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_website, "pref_plugin_website");
  GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_configure, "pref_plugin_configure");
  GLADE_HOOKUP_OBJECT (prefwin, label3, "label3");

  return prefwin;
}