Initial push
[shermanaquarium] / sherman-aquarium / shermans / settings.c
1
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <gai/gai.h>
5 #include "aquarium.h"
6 #include "../config.h"
7 #include "fish.h"
8 #include "bubble.h"
9 #include "date.h"
10 #include "clock.h"
11 #include "background.h"
12 #include "over.h"
13 #include "leds.h"
14 #include "bottom.h"
15 #ifdef XMMS
16 #include "xmms_sn.h"
17 #endif
18 #include "soundeffects.h"
19 #include "thermometer.h"
20
21 /* Over "plugins" */
22 #include "matrix.h"
23 #include "plasma.h"
24 #include "tetris.h"
25 #include "settings.h"
26
27
28
29 void bubble_save_settings(void)
30 {
31     Bubble_settings *bubble_settings;
32
33     bubble_settings = bubble_get_settings_ptr();
34
35     gai_save_int("bubble/max_bubbles", bubble_settings->max_bubbles);
36
37 }
38
39 void thermometer_load_settings(void)
40 {
41     Thermometer_settings *thermometer_settings;
42
43     thermometer_settings = thermometer_get_settings_ptr();
44
45     thermometer_settings->draw1 = gai_load_int_with_default("thermometer/draw1", DRAW_BEFORE);
46     thermometer_settings->vert1 = gai_load_int_with_default("thermometer/vert1", BOTTOM);
47     thermometer_settings->horz1 = gai_load_int_with_default("thermometer/horz1", RIGHT);
48     thermometer_settings->split1 = gai_load_int_with_default("thermometer/split1", FALSE);
49
50     thermometer_settings->c1 = gai_load_gaicolor_with_default("thermometer/c1", (GaiColor){0xe0, 0x00,0x00, 0xff});
51     thermometer_settings->c1_s = gai_load_gaicolor_with_default("thermometer/c1_s", (GaiColor){0x00, 0xe0, 0xFF, 0x00});
52
53     thermometer_settings->messure1 = gai_load_int_with_default("thermometer/cpu1", STATUS_CPU);
54     thermometer_settings->messure1_s = gai_load_int_with_default("thermometer/cpu1_s", STATUS_OFF);
55     thermometer_settings->roof1 = gai_load_int_with_default("thermometer/roof1", 33600/8);
56     thermometer_settings->roof1_s = gai_load_int_with_default("thermometer/roof1_s", 33600/8);
57     thermometer_settings->mount_point1_s = gai_load_string_with_default("thermometer/mount_point1_s", "/");
58     thermometer_settings->mount_point1 = gai_load_string_with_default("thermometer/mount_point1", "/");
59
60     thermometer_settings->draw2 = gai_load_int_with_default("thermometer/draw2", DRAW_BEFORE);
61     thermometer_settings->vert2 = gai_load_int_with_default("thermometer/vert2", BOTTOM);
62     thermometer_settings->horz2 = gai_load_int_with_default("thermometer/horz2", RIGHT);
63     thermometer_settings->split2 = gai_load_int_with_default("thermometer/split2", FALSE);
64
65     thermometer_settings->c2 = gai_load_gaicolor_with_default("thermometer/c2", (GaiColor){0x00, 0xe0, 0x00, 0xff});
66     thermometer_settings->c2_s = gai_load_gaicolor_with_default("thermometer/c2_s", (GaiColor){0xe0, 0xe0, 0x00, 0xff});
67
68     thermometer_settings->messure2 = gai_load_int_with_default("thermometer/cpu2", STATUS_OFF);
69     thermometer_settings->messure2_s = gai_load_int_with_default("thermometer/cpu2_s", STATUS_OFF);
70     thermometer_settings->roof2 = gai_load_int_with_default("thermometer/roof2", 33600/8);
71     thermometer_settings->roof2_s = gai_load_int_with_default("thermometer/roof2_s", 33600/8);
72     thermometer_settings->mount_point2_s = gai_load_string_with_default("thermometer/mount_point2_s", "/");
73     thermometer_settings->mount_point2 = gai_load_string_with_default("thermometer/mount_point2", "/");
74
75
76
77 }
78
79 void thermometer_save_settings(void)
80 {
81     Thermometer_settings *thermometer_settings;
82
83     thermometer_settings = thermometer_get_settings_ptr();
84
85     gai_save_int("thermometer/draw1", thermometer_settings->draw1);
86     gai_save_int("thermometer/vert1", thermometer_settings->vert1);
87     gai_save_int("thermometer/horz1", thermometer_settings->horz1);
88     gai_save_int("thermometer/split1", thermometer_settings->split1);
89     gai_save_gaicolor("thermometer/c1",  thermometer_settings->c1);
90     gai_save_gaicolor("thermometer/c1_s", thermometer_settings->c1_s);
91
92     gai_save_int("thermometer/cpu1", thermometer_settings->messure1);
93     gai_save_int("thermometer/cpu1_s", thermometer_settings->messure1_s);
94     gai_save_int("thermometer/roof1", thermometer_settings->roof1);
95     gai_save_int("thermometer/roof1_s", thermometer_settings->roof1_s);
96     gai_save_string("thermometer/mount_point1_s", thermometer_settings->mount_point1_s);
97     gai_save_string("thermometer/mount_point1", thermometer_settings->mount_point1);
98
99
100     gai_save_int("thermometer/draw2", thermometer_settings->draw2);
101     gai_save_int("thermometer/vert2", thermometer_settings->vert2);
102     gai_save_int("thermometer/horz2", thermometer_settings->horz2);
103     gai_save_int("thermometer/split2", thermometer_settings->split2);
104     gai_save_gaicolor("thermometer/c2", thermometer_settings->c2);
105     gai_save_gaicolor("thermometer/c2_s", thermometer_settings->c2_s);
106
107
108     gai_save_int("thermometer/cpu2", thermometer_settings->messure2);
109     gai_save_int("thermometer/cpu2_s", thermometer_settings->messure2_s);
110     gai_save_int("thermometer/roof2", thermometer_settings->roof2);
111     gai_save_int("thermometer/roof2_s", thermometer_settings->roof2_s);
112     gai_save_string("thermometer/mount_point2_s", thermometer_settings->mount_point2_s);
113     gai_save_string("thermometer/mount_point2", thermometer_settings->mount_point2);
114
115
116
117 }
118
119 void tetris_load_settings(void)
120 {
121     Tetris_settings *tetris_settings;
122
123     tetris_settings = tetris_get_settings_ptr();
124
125     tetris_settings->size_limit = gai_load_bool_with_default("tetris/size_limit", FALSE);
126     tetris_settings->show_next = gai_load_bool_with_default("tetris/show_next", TRUE);
127     tetris_settings->width = gai_load_int_with_default("tetris/width", 10);
128     tetris_settings->height = gai_load_int_with_default("tetris/height", 10);
129 }    
130
131 void tetris_save_settings(void)
132 {
133     Tetris_settings *tetris_settings;
134
135     tetris_settings = tetris_get_settings_ptr();
136
137     gai_save_bool("tetris/size_limit", tetris_settings->size_limit);
138     gai_save_int("tetris/width", tetris_settings->width);
139     gai_save_int("tetris/height", tetris_settings->height);
140     gai_save_bool("tetris/show_next", tetris_settings->show_next);
141 }    
142
143
144 void bubble_load_settings(void)
145 {
146     Bubble_settings *bubble_settings;
147
148     bubble_settings = bubble_get_settings_ptr();
149
150     bubble_settings->max_bubbles = gai_load_int_with_default("bubble/max_bubbles", 5);
151
152 }
153
154
155 void date_load_settings(void)
156 {
157     Date_settings *date_settings;
158
159     date_settings = date_get_settings_ptr();
160       
161     date_settings->on = gai_load_bool_with_default("date/on", TRUE);
162
163     date_settings->draw = gai_load_int_with_default("date/draw", DRAW_AFTER);
164
165
166     date_settings->vert = gai_load_bool_with_default("date/vert", TOP);
167     date_settings->horz = gai_load_bool_with_default("date/horz", RIGHT);
168
169     date_settings->c = gai_load_gaicolor_with_default("date/color", (GaiColor){208, 208, 208, 80});
170
171 }
172
173 void date_save_settings(void)
174 {
175
176     Date_settings *date_settings;
177
178     date_settings = date_get_settings_ptr();
179
180     
181     gai_save_bool("date/on", date_settings->on);
182     gai_save_bool("date/draw", date_settings->draw);
183
184     gai_save_bool("date/horz", date_settings->horz);
185     gai_save_bool("date/vert", date_settings->vert);
186
187     gai_save_gaicolor("date/color", date_settings->c);
188
189 }
190
191
192 void clock_load_settings(void)
193 {
194     Clock_settings *clock_settings;
195
196     clock_settings = clock_get_settings_ptr();
197
198     
199     clock_settings->type = gai_load_int_with_default("clock/type", CLOCK_OFF);
200
201     clock_settings->analog_seconds = gai_load_bool_with_default("clock/analog_seconds", TRUE);
202     clock_settings->digital_seconds = gai_load_bool_with_default("clock/digital_seconds", TRUE);
203
204
205     clock_settings->draw = gai_load_int_with_default("clock/draw", DRAW_BEFORE);
206
207     clock_settings->vert = gai_load_int_with_default("clock/vert", CENTER);
208     clock_settings->horz = gai_load_int_with_default("clock/horz", CENTER);
209
210
211     /* Set up some mint green colour as default */
212
213     clock_settings->digital_colour = gai_load_gaicolor_with_default("clock/digital_colour", (GaiColor){4, 226, 145, 80});
214     clock_settings->digital_blinking = gai_load_bool_with_default("clock/digital_blinking", TRUE);
215     clock_settings->digital_fontsize = gai_load_int_with_default("clock/digital_fontsize", CLOCK_SMALL_FONT);
216
217
218     /* Some yellow colour */
219     clock_settings->fuzzy_colour = gai_load_gaicolor_with_default("clock/fuzzy_colour", (GaiColor){226, 226, 4, 80});
220
221     /* Some red version */
222     clock_settings->analog_colour_hour = gai_load_gaicolor_with_default("clock/analog_colour_hour", (GaiColor){226, 49, 4, 80});
223
224     /* Green */
225     clock_settings->analog_colour_min = gai_load_gaicolor_with_default("clock/analog_colour_min", (GaiColor){23, 226, 4, 80});
226
227     /* Yellow */
228     clock_settings->analog_colour_sec = gai_load_gaicolor_with_default("clock/analog_colour_sec", (GaiColor){255, 0, 255, 80});
229
230     clock_settings->analog_keep_circular = gai_load_bool_with_default("clock/analog_keep_circular", TRUE);
231
232
233 }
234
235
236 void clock_save_settings(void)
237 {
238     Clock_settings *clock_settings;
239
240     clock_settings = clock_get_settings_ptr();
241
242     gai_save_int("clock/type", clock_settings->type);
243
244     gai_save_bool("clock/analog_seconds", clock_settings->analog_seconds);
245     gai_save_bool("clock/digital_seconds", clock_settings->digital_seconds);
246
247     gai_save_int("clock/draw", clock_settings->draw);
248     gai_save_int("clock/horz", clock_settings->horz);
249     gai_save_int("clock/vert", clock_settings->vert);
250
251     gai_save_gaicolor("clock/digital_colour", clock_settings->digital_colour);
252     gai_save_bool("clock/digital_blinking", clock_settings->digital_blinking);
253     gai_save_int("clock/digital_fontsize", clock_settings->digital_fontsize);
254
255     gai_save_gaicolor("clock/fuzzy_colour", clock_settings->fuzzy_colour);
256
257     gai_save_gaicolor("clock/analog_colour_hour",clock_settings->analog_colour_hour);
258     gai_save_gaicolor("clock/analog_colour_min", clock_settings->analog_colour_min);
259     gai_save_gaicolor("clock/analog_colour_sec", clock_settings->analog_colour_sec);
260
261     gai_save_bool("clock/analog_keep_circular",clock_settings->analog_keep_circular);
262
263
264 }
265
266
267 void background_load_settings(void)
268 {
269     Background_settings *background_settings;
270
271     background_settings = background_get_settings_ptr();
272
273
274     background_settings->type = gai_load_int_with_default("background/type", BG_SHADED);
275
276     background_settings->imagename = gai_load_string_with_default("background/imagename", "");
277     background_settings->imagename_new = NULL;
278
279     background_settings->solid_c = gai_load_gaicolor_with_default("background/solid", (GaiColor){12, 100, 220, 255});
280     background_settings->shaded_top_c = gai_load_gaicolor_with_default("background/shaded_top", (GaiColor){83, 155, 220, 255});
281     background_settings->shaded_bot_c = gai_load_gaicolor_with_default("background/shaded_bot",(GaiColor){5, 40, 80, 255});
282 }
283
284
285 void background_save_settings(void)
286 {
287     Background_settings *background_settings;
288
289     background_settings = background_get_settings_ptr();
290
291     gai_save_string("background/imagename", background_settings->imagename);
292
293     gai_save_bool("background/type", background_settings->type);
294
295     gai_save_gaicolor("background/solid", background_settings->solid_c);
296     gai_save_gaicolor("background/shaded_top", background_settings->shaded_top_c);
297     gai_save_gaicolor("background/shaded_bot", background_settings->shaded_bot_c);
298
299 }
300
301
302 void bottom_load_settings(void)
303 {
304     Bottom_settings *bottom_settings;
305
306     bottom_settings = bottom_get_settings_ptr();
307
308     bottom_settings->have_sea_floor = gai_load_bool_with_default("bottom/have_sea_floor", TRUE);
309     bottom_settings->max_plants = gai_load_int_with_default("bottom/max_plants", 5);
310     bottom_settings->num_bottom_animals = gai_load_int_with_default("bottom/num_bottom_animals", 1);
311     bottom_settings->scale = gai_load_int_with_default("bottom/scale", 30);
312     bottom_settings->random_plants = gai_load_bool_with_default("bottom/random_plants", TRUE);
313
314 }
315
316 void bottom_save_settings(void)
317 {
318
319     Bottom_settings *bottom_settings;
320
321     bottom_settings = bottom_get_settings_ptr();
322
323     gai_save_bool("bottom/have_sea_floor",bottom_settings->have_sea_floor);
324     gai_save_bool("bottom/random_plants",bottom_settings->random_plants);
325     gai_save_int("bottom/max_plants",bottom_settings->max_plants);
326     gai_save_int("bottom/scale",bottom_settings->scale);
327     gai_save_int("bottom/num_bottom_animals",bottom_settings->num_bottom_animals);
328
329
330 }
331
332
333
334
335 void fish_load_settings(void)
336 {
337     int numfish = 0;
338     Fish_settings *fish_settings;
339     AquariumData *ad;
340
341     ad = aquarium_get_settings_ptr();
342     fish_settings = fish_get_settings_ptr();
343     
344     fish_settings->eat = gai_load_bool_with_default("fish/eat", TRUE);
345     fish_settings->explode = gai_load_bool_with_default("fish/explode", TRUE);
346
347     fish_settings->scale = gai_load_int_with_default("fish/scale", DEFAULT_SCALE);
348
349
350     fish_settings->speed = gai_load_int_with_default("fish/speed", DEFAULT_SPEED);
351
352     fish_settings->scale_diff = gai_load_bool_with_default("fish/scale_diff", TRUE);
353     fish_settings->rebirth = gai_load_bool_with_default("fish/rebirth", FALSE);
354
355     fish_settings->swordfish_agr = gai_load_int_with_default("fish/swordfish_agr", 75);
356     fish_settings->hunter_agr = gai_load_int_with_default("fish/hunter_agr", 75);
357
358
359     fish_settings->num_fish = gai_load_int_with_default("fish/num_fish", NRFISH);
360     fish_settings->type = gai_load_int_with_default("fish/type", RANDOM_FISH);
361
362
363     numfish += fish_settings->fish1 = gai_load_int_with_default("fish/fish1", 1);
364     numfish += fish_settings->fish2 = gai_load_int_with_default("fish/fish2", 1);
365     numfish += fish_settings->fish3 = gai_load_int_with_default("fish/fish3", 1);
366     numfish += fish_settings->fish4 = gai_load_int_with_default("fish/fish4", 1);
367     numfish += fish_settings->fish5 = gai_load_int_with_default("fish/fish5", 1);
368     numfish += fish_settings->fish6 = gai_load_int_with_default("fish/fish6", 1);
369     numfish += fish_settings->swordfish = gai_load_int_with_default("fish/swordfish", 1);
370     numfish += fish_settings->blowfish = gai_load_int_with_default("fish/blowfish", 1);
371     numfish += fish_settings->fillmore = gai_load_int_with_default("fish/fillmore", 1);
372     numfish += fish_settings->sherman = gai_load_int_with_default("fish/sherman", 1);
373     numfish += fish_settings->prey = gai_load_int_with_default("fish/prey", 1);
374     numfish += fish_settings->hunter = gai_load_int_with_default("fish/hunter", 1);
375     numfish += fish_settings->lori = gai_load_int_with_default("fish/lori", 1);
376     numfish += fish_settings->ernest = gai_load_int_with_default("fish/ernest", 1);
377     numfish += fish_settings->squid = gai_load_int_with_default("fish/squid", 1);
378     numfish += fish_settings->megan = gai_load_int_with_default("fish/megan", 1);
379     numfish += fish_settings->bdweller = gai_load_int_with_default("fish/bdweller", 1);
380     numfish += fish_settings->hawthorne = gai_load_int_with_default("fish/hawthorne", 1);
381
382     if(fish_settings->type == SELECTION_FISH){
383         fish_settings->num_fish = numfish;
384     }
385
386     if(fish_settings->type == RANDOM_POP_FISH)
387         fish_settings->num_fish = g_rand_int_range(ad->rnd, 1, 21);
388
389
390 }
391
392
393
394
395 void fish_save_settings(void)
396 {
397     Fish_settings *fish_settings;
398
399     fish_settings = fish_get_settings_ptr();
400   
401     gai_save_bool("fish/eat", fish_settings->eat);
402     gai_save_bool("fish/explode", fish_settings->explode);
403     gai_save_int("fish/scale", fish_settings->scale);
404     
405     gai_save_int("fish/swordfish_agr", fish_settings->swordfish_agr);
406     gai_save_int("fish/hunter_agr", fish_settings->hunter_agr);
407
408
409     gai_save_bool("fish/scale_diff", fish_settings->scale_diff);
410     gai_save_int("fish/type",  fish_settings->type);
411     gai_save_bool("fish/rebirth", fish_settings->rebirth);
412
413
414     if(fish_settings->type == SELECTION_FISH)
415         fish_settings->num_fish = fish_settings->fish1 + fish_settings->fish2 + fish_settings->fish3 + 
416             fish_settings->fish4 + fish_settings->fish5 + fish_settings->fish6 + fish_settings->swordfish +
417             fish_settings->blowfish + fish_settings->fillmore + fish_settings->sherman + fish_settings->prey +
418             fish_settings->hunter + fish_settings->lori + fish_settings->ernest + fish_settings->squid + 
419             fish_settings->megan;
420
421     gai_save_int("fish/fish1", fish_settings->fish1);
422     gai_save_int("fish/fish2", fish_settings->fish2);
423     gai_save_int("fish/fish3", fish_settings->fish3);
424     gai_save_int("fish/fish4", fish_settings->fish4);
425     gai_save_int("fish/fish5", fish_settings->fish5);
426     gai_save_int("fish/fish6", fish_settings->fish6);
427     gai_save_int("fish/swordfish", fish_settings->swordfish);
428     gai_save_int("fish/blowfish", fish_settings->blowfish);
429     gai_save_int("fish/fillmore", fish_settings->fillmore);
430     gai_save_int("fish/sherman", fish_settings->sherman);
431     gai_save_int("fish/prey", fish_settings->prey);
432     gai_save_int("fish/hunter", fish_settings->hunter);
433     gai_save_int("fish/lori", fish_settings->lori);
434     gai_save_int("fish/ernest", fish_settings->ernest);
435     gai_save_int("fish/squid", fish_settings->squid);
436     gai_save_int("fish/megan", fish_settings->megan);
437     gai_save_int("fish/bdweller", fish_settings->bdweller);
438     gai_save_int("fish/hawthorne", fish_settings->hawthorne);
439     gai_save_int("fish/num_fish", fish_settings->num_fish);
440
441
442 }
443
444
445 void over_load_settings(void)
446 {
447     Over_settings *over_settings;
448
449     over_settings = over_get_settings_ptr();
450
451
452     over_settings->type = gai_load_int_with_default("over/type", OVER_MATRIX);
453     over_settings->fade = gai_load_bool_with_default("over/fade", TRUE);
454     over_settings->cursor_off = gai_load_bool_with_default("over/cursor_off", TRUE);
455
456 }
457
458
459 void over_save_settings(void)
460 {
461     Over_settings *over_settings;
462
463     over_settings = over_get_settings_ptr();
464     gai_save_int("over/type", over_settings->type);
465     gai_save_bool("over/fade", over_settings->fade);
466     gai_save_bool("over/cursor_off", over_settings->cursor_off);
467
468 }
469
470 void tetris_load_highscores(void)
471 {
472     int i;
473     char tmp[100];
474
475     Tetris_highscore_table *t;
476     t = tetris_get_highscore_table_ptr();
477
478     for(i=0;i<10;i++){
479         g_snprintf(tmp, 100, "tetris/highscore%d_score", i);
480         t[i].score = gai_load_int_with_default(tmp, 10-i);
481
482         g_snprintf(tmp, 100, "tetris/highscore%d_level", i);
483         t[i].level = gai_load_int_with_default(tmp, 1);
484
485         g_snprintf(tmp, 100, "tetris/highscore%d_lines", i);
486         t[i].lines = gai_load_int_with_default(tmp, 10-i);
487     }
488
489
490 }
491
492 void tetris_save_highscores(void)
493 {
494     char tmp[100];
495     int i;
496     Tetris_highscore_table *t;
497     t = tetris_get_highscore_table_ptr();
498
499     for(i=0;i<10;i++){
500         g_snprintf(tmp, 100, "tetris/highscore%d_score", i);
501         gai_save_int(tmp, t[i].score);
502         g_snprintf(tmp, 100, "tetris/highscore%d_level", i);
503         gai_save_int(tmp, t[i].level);
504         g_snprintf(tmp, 100, "tetris/highscore%d_lines", i);
505         gai_save_int(tmp, t[i].lines);
506     }
507
508 }
509
510 void leds_load_settings(void)
511 {
512     int i;
513     char *tmp;
514     Leds_settings *leds_settings;
515
516     leds_settings = leds_get_settings_ptr();
517
518     
519     leds_settings->draw = gai_load_int_with_default("leds/draw", DRAW_AFTER);
520
521     leds_settings->horz = gai_load_int_with_default("leds/horz", LEFT);
522     leds_settings->vert = gai_load_int_with_default("leds/vert", TOP);
523
524
525     leds_settings->vert_horz = gai_load_bool_with_default("leds/vert_horz",  TRUE);
526     leds_settings->alpha = gai_load_int_with_default("leds/alpha",  0x80);
527
528     for(i=0;i<NUMLEDS;i++){
529         tmp = g_strdup_printf("leds/led%d_func", i);
530         leds_settings->leds_func[i] = gai_load_int_with_default(tmp, LEDS_OFF);
531         g_free(tmp);
532         tmp = g_strdup_printf("leds/led%d_colour", i);
533         leds_settings->leds_colour[i] = gai_load_int_with_default(tmp, LEDS_VIOLET);
534         g_free(tmp);
535         tmp = g_strdup_printf("leds/led%d_show_off", i);
536         leds_settings->leds_show_off[i] = gai_load_int_with_default(tmp, FALSE);
537         g_free(tmp);
538
539     }
540 }
541
542
543
544 void leds_save_settings(void)
545 {
546     int i;
547     char *tmp;
548     Leds_settings *leds_settings;
549
550     leds_settings = leds_get_settings_ptr();
551
552     gai_save_int("leds/draw", leds_settings->draw);
553
554     gai_save_int("leds/vert", leds_settings->vert);
555     gai_save_int("leds/horz", leds_settings->horz);
556
557     gai_save_int("leds/vert_horz", leds_settings->vert_horz);
558     gai_save_int("leds/alpha",  leds_settings->alpha);
559
560     for(i=0;i<NUMLEDS;i++){
561         tmp = g_strdup_printf("leds/led%d_func",  i);
562         gai_save_int(tmp,  leds_settings->leds_func[i]);
563         g_free(tmp);
564
565         tmp = g_strdup_printf("leds/led%d_colour", i);
566         gai_save_int(tmp, leds_settings->leds_colour[i]);
567         g_free(tmp);
568
569         tmp = g_strdup_printf("leds/led%d_show_off", i);
570         gai_save_int(tmp, leds_settings->leds_show_off[i]);
571         g_free(tmp);
572     }
573
574
575
576 }
577 #ifdef XMMS
578 void xmms_sn_load_settings(void)
579 {
580     Xmms_sn_settings *xmms_sn_settings;
581
582     xmms_sn_settings = xmms_sn_get_settings_ptr();
583
584
585     xmms_sn_settings->on = gai_load_bool_with_default("xmms_sn/on", FALSE);
586
587     xmms_sn_settings->c = gai_load_gaicolor_with_default("xmms_sn/colour", (GaiColor){45, 145, 245, 255});
588
589     xmms_sn_settings->draw = gai_load_int_with_default("xmms_sn/draw", DRAW_AFTER);
590
591     xmms_sn_settings->direction = gai_load_int_with_default("xmms_sn/direction", XMMS_SN_HORIZONTAL);
592     xmms_sn_settings->speed = gai_load_int_with_default("xmms_sn/speed", 200);
593
594
595     xmms_sn_settings->horz = gai_load_int_with_default("xmms_sn/horz", CENTER);
596     xmms_sn_settings->vert = gai_load_int_with_default("xmms_sn/vert", LEFT);
597
598     xmms_sn_settings->fb = gai_load_int_with_default("xmms_sn/fb", XMMS_SN_FORWARDS);
599
600 }
601
602 void xmms_sn_save_settings(void)
603 {
604     Xmms_sn_settings *xmms_sn_settings;
605
606     xmms_sn_settings = xmms_sn_get_settings_ptr();
607
608
609     gai_save_bool("xmms_sn/on", xmms_sn_settings->on);
610
611     gai_save_gaicolor("xmms_sn/colour", xmms_sn_settings->c);
612
613     gai_save_int("xmms_sn/draw", xmms_sn_settings->draw);
614     gai_save_int("xmms_sn/direction", xmms_sn_settings->direction);
615     gai_save_int("xmms_sn/speed", xmms_sn_settings->speed);
616
617     gai_save_int("xmms_sn/horz", xmms_sn_settings->horz);
618     gai_save_int("xmms_sn/vert", xmms_sn_settings->vert);
619     gai_save_int("xmms_sn/fb", xmms_sn_settings->fb);
620
621
622     
623 }
624 #endif
625
626 void sound_load_settings(void)
627 {
628     Sound_settings *sound_settings;
629
630     sound_settings = sound_get_settings_ptr();
631
632     sound_settings->on = gai_load_bool_with_default("sound/on", FALSE);
633
634     sound_settings->type = gai_load_int_with_default("sound/type", TYPE_MP3);
635
636
637     sound_settings->prg = gai_load_string_with_default("sound/prg", "mpg123 -q");
638
639 }
640
641 void sound_save_settings(void)
642 {
643     Sound_settings *sound_settings;
644
645     sound_settings = sound_get_settings_ptr();
646
647     gai_save_bool("sound/on", sound_settings->on);
648     gai_save_int("sound/type", sound_settings->type);
649
650
651     gai_save_string("sound/prg", sound_settings->prg);
652
653 }
654
655 void general_load_settings(void)
656 {
657     General_settings *general_settings; 
658     general_settings = general_get_settings_ptr();
659     general_settings->ratio_width = gai_load_int_with_default("general/ratio_width", 1);
660     general_settings->ratio_height = gai_load_int_with_default("general/ratio_height", 1);
661
662     general_settings->mouse_left = gai_load_int_with_default("general/mouse_left", MOUSE_OFF);
663     general_settings->mouse_middle = gai_load_int_with_default("general/mouse_middle", MOUSE_OFF);
664     general_settings->mouse_up = gai_load_int_with_default("general/mouse_up", MOUSE_OFF);
665     general_settings->mouse_down = gai_load_int_with_default("general/mouse_down", MOUSE_OFF);
666
667     general_settings->mouse_left_option = gai_load_string_with_default("general/mouse_left_option", "");
668     general_settings->mouse_middle_option = gai_load_string_with_default("general/mouse_middle_option", "");
669     general_settings->mouse_up_option = gai_load_string_with_default("general/mouse_up_option", "");
670     general_settings->mouse_down_option = gai_load_string_with_default("general/mouse_down_option", "");
671
672 }
673
674 void general_save_settings(void)
675 {
676     General_settings *general_settings; 
677     general_settings = general_get_settings_ptr();
678
679     gai_save_int("general/ratio_width", general_settings->ratio_width);
680     gai_save_int("general/ratio_height", general_settings->ratio_height);
681
682     gai_save_int("general/mouse_left",  general_settings->mouse_left);
683     gai_save_int("general/mouse_middle",  general_settings->mouse_middle);
684     gai_save_int("general/mouse_up", general_settings->mouse_up);
685     gai_save_int("general/mouse_down", general_settings->mouse_down);
686
687     gai_save_string("general/mouse_left_option", general_settings->mouse_left_option);
688     gai_save_string("general/mouse_middle_option", general_settings->mouse_middle_option);
689     gai_save_string("general/mouse_up_option", general_settings->mouse_up_option);
690     gai_save_string("general/mouse_down_option", general_settings->mouse_down_option);
691
692 }