📄 about.c
字号:
/* -*- linux-c -*- Copyright (C) 2004 Tom Szilagyi 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., 675 Mass Ave, Cambridge, MA 02139, USA. $Id: about.c,v 1.36 2006/09/09 19:03:58 tszilagyi Exp $*/#include <config.h>#include <gtk/gtk.h>#include <gdk/gdkkeysyms.h>#include "common.h"#include "version.h"#include "i18n.h"#include "about.h"#define MARK "+"GtkWidget * about_window;extern GtkWidget * main_window;static gintok(GtkWidget * widget, gpointer data) { gtk_widget_destroy(about_window); return TRUE;}gintabout_key_pressed(GtkWidget * widget, GdkEventKey * event, gpointer * data) { switch (event->keyval) { case GDK_q: case GDK_Q: case GDK_Escape: ok(NULL, NULL); return TRUE; }; return FALSE;}voidcreate_about_window() { GtkWidget * vbox0; GtkWidget * vbox; GtkWidget * xpm; GdkPixbuf * pixbuf; GtkWidget * frame; GtkWidget * scrolled_win; GtkWidget * view; GtkTextBuffer * buffer; GtkTextIter iter; GtkWidget * hbuttonbox; GtkWidget * ok_btn; GdkColor white = { 0, 49152, 51118, 52429 }; GdkColor blue1 = { 0, 41288, 47841, 55050 }; GdkColor blue2 = { 0, 45288, 51841, 60050 }; GdkColor blue3 = { 0, 55552, 56832, 57600}; GtkTextTag * tag; GtkTextTag * tag2; char path[MAXLEN]; about_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_transient_for(GTK_WINDOW(about_window), GTK_WINDOW(main_window)); gtk_window_set_modal(GTK_WINDOW(about_window), TRUE); gtk_widget_set_name(about_window, ""); gtk_window_set_title(GTK_WINDOW(about_window), _("About")); gtk_widget_set_size_request(about_window, 483, 430); gtk_window_set_position(GTK_WINDOW(about_window), GTK_WIN_POS_CENTER); gtk_widget_modify_bg(about_window, GTK_STATE_NORMAL, &white); g_signal_connect(G_OBJECT(about_window), "key_press_event", G_CALLBACK(about_key_pressed), NULL); vbox0 = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(about_window), vbox0); vbox = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); gtk_box_pack_end(GTK_BOX(vbox0), vbox, TRUE, TRUE, 0); hbuttonbox = gtk_hbutton_box_new(); gtk_widget_set_name(hbuttonbox, ""); gtk_box_pack_end(GTK_BOX(vbox), hbuttonbox, FALSE, TRUE, 0); gtk_button_box_set_layout(GTK_BUTTON_BOX(hbuttonbox), GTK_BUTTONBOX_END); ok_btn = gtk_button_new_from_stock (GTK_STOCK_CLOSE); gtk_widget_set_name(ok_btn, ""); g_signal_connect(ok_btn, "clicked", G_CALLBACK(ok), NULL); gtk_container_add(GTK_CONTAINER(hbuttonbox), ok_btn); gtk_widget_modify_bg(ok_btn, GTK_STATE_NORMAL, &blue1); gtk_widget_modify_bg(ok_btn, GTK_STATE_PRELIGHT, &blue2); gtk_widget_modify_bg(ok_btn, GTK_STATE_ACTIVE, &blue2); frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); scrolled_win = gtk_scrolled_window_new(NULL, NULL); gtk_widget_set_name(scrolled_win, ""); gtk_widget_set_name(GTK_SCROLLED_WINDOW(scrolled_win)->vscrollbar, ""); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_widget_modify_bg(GTK_SCROLLED_WINDOW(scrolled_win)->vscrollbar, GTK_STATE_NORMAL, &blue1); gtk_widget_modify_bg(GTK_SCROLLED_WINDOW(scrolled_win)->vscrollbar, GTK_STATE_PRELIGHT, &blue2); gtk_widget_modify_bg(GTK_SCROLLED_WINDOW(scrolled_win)->vscrollbar, GTK_STATE_ACTIVE, &blue3); view = gtk_text_view_new(); gtk_widget_set_name(view, ""); gtk_widget_modify_base(view, GTK_STATE_NORMAL, &blue3); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(view), 3); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(view), 3); gtk_text_view_set_editable(GTK_TEXT_VIEW(view), FALSE); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(view), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); gtk_text_view_set_buffer(GTK_TEXT_VIEW(view), buffer); tag = gtk_text_buffer_create_tag(buffer, NULL, "foreground", "#0000C0", NULL); tag2 = gtk_text_buffer_create_tag(buffer, NULL, "foreground", "#d9dee1", NULL); /* insert text */ gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, _("Build version: "), -1, tag, NULL); gtk_text_buffer_insert_at_cursor(buffer, aqualung_version, -1); gtk_text_buffer_insert_at_cursor(buffer, "\n\n", -1); gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, _("Homepage:"), -1, tag, NULL); gtk_text_buffer_insert_at_cursor(buffer, " http://aqualung.sf.net\n", -1); gtk_text_buffer_insert_at_cursor(buffer, "\nCopyright (C) 2004-2006 Tom Szilagyi\n\n\n", -1); gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, _("Authors:"), -1, tag, NULL); gtk_text_buffer_insert_at_cursor(buffer, "\n\n", -1); gtk_text_buffer_insert_at_cursor(buffer, _("Core design, engineering & programming:\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\tTom Szilagyi <tszilagyi@users.sourceforge.net>\n\n", -1); gtk_text_buffer_insert_at_cursor(buffer, _("Skin support, look & feel, GUI hacks:\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\tPeter Szilagyi <peterszilagyi@users.sourceforge.net>\n\n", -1); gtk_text_buffer_insert_at_cursor(buffer, _("Programming, GUI engineering:\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\tTomasz Maka <pasp@users.sourceforge.net>\n\n\n", -1); gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, _("Translators:"), -1, tag, NULL); gtk_text_buffer_insert_at_cursor(buffer, "\n\n", -1); gtk_text_buffer_insert_at_cursor(buffer, _("German, Hungarian:\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\tPeter Szilagyi <peterszilagyi@users.sourceforge.net>\n\n", -1); gtk_text_buffer_insert_at_cursor(buffer, _("Ukrainian:\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\tSergiy Niskorodov <sgh_punk@users.sourceforge.net>\n\n\n", -1); gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, _("Graphics:"), -1, tag, NULL); gtk_text_buffer_insert_at_cursor(buffer, "\n\n", -1); gtk_text_buffer_insert_at_cursor(buffer, _("Logo, icons:\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\tMaja Kocon <ironya@ll.pl>\n\n\n", -1); gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, _("This Aqualung binary is compiled with:"), -1, tag, NULL); gtk_text_buffer_insert_at_cursor(buffer, "\n\n\t", -1); gtk_text_buffer_insert_at_cursor(buffer, _("File format support:"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\n", -1); gtk_text_buffer_insert_at_cursor(buffer, "\t\t[", -1);#ifdef HAVE_SNDFILE gtk_text_buffer_insert_at_cursor(buffer, MARK, -1);#else gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, MARK, -1, tag2, NULL);#endif /* HAVE_SNDFILE */ gtk_text_buffer_insert_at_cursor(buffer, "]\t", -1); gtk_text_buffer_insert_at_cursor(buffer, _("sndfile (WAV, AIFF, etc.)\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\t\t[", -1);#ifdef HAVE_FLAC gtk_text_buffer_insert_at_cursor(buffer, MARK, -1);#else gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_buffer_insert_with_tags(buffer, &iter, MARK, -1, tag2, NULL);#endif /* HAVE_FLAC */ gtk_text_buffer_insert_at_cursor(buffer, "]\t", -1); gtk_text_buffer_insert_at_cursor(buffer, _("Free Lossless Audio Codec (FLAC)\n"), -1); gtk_text_buffer_insert_at_cursor(buffer, "\t\t[", -1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -