Mercurial > audlegacy-plugins
diff src/sid/xs_about.c @ 12:3da1b8942b8b trunk
[svn] - remove src/Input src/Output src/Effect src/General src/Visualization src/Container
author | nenolod |
---|---|
date | Mon, 18 Sep 2006 03:14:20 -0700 |
parents | src/Input/sid/xs_about.c@13389e613d67 |
children | 6c3c7b841382 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/sid/xs_about.c Mon Sep 18 03:14:20 2006 -0700 @@ -0,0 +1,171 @@ +/* + xmms-sid - SIDPlay input plugin for X MultiMedia System (XMMS) + + Aboutbox dialog + + Programmed and designed by Matti 'ccr' Hamalainen <ccr@tnsp.org> + (C) Copyright 1999-2005 Tecnic Software productions (TNSP) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +#include "xmms-sid.h" +#include <gtk/gtk.h> +#include "xmms-sid-logo.xpm" + + +static GtkWidget *xs_aboutwin = NULL; + + +gint xs_about_ok(void) +{ + gtk_widget_destroy(xs_aboutwin); + xs_aboutwin = NULL; + return 0; +} + + +/* + * Execute the about dialog + */ +void xs_about(void) +{ + GtkWidget *about_vbox1; + GtkWidget *about_frame; + GtkWidget *about_logo; + GdkPixmap *about_logo_pixmap = NULL, *about_logo_mask = NULL; + GtkWidget *about_scrwin; + GtkWidget *about_text; + GtkWidget *alignment6; + GtkWidget *about_close; + + /* Check if there already is an open about window */ + if (xs_aboutwin != NULL) { + gdk_window_raise(xs_aboutwin->window); + return; + } + + /* No, create one ... */ + xs_aboutwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_type_hint (GTK_WINDOW(xs_aboutwin), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_widget_set_name(xs_aboutwin, "xs_aboutwin"); + g_object_set_data(G_OBJECT(xs_aboutwin), "xs_aboutwin", xs_aboutwin); + gtk_window_set_title(GTK_WINDOW(xs_aboutwin), "About " PACKAGE_STRING); + gtk_window_set_default_size(GTK_WINDOW(xs_aboutwin), 300, -1); + + about_vbox1 = gtk_vbox_new(FALSE, 0); + gtk_widget_set_name(about_vbox1, "about_vbox1"); + gtk_widget_ref(about_vbox1); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "about_vbox1", about_vbox1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(about_vbox1); + gtk_container_add(GTK_CONTAINER(xs_aboutwin), about_vbox1); + + about_frame = gtk_frame_new(NULL); + gtk_widget_set_name(about_frame, "about_frame"); + gtk_widget_ref(about_frame); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "about_frame", about_frame, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(about_frame); + gtk_box_pack_start(GTK_BOX(about_vbox1), about_frame, FALSE, FALSE, 0); + gtk_container_set_border_width(GTK_CONTAINER(about_frame), 4); + + gtk_frame_set_shadow_type(GTK_FRAME(about_frame), GTK_SHADOW_OUT); + + /* Create the Gdk data for logo pixmap */ + gtk_widget_realize(xs_aboutwin); + about_logo_pixmap = gdk_pixmap_create_from_xpm_d(xs_aboutwin->window, + &about_logo_mask, NULL, (gchar **) xmms_sid_logo_xpm); + + about_logo = gtk_pixmap_new(about_logo_pixmap, about_logo_mask); + + /* Create logo widget */ + gtk_widget_set_name(about_logo, "about_logo"); + gtk_widget_ref(about_logo); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "about_logo", about_logo, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(about_logo); + gtk_container_add(GTK_CONTAINER(about_frame), about_logo); + gtk_misc_set_padding(GTK_MISC(about_logo), 0, 6); + + about_scrwin = gtk_scrolled_window_new(NULL, NULL); + gtk_widget_set_name(about_scrwin, "about_scrwin"); + gtk_widget_ref(about_scrwin); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "about_scrwin", about_scrwin, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(about_scrwin); + gtk_box_pack_start(GTK_BOX(about_vbox1), about_scrwin, TRUE, TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(about_scrwin), 8); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(about_scrwin), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + + about_text = gtk_text_view_new(); + gtk_widget_set_name(about_text, "about_text"); + gtk_widget_ref(about_text); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "about_text", about_text, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(about_text); + gtk_container_add(GTK_CONTAINER(about_scrwin), about_text); + gtk_widget_set_usize(about_text, -2, 100); + gtk_text_buffer_set_text( GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(about_text))), + "\n" + "(C) Copyright 1999-2005\n" + "\tTecnic Software productions (TNSP)\n" + "\n" "Programming and design\n" "\tMatti 'ccr' H\303\244m\303\244l\303\244inen\n" "\n" +#ifdef HAVE_SIDPLAY1 + "libSIDPlay1 created by\n" "\tMichael Schwendt\n" "\n" +#endif +#ifdef HAVE_SIDPLAY2 + "libSIDPlay2 and reSID created by\n" + "\tSimon White, Dag Lem,\n" "\tMichael Schwendt and rest.\n" "\n" +#endif + "BMP-SID and Audacious port written by\n" + "\tGiacomo Lozito from develia.org\n" + "\n" + "Original XMMS-SID (v0.4) by\n" "\tWillem Monsuwe\n" "\n" + "Greetings fly out to ...\n" + "\tEveryone at #Linux.Fi, #Fireball,\n" + "\t#TNSP and #c-64 of IRCNet, #xmms\n" + "\tof Freenode.net.\n" + "\n" + "\tDekadence, PWP, Byterapers,\n" + "\tmfx, Unique, Fairlight, iSO,\n" + "\tWrath Designs, Padua, Extend,\n" + "\tPHn, Creators, Cosine, tAAt,\n" "\tViruz, Crest and Skalaria.\n" "\n" + "Special thanks\n" + "\tGerfried 'Alfie' Fuchs\n" + "\tAndreas 'mrsid' Varga\n" "\tAll the betatesters.\n" "\tAll the users!\n", + -1); + + alignment6 = gtk_alignment_new(0.5, 0.5, 0.18, 1); + gtk_widget_set_name(alignment6, "alignment6"); + gtk_widget_ref(alignment6); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "alignment6", alignment6, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(alignment6); + gtk_box_pack_start(GTK_BOX(about_vbox1), alignment6, FALSE, TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(alignment6), 8); + + about_close = gtk_button_new_with_label("Close"); + gtk_widget_set_name(about_close, "about_close"); + gtk_widget_ref(about_close); + g_object_set_data_full(G_OBJECT(xs_aboutwin), "about_close", about_close, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show(about_close); + gtk_container_add(GTK_CONTAINER(alignment6), about_close); + GTK_WIDGET_SET_FLAGS(about_close, GTK_CAN_DEFAULT); + + gtk_signal_connect(GTK_OBJECT(about_close), "clicked", GTK_SIGNAL_FUNC(xs_about_ok), NULL); + + gtk_widget_show(xs_aboutwin); +}