Mercurial > audlegacy-plugins
diff src/Visualization/blur_scope/config.c @ 0:13389e613d67 trunk
[svn] - initial import of audacious-plugins tree (lots to do)
author | nenolod |
---|---|
date | Mon, 18 Sep 2006 01:11:49 -0700 |
parents | |
children | 088092a52fea |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Visualization/blur_scope/config.c Mon Sep 18 01:11:49 2006 -0700 @@ -0,0 +1,131 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#include "libaudacious/configdb.h" +#include "blur_scope.h" + + +static GtkWidget *configure_win = NULL; +static GtkWidget *vbox, *options_frame, *options_vbox; +static GtkWidget *options_colorpicker; +static GtkWidget *bbox, *ok, *cancel; + +static void +configure_ok(GtkWidget * w, gpointer data) +{ + ConfigDb *db; + gdouble color[3]; + + gtk_color_selection_get_color(GTK_COLOR_SELECTION(options_colorpicker), + color); + bscope_cfg.color = + ((guint32) (255.0 * color[0]) << 16) | + ((guint32) (255.0 * color[1]) << 8) | ((guint32) (255.0 * color[2])); + db = bmp_cfg_db_open(); + bmp_cfg_db_set_int(db, "BlurScope", "color", bscope_cfg.color); + bmp_cfg_db_close(db); + generate_cmap(); + gtk_widget_destroy(configure_win); +} + +static void +configure_cancel(GtkWidget * w, gpointer data) +{ + bscope_cfg.color = GPOINTER_TO_UINT(data); + generate_cmap(); + gtk_widget_destroy(configure_win); +} + +static void +color_changed(GtkWidget * w, gpointer data) +{ + gdouble color[3]; + gtk_color_selection_get_color(GTK_COLOR_SELECTION(options_colorpicker), + color); + bscope_cfg.color = + ((guint32) (255.0 * color[0]) << 16) | + ((guint32) (255.0 * color[1]) << 8) | ((guint32) (255.0 * color[2])); + generate_cmap(); +} + +void +bscope_configure(void) +{ + /* FIXME: convert to GtkColorSelectionDialog */ + + gdouble color[3]; + if (configure_win) + return; + + bscope_read_config(); + color[0] = ((gdouble) (bscope_cfg.color / 0x10000)) / 256; + color[1] = ((gdouble) ((bscope_cfg.color % 0x10000) / 0x100)) / 256; + color[2] = ((gdouble) (bscope_cfg.color % 0x100)) / 256; + + configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10); + gtk_window_set_title(GTK_WINDOW(configure_win), + _("Blur Scope: Color selection")); + gtk_window_set_type_hint(GTK_WINDOW(configure_win), + GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_resizable(GTK_WINDOW(configure_win), FALSE); + gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE); + g_signal_connect(G_OBJECT(configure_win), "destroy", + G_CALLBACK(gtk_widget_destroyed), &configure_win); + + vbox = gtk_vbox_new(FALSE, 5); + + options_frame = gtk_frame_new(_("Options:")); + gtk_container_set_border_width(GTK_CONTAINER(options_frame), 5); + + options_vbox = gtk_vbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(options_vbox), 5); + + options_colorpicker = gtk_color_selection_new(); + gtk_color_selection_set_color(GTK_COLOR_SELECTION(options_colorpicker), + color); + g_signal_connect(G_OBJECT(options_colorpicker), "color_changed", + G_CALLBACK(color_changed), NULL); + + gtk_box_pack_start(GTK_BOX(options_vbox), options_colorpicker, FALSE, + FALSE, 0); + gtk_widget_show(options_colorpicker); + + + gtk_container_add(GTK_CONTAINER(options_frame), options_vbox); + gtk_widget_show(options_vbox); + + gtk_box_pack_start(GTK_BOX(vbox), options_frame, TRUE, TRUE, 0); + gtk_widget_show(options_frame); + + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); + gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); + + cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); + g_signal_connect(G_OBJECT(cancel), "clicked", + G_CALLBACK(configure_cancel), + GUINT_TO_POINTER(bscope_cfg.color)); + GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); + gtk_widget_show(cancel); + + ok = gtk_button_new_from_stock(GTK_STOCK_OK); + g_signal_connect(G_OBJECT(ok), "clicked", G_CALLBACK(configure_ok), NULL); + GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0); + gtk_widget_show(ok); + + gtk_widget_show(bbox); + + gtk_container_add(GTK_CONTAINER(configure_win), vbox); + gtk_widget_show(vbox); + gtk_widget_show(configure_win); + gtk_widget_grab_default(ok); +}