diff -r e9f7747ff365 -r b98e0b2e81ad pidgin/gtkdialogs.c
--- a/pidgin/gtkdialogs.c Sun Oct 04 18:01:35 2009 +0000
+++ b/pidgin/gtkdialogs.c Sun Oct 04 18:02:15 2009 +0000
@@ -47,6 +47,9 @@
static GList *dialogwindows = NULL;
static GtkWidget *about = NULL;
+static GtkWidget *buildinfo = NULL;
+static GtkWidget *developer_info = NULL;
+static GtkWidget *translator_info = NULL;
struct _PidginGroupMergeObject {
PurpleGroup* parent;
@@ -351,6 +354,27 @@
}
}
+static void destroy_developer_info(void)
+{
+ if (developer_info != NULL)
+ gtk_widget_destroy(developer_info);
+ developer_info = NULL;
+}
+
+static void destroy_translator_info(void)
+{
+ if (translator_info != NULL)
+ gtk_widget_destroy(translator_info);
+ translator_info = NULL;
+}
+
+static void destroy_buildinfo(void)
+{
+ if (buildinfo != NULL)
+ gtk_widget_destroy(buildinfo);
+ buildinfo = NULL;
+}
+
static void destroy_about(void)
{
if (about != NULL)
@@ -420,7 +444,7 @@
tmp = g_strdup_printf(_("About %s"), PIDGIN_NAME);
about = pidgin_create_dialog(tmp, PIDGIN_HIG_BORDER, "about", TRUE);
g_free(tmp);
- gtk_window_set_default_size(GTK_WINDOW(about), 340, 450);
+ gtk_window_set_default_size(GTK_WINDOW(about), 450, 450);
vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(about), FALSE, PIDGIN_HIG_BORDER);
@@ -450,78 +474,99 @@
str = g_string_sized_new(4096);
g_string_append_printf(str,
- "
%s %s
(libpurple %s)
%s
", PIDGIN_NAME, DISPLAY_VERSION, purple_core_get_version(), REVISION);
+ "%s %s (libpurple %s)"
+ "
%s
", PIDGIN_NAME, DISPLAY_VERSION,
+ purple_core_get_version(), REVISION);
+
+ g_string_append_printf(str,
+ _("%s is a messaging client based on libpurple which is capable of "
+ "connecting to multiple messaging services at once. %s is written "
+ "in C using GTK+. %s is released, and may be modified and "
+ "redistributed, under the terms of the GPL version 2 (or later). "
+ "A copy of the GPL is distributed with %s. %s is copyrighted by "
+ "its contributors, a list of whom is also distributed with %s. "
+ "There is no warranty for %s.
"), PIDGIN_NAME, PIDGIN_NAME,
+ PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME);
g_string_append_printf(str,
- _("%s is a graphical modular messaging client based on "
- "libpurple which is capable of connecting to "
- "AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
- "Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, "
- "MySpaceIM, Gadu-Gadu, and QQ all at once. "
- "It is written using GTK+.
"
- "You may modify and redistribute the program under "
- "the terms of the GPL (version 2 or later). A copy of the GPL is "
- "contained in the 'COPYING' file distributed with %s. "
- "%s is copyrighted by its contributors. See the 'COPYRIGHT' "
- "file for the complete list of contributors. We provide no "
- "warranty for this program.
"), PIDGIN_NAME, PIDGIN_NAME, PIDGIN_NAME);
+ _("Helpful Resources
\tWebsite
\tFrequently Asked "
+ "Questions
\tIRC Channel: #pidgin on irc.freenode.net
"
+ "\tXMPP MUC: devel@conference.pidgin.im
"), PURPLE_WEBSITE,
+ "http://developer.pidgin.im/wiki/FAQ");
+
+ g_string_append_printf(str,
+ _("Help from other Pidgin users is "
+ "available by e-mailing support@pidgin.im
"
+ "This is a public mailing list! "
+ "(archive)
"
+ "We can't help with third-party protocols or plugins!
"
+ "This list's primary language is English. You are "
+ "welcome to post in another language, but the responses may "
+ "be less helpful.
"));
- g_string_append(str, "URL: " PURPLE_WEBSITE "
");
- g_string_append_printf(str, _("FAQ: "
- "http://developer.pidgin.im/wiki/FAQ
"));
- g_string_append_printf(str,
- _("Help from other Pidgin users: "
- "support@pidgin.im
"
- "This is a public mailing list! "
- "(archive)
"
- "We can't help with 3rd party protocols or plugins!
"
- "This list's primary language is English. You are "
- "welcome to post in another language, but the responses may "
- "be less helpful.
"));
- g_string_append_printf(str, _("IRC Channel: "
- "#pidgin on irc.freenode.net
"));
- g_string_append_printf(str, _("XMPP MUC: "
- "devel@conference.pidgin.im
"));
+
+ gtk_imhtml_append_text(GTK_IMHTML(text), str->str, GTK_IMHTML_NO_SCROLL);
+ g_string_free(str, TRUE);
+
+ gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
+ gtk_text_buffer_place_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
+
+ /* Close Button */
+ button = pidgin_dialog_add_button(GTK_DIALOG(about), GTK_STOCK_CLOSE,
+ G_CALLBACK(destroy_about), about);
+
+ g_signal_connect(G_OBJECT(about), "destroy",
+ G_CALLBACK(destroy_about), G_OBJECT(about));
+
+ /* this makes the sizes not work? */
+ GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(button);
- /* Current Developers */
- g_string_append_printf(str, "%s:
",
- _("Current Developers"));
- add_developers(str, developers);
- g_string_append(str, "
");
+ /* Let's give'em something to talk about -- woah woah woah */
+ buddylist = pidgin_blist_get_default_gtk_blist();
+ if (buddylist)
+ gtk_window_set_transient_for(GTK_WINDOW(about),
+ GTK_WINDOW(buddylist->window));
+
+ gtk_widget_show_all(about);
+ gtk_window_present(GTK_WINDOW(about));
+}
- /* Crazy Patch Writers */
- g_string_append_printf(str, "%s:
",
- _("Crazy Patch Writers"));
- add_developers(str, patch_writers);
- g_string_append(str, "
");
-
- /* Retired Developers */
- g_string_append_printf(str, "%s:
",
- _("Retired Developers"));
- add_developers(str, retired_developers);
- g_string_append(str, "
");
+void pidgin_dialogs_buildinfo()
+{
+ GtkWidget *vbox;
+ GtkWidget *frame;
+ GtkWidget *text;
+ GtkWidget *button;
+ GtkTextIter iter;
+ GString *str;
+ char *tmp;
+ PidginBuddyList *buddylist;
- /* Retired Crazy Patch Writers */
- g_string_append_printf(str, "%s:
",
- _("Retired Crazy Patch Writers"));
- add_developers(str, retired_patch_writers);
- g_string_append(str, "
");
+ if (about != NULL) {
+ gtk_window_present(GTK_WINDOW(about));
+ return;
+ }
+
+ tmp = g_strdup_printf(_("%s Build Information"), PIDGIN_NAME);
+ buildinfo = pidgin_create_dialog(tmp, PIDGIN_HIG_BORDER, "buildinfo", TRUE);
+ g_free(tmp);
+ gtk_window_set_default_size(GTK_WINDOW(buildinfo), 450, 450);
- /* Current Translators */
- g_string_append_printf(str, "%s:
",
- _("Current Translators"));
- add_translators(str, translators);
- g_string_append(str, "
");
+ vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(buildinfo), FALSE, PIDGIN_HIG_BORDER);
+
+ frame = pidgin_create_imhtml(FALSE, &text, NULL, NULL);
+ gtk_imhtml_set_format_functions(GTK_IMHTML(text), GTK_IMHTML_ALL ^ GTK_IMHTML_SMILEY);
+ gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
- /* Past Translators */
- g_string_append_printf(str, "%s:
",
- _("Past Translators"));
- add_translators(str, past_translators);
- g_string_append(str, "
");
+ str = g_string_sized_new(4096);
- g_string_append_printf(str, "%s
", _("Debugging Information"));
+ g_string_append_printf(str,
+ "%s %s (libpurple %s)
%s
", PIDGIN_NAME, DISPLAY_VERSION, purple_core_get_version(), REVISION);
+
+ g_string_append_printf(str, "%s
", _("Build Information"));
/* The following primarly intented for user/developer interaction and thus
ought not be translated */
@@ -705,11 +750,11 @@
gtk_text_buffer_place_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
/* Close Button */
- button = pidgin_dialog_add_button(GTK_DIALOG(about), GTK_STOCK_CLOSE,
- G_CALLBACK(destroy_about), about);
+ button = pidgin_dialog_add_button(GTK_DIALOG(buildinfo), GTK_STOCK_CLOSE,
+ G_CALLBACK(destroy_buildinfo), about);
- g_signal_connect(G_OBJECT(about), "destroy",
- G_CALLBACK(destroy_about), G_OBJECT(about));
+ g_signal_connect(G_OBJECT(buildinfo), "destroy",
+ G_CALLBACK(destroy_buildinfo), G_OBJECT(buildinfo));
/* this makes the sizes not work? */
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
@@ -718,11 +763,159 @@
/* Let's give'em something to talk about -- woah woah woah */
buddylist = pidgin_blist_get_default_gtk_blist();
if (buddylist)
- gtk_window_set_transient_for(GTK_WINDOW(about),
+ gtk_window_set_transient_for(GTK_WINDOW(buildinfo),
GTK_WINDOW(buddylist->window));
- gtk_widget_show_all(about);
- gtk_window_present(GTK_WINDOW(about));
+ gtk_widget_show_all(buildinfo);
+ gtk_window_present(GTK_WINDOW(buildinfo));
+}
+
+void pidgin_dialogs_developers()
+{
+ GtkWidget *vbox;
+ GtkWidget *frame;
+ GtkWidget *text;
+ GtkWidget *button;
+ GtkTextIter iter;
+ GString *str;
+ char *tmp;
+ PidginBuddyList *buddylist;
+
+ if (about != NULL) {
+ gtk_window_present(GTK_WINDOW(about));
+ return;
+ }
+
+ tmp = g_strdup_printf(_("%s Developer Information"), PIDGIN_NAME);
+ developer_info = pidgin_create_dialog(tmp, PIDGIN_HIG_BORDER, "developer_info", TRUE);
+ g_free(tmp);
+ gtk_window_set_default_size(GTK_WINDOW(developer_info), 450, 450);
+
+ vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(developer_info), FALSE, PIDGIN_HIG_BORDER);
+
+ frame = pidgin_create_imhtml(FALSE, &text, NULL, NULL);
+ gtk_imhtml_set_format_functions(GTK_IMHTML(text), GTK_IMHTML_ALL ^ GTK_IMHTML_SMILEY);
+ gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
+
+ str = g_string_sized_new(4096);
+
+ /* Current Developers */
+ g_string_append_printf(str, "%s:
",
+ _("Current Developers"));
+ add_developers(str, developers);
+ g_string_append(str, "
");
+
+ /* Crazy Patch Writers */
+ g_string_append_printf(str, "%s:
",
+ _("Crazy Patch Writers"));
+ add_developers(str, patch_writers);
+ g_string_append(str, "
");
+
+ /* Retired Developers */
+ g_string_append_printf(str, "%s:
",
+ _("Retired Developers"));
+ add_developers(str, retired_developers);
+ g_string_append(str, "
");
+
+ /* Retired Crazy Patch Writers */
+ g_string_append_printf(str, "%s:
",
+ _("Retired Crazy Patch Writers"));
+ add_developers(str, retired_patch_writers);
+ g_string_append(str, "
");
+
+ gtk_imhtml_append_text(GTK_IMHTML(text), str->str, GTK_IMHTML_NO_SCROLL);
+ g_string_free(str, TRUE);
+
+ gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
+ gtk_text_buffer_place_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
+
+ /* Close Button */
+ button = pidgin_dialog_add_button(GTK_DIALOG(developer_info), GTK_STOCK_CLOSE,
+ G_CALLBACK(destroy_developer_info), about);
+
+ g_signal_connect(G_OBJECT(developer_info), "destroy",
+ G_CALLBACK(destroy_developer_info), G_OBJECT(developer_info));
+
+ /* this makes the sizes not work? */
+ GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(button);
+
+ /* Let's give'em something to talk about -- woah woah woah */
+ buddylist = pidgin_blist_get_default_gtk_blist();
+ if (buddylist)
+ gtk_window_set_transient_for(GTK_WINDOW(developer_info),
+ GTK_WINDOW(buddylist->window));
+
+ gtk_widget_show_all(developer_info);
+ gtk_window_present(GTK_WINDOW(developer_info));
+}
+
+void pidgin_dialogs_translators()
+{
+ GtkWidget *vbox;
+ GtkWidget *frame;
+ GtkWidget *text;
+ GtkWidget *button;
+ GtkTextIter iter;
+ GString *str;
+ char *tmp;
+ PidginBuddyList *buddylist;
+
+ if (about != NULL) {
+ gtk_window_present(GTK_WINDOW(about));
+ return;
+ }
+
+ tmp = g_strdup_printf(_("%s Translator Information"), PIDGIN_NAME);
+ translator_info = pidgin_create_dialog(tmp, PIDGIN_HIG_BORDER, "translator_info", TRUE);
+ g_free(tmp);
+ gtk_window_set_default_size(GTK_WINDOW(translator_info), 450, 450);
+
+ vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(translator_info), FALSE, PIDGIN_HIG_BORDER);
+
+ frame = pidgin_create_imhtml(FALSE, &text, NULL, NULL);
+ gtk_imhtml_set_format_functions(GTK_IMHTML(text), GTK_IMHTML_ALL ^ GTK_IMHTML_SMILEY);
+ gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
+
+ str = g_string_sized_new(4096);
+
+ /* Current Translators */
+ g_string_append_printf(str, "%s:
",
+ _("Current Translators"));
+ add_translators(str, translators);
+ g_string_append(str, "
");
+
+ /* Past Translators */
+ g_string_append_printf(str, "%s:
",
+ _("Past Translators"));
+ add_translators(str, past_translators);
+ g_string_append(str, "
");
+
+ gtk_imhtml_append_text(GTK_IMHTML(text), str->str, GTK_IMHTML_NO_SCROLL);
+ g_string_free(str, TRUE);
+
+ gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
+ gtk_text_buffer_place_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), &iter);
+
+ /* Close Button */
+ button = pidgin_dialog_add_button(GTK_DIALOG(translator_info), GTK_STOCK_CLOSE,
+ G_CALLBACK(destroy_translator_info), about);
+
+ g_signal_connect(G_OBJECT(translator_info), "destroy",
+ G_CALLBACK(destroy_translator_info), G_OBJECT(translator_info));
+
+ /* this makes the sizes not work? */
+ GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default(button);
+
+ /* Let's give'em something to talk about -- woah woah woah */
+ buddylist = pidgin_blist_get_default_gtk_blist();
+ if (buddylist)
+ gtk_window_set_transient_for(GTK_WINDOW(translator_info),
+ GTK_WINDOW(buddylist->window));
+
+ gtk_widget_show_all(translator_info);
+ gtk_window_present(GTK_WINDOW(translator_info));
}
static void