# HG changeset patch # User John Bailey # Date 1254597498 0 # Node ID a6b08260d631adb2a20b98211e742d3806b07128 # Parent b50ff312ac80c0c67d138be3c27634e2fdb5fd1b Break the developer information out into its own dialog. I also bolded a few headings that weren't previously bolded because I think they look better this way. Feel free to debate and tweak. diff -r b50ff312ac80 -r a6b08260d631 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Sat Oct 03 18:54:58 2009 +0000 +++ b/pidgin/gtkblist.c Sat Oct 03 19:18:18 2009 +0000 @@ -3436,7 +3436,8 @@ { "/Help/sep1", NULL, NULL, 0, "", NULL }, { N_("/Help/_Build Information"), NULL, pidgin_dialogs_buildinfo, 0, "", NULL }, { N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "", NULL }, - { N_("/Help/_Translators"), NULL, pidgin_dialogs_translators, 0, "", NULL }, + { N_("/Help/De_veloper Information"), NULL, pidgin_dialogs_developers, 0, "", NULL }, + { N_("/Help/_Translator Information"), NULL, pidgin_dialogs_translators, 0, "", NULL }, { "/Help/sep2", NULL, NULL, 0, "", NULL }, { N_("/Help/_About"), NULL, pidgin_dialogs_about, 4, "", GTK_STOCK_ABOUT }, }; diff -r b50ff312ac80 -r a6b08260d631 pidgin/gtkdialogs.c --- a/pidgin/gtkdialogs.c Sat Oct 03 18:54:58 2009 +0000 +++ b/pidgin/gtkdialogs.c Sat Oct 03 19:18:18 2009 +0000 @@ -48,6 +48,7 @@ static GtkWidget *about = NULL; static GtkWidget *buildinfo = NULL; +static GtkWidget *developer_info = NULL; static GtkWidget *translator_info = NULL; struct _PidginGroupMergeObject { @@ -352,6 +353,13 @@ } } +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) @@ -500,30 +508,7 @@ g_string_append_printf(str, _("XMPP MUC: " "devel@conference.pidgin.im

")); - /* 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); @@ -781,6 +766,86 @@ 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; diff -r b50ff312ac80 -r a6b08260d631 pidgin/gtkdialogs.h --- a/pidgin/gtkdialogs.h Sat Oct 03 18:54:58 2009 +0000 +++ b/pidgin/gtkdialogs.h Sat Oct 03 19:18:18 2009 +0000 @@ -34,6 +34,7 @@ void pidgin_dialogs_destroy_all(void); void pidgin_dialogs_about(void); void pidgin_dialogs_buildinfo(void); +void pidgin_dialogs_developers(void); void pidgin_dialogs_translators(void); void pidgin_dialogs_im(void); void pidgin_dialogs_im_with_user(PurpleAccount *, const char *);