#include "config.h" #include #include #include #include #include #include #include void priority_value_changed (GtkWidget *w, int *changed_value) { *changed_value = (int) GTK_ADJUSTMENT(w)->value; } void config_ok(GtkWidget *w, GtkWidget *window) { memcpy(my_effect, my_effect_old, sizeof(my_effect)); point_general->beat = point_general->old_beat; point_general->max_fps = point_general->old_max_fps; gtk_widget_destroy (window); } void config_cancel(GtkWidget *w, GtkWidget *window) { memcpy(my_effect_old, my_effect, sizeof(my_effect_old)); point_general->old_beat = point_general->beat; point_general->old_max_fps = point_general->max_fps; gtk_widget_destroy (window); } void config_save(GtkWidget *w, GtkWidget *window) { ConfigFile *f; gchar *filename; int i; memcpy(my_effect, my_effect_old, sizeof(my_effect)); point_general->beat = point_general->old_beat; point_general->max_fps = point_general->old_max_fps; filename = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL); if (!(f = xmms_cfg_open_file(filename))) return; for (i = 0; i < EFFECT_NUMBER; i++) xmms_cfg_write_int(f, section_name, my_effect_old[i].name, my_effect_old[i].value); xmms_cfg_write_int(f, section_name, "Beat", point_general->old_beat); xmms_cfg_write_int(f, section_name, "Fps", point_general->old_max_fps); xmms_cfg_write_int(f, section_name, "Infos", point_general->infos); xmms_cfg_write_int(f, section_name, "Width", point_general->WIDTH); xmms_cfg_write_int(f, section_name, "Height", point_general->HEIGHT); xmms_cfg_write_file(f, filename); xmms_cfg_free(f); g_free(filename); } void nebulus_config (void) { static GtkWidget *window_config = NULL; GtkWidget *hbox, *vbox, *frame, *label, *table; GtkWidget *hbutton, *ok, *cancel, *save; GtkWidget *hbox2, *frame2, *label2, *hscale2; GtkWidget *vbox2, *hbox3, *label3, *hscale3; GtkObject *adjustment2, *adjustment3; int i, j; setlocale (LC_MESSAGES, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); if (window_config) return; if (!point_general->config_load) { point_general->config_load = TRUE; config_load(); } memcpy(my_effect_old, my_effect, sizeof(my_effect_old)); point_general->old_beat = point_general->beat; point_general->old_max_fps = point_general->max_fps; window_config = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW (window_config), _("Nebulus Configuration")); gtk_window_set_policy(GTK_WINDOW (window_config), FALSE, FALSE, FALSE); gtk_window_set_position(GTK_WINDOW (window_config), GTK_WIN_POS_MOUSE); gtk_signal_connect(GTK_OBJECT(window_config), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window_config); vbox = gtk_vbox_new(FALSE, 4); gtk_container_add(GTK_CONTAINER (window_config), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 8); frame = gtk_frame_new(_("Effects priorities")); gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 4); hbox = gtk_hbox_new (FALSE, 4); gtk_container_add(GTK_CONTAINER (frame), hbox); gtk_container_set_border_width (GTK_CONTAINER (hbox), 8); table = gtk_table_new(2, EFFECT_NUMBER, FALSE); gtk_box_pack_start(GTK_BOX (hbox), table, TRUE, TRUE, 0); for (i = 0, j = 0; i < EFFECT_NUMBER; i++, j++) { GtkObject *adjustment; GtkWidget *hscale; label = gtk_label_new(my_effect[i].name); gtk_table_attach(GTK_TABLE(table), label, 0, 1, j, j+1, GTK_FILL, 0, 12, 6); adjustment = gtk_adjustment_new (my_effect[i].value, 0, 100, 0, 0, 0); hscale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment)); gtk_scale_set_digits(GTK_SCALE (hscale), 0); gtk_scale_set_value_pos(GTK_SCALE (hscale), GTK_POS_LEFT); gtk_table_attach(GTK_TABLE(table), hscale, 1, 2, j, j+1, GTK_EXPAND|GTK_FILL, 0, 12, 6); gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", GTK_SIGNAL_FUNC (priority_value_changed), &my_effect_old[i].value); } frame2 = gtk_frame_new(_("General")); gtk_box_pack_start(GTK_BOX(vbox), frame2, TRUE, TRUE, 4); vbox2 = gtk_vbox_new (FALSE, 4); gtk_container_add(GTK_CONTAINER (frame2), vbox2); gtk_container_set_border_width (GTK_CONTAINER (vbox2), 10); hbox2 = gtk_hbox_new (FALSE, 4); gtk_container_add(GTK_CONTAINER (vbox2), hbox2); gtk_container_set_border_width (GTK_CONTAINER (hbox2), 4); label2 = gtk_label_new(_("Number of beats between effects")); gtk_box_pack_start(GTK_BOX (hbox2), label2, FALSE, FALSE, 6); adjustment2 = gtk_adjustment_new (point_general->beat, 1, 10, 0, 0, 0); hscale2 = gtk_hscale_new (GTK_ADJUSTMENT(adjustment2)); gtk_scale_set_draw_value (GTK_SCALE(hscale2), TRUE); gtk_scale_set_value_pos (GTK_SCALE(hscale2), GTK_POS_LEFT); gtk_scale_set_digits (GTK_SCALE(hscale2), 0); gtk_box_pack_start (GTK_BOX (hbox2), hscale2, TRUE, TRUE, 6); gtk_signal_connect (GTK_OBJECT (adjustment2), "value_changed", GTK_SIGNAL_FUNC (priority_value_changed), &point_general->old_beat); hbox3 = gtk_hbox_new (FALSE, 4); gtk_container_add(GTK_CONTAINER (vbox2), hbox3); gtk_container_set_border_width (GTK_CONTAINER (hbox3), 4); label3 = gtk_label_new(_("Maximum FPS")); gtk_box_pack_start(GTK_BOX (hbox3), label3, FALSE, FALSE, 6); adjustment3 = gtk_adjustment_new (point_general->max_fps, 0, 200, 0, 0, 0); hscale3 = gtk_hscale_new (GTK_ADJUSTMENT(adjustment3)); gtk_scale_set_draw_value (GTK_SCALE(hscale3), TRUE); gtk_scale_set_value_pos (GTK_SCALE(hscale3), GTK_POS_LEFT); gtk_scale_set_digits (GTK_SCALE(hscale3), 0); gtk_box_pack_start (GTK_BOX (hbox3), hscale3, TRUE, TRUE, 6); gtk_signal_connect (GTK_OBJECT (adjustment3), "value_changed", GTK_SIGNAL_FUNC (priority_value_changed), &point_general->old_max_fps); hbutton = gtk_hbutton_box_new(); gtk_button_box_set_layout (GTK_BUTTON_BOX(hbutton), GTK_BUTTONBOX_END); gtk_button_box_set_spacing (GTK_BUTTON_BOX(hbutton), 5); gtk_box_pack_start (GTK_BOX (vbox), hbutton, FALSE, FALSE, 0); ok = gtk_button_new_with_label ("Ok"); gtk_box_pack_start (GTK_BOX (hbutton), ok, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT); gtk_widget_grab_default (ok); gtk_signal_connect (GTK_OBJECT (ok), "clicked", GTK_SIGNAL_FUNC(config_ok), window_config); cancel = gtk_button_new_with_label (_("Cancel")); gtk_box_pack_start (GTK_BOX (hbutton), cancel, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (cancel), "clicked", GTK_SIGNAL_FUNC(config_cancel), window_config); save = gtk_button_new_with_label (_("Save")); gtk_box_pack_start (GTK_BOX (hbutton), save, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (save, GTK_CAN_DEFAULT); gtk_signal_connect (GTK_OBJECT (save), "clicked", GTK_SIGNAL_FUNC(config_save), window_config); gtk_widget_show_all (window_config); }