Tue, 15 Sep 2020 20:26:57 -0500
Replace some utility functions with actual widgets
Replace pidgin_create_dialog with PidginDialog
Testing Done:
Compile and basic run with im's sent.
Reviewed at https://reviews.imfreedom.org/r/116/
--- a/ChangeLog.API Mon Sep 14 21:35:28 2020 -0500 +++ b/ChangeLog.API Tue Sep 15 20:26:57 2020 -0500 @@ -632,6 +632,9 @@ * pidgin_conv_placement_get_fnc * pidgin_conv_placement_set_current_func * pidgin_conv_placement_get_current_func + * pidgin_create_dialog, use pidgin_dialog_new instead. + * pidgin_create_small_button, use pidgin_close_button_new instead. + * pidgin_create_window, use pidgin_window_new instead. * PIDGIN_DIALOG * pidgin_dialogs_alias_contact * pidgin_make_pretty_arrows
--- a/doc/reference/pidgin/pidgin-docs.xml Mon Sep 14 21:35:28 2020 -0500 +++ b/doc/reference/pidgin/pidgin-docs.xml Tue Sep 15 20:26:57 2020 -0500 @@ -60,8 +60,10 @@ <xi:include href="xml/pidginactiongroup.xml" /> <xi:include href="xml/pidginattachment.xml" /> <xi:include href="xml/pidginbuddylistmenu.xml" /> + <xi:include href="xml/pidginclosebutton.xml" /> <xi:include href="xml/pidgincontactcompletion.xml" /> <xi:include href="xml/pidgindebug.xml" /> + <xi:include href="xml/pidgindialog.xml" /> <xi:include href="xml/pidgingdkpixbuf.xml" /> <xi:include href="xml/pidginicon.xml" /> <xi:include href="xml/pidgininvitedialog.xml" /> @@ -75,6 +77,7 @@ <xi:include href="xml/pidginstock.xml" /> <xi:include href="xml/pidgintalkatu.xml" /> <xi:include href="xml/pidgintooltip.xml" /> + <xi:include href="xml/pidginwindow.xml" /> </part> <part id="signals">
--- a/pidgin/glade/pidgin3.xml.in Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/glade/pidgin3.xml.in Tue Sep 15 20:26:57 2020 -0500 @@ -3,17 +3,23 @@ <glade-widget-classes> <glade-widget-class name="PidginAccountChooser" generic-name="account_chooser" title="AccountChooser"/> <glade-widget-class name="PidginAccountsMenu" generic-name="accounts_menu" title="AccountsMenu"/> + <glade-widget-class name="PidginCloseButton" generic-name="close-button" title="CloseButton"/> + <glade-widget-class name="PidginDialog" generic-name="dialog" title="Dialog"/> <glade-widget-class name="PidginInviteDialog" generic-name="invite_dialog" title="InviteDialog"/> <glade-widget-class name="PidginMenuTray" generic-name="menu_tray" title="MenuTray"/> <glade-widget-class name="PidginPluginsMenu" generic-name="plugins_menu" title="PluginsMenu"/> <glade-widget-class name="PidginScrollBook" generic-name="scroll_book" title="ScrollBook"/> + <glade-widget-class name="PidginWindow" generic-name="window" title="Window"/> </glade-widget-classes> <glade-widget-group name="pidgin" title="Pidgin"> <glade-widget-class-ref name="PidginAccountChooser"/> <glade-widget-class-ref name="PidginAccountsMenu"/> + <glade-widget-class-ref name="PidginCloseButton"/> + <glade-widget-class-ref name="PidginDialog"/> <glade-widget-class-ref name="PidginInviteDialog"/> <glade-widget-class-ref name="PidginMenuTray"/> <glade-widget-class-ref name="PidginPluginsMenu"/> <glade-widget-class-ref name="PidginScrollBook"/> + <glade-widget-class-ref name="PidginWindow"/> </glade-widget-group> </glade-catalog>
--- a/pidgin/gtkaccount.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkaccount.c Tue Sep 15 20:26:57 2020 -0500 @@ -33,6 +33,7 @@ #include "gtkutils.h" #include "gtkstatusbox.h" #include "pidgincore.h" +#include "pidgindialog.h" #include "pidginstock.h" #include "minidialog.h" #include "pidginprotocolchooser.h" @@ -1624,7 +1625,7 @@ dialog->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); dialog->protocol = purple_protocols_find(dialog->protocol_id); - dialog->window = win = pidgin_create_dialog((type == PIDGIN_ADD_ACCOUNT_DIALOG) ? _("Add Account") : _("Modify Account"), + dialog->window = win = pidgin_dialog_new((type == PIDGIN_ADD_ACCOUNT_DIALOG) ? _("Add Account") : _("Modify Account"), 6, "account", FALSE); g_signal_connect(G_OBJECT(win), "delete_event", @@ -2395,7 +2396,7 @@ width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width"); height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/accounts/dialog/height"); - dialog->window = win = pidgin_create_dialog(_("Accounts"), 0, "accounts", TRUE); + dialog->window = win = pidgin_dialog_new(_("Accounts"), 0, "accounts", TRUE); gtk_window_set_default_size(GTK_WINDOW(win), width, height); g_signal_connect(G_OBJECT(win), "delete_event",
--- a/pidgin/gtkblist.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkblist.c Tue Sep 15 20:26:57 2020 -0500 @@ -46,6 +46,7 @@ #include "pidgin/pidginaccountchooser.h" #include "pidgin/pidginactiongroup.h" #include "pidgin/pidginbuddylistmenu.h" +#include "pidgin/pidginclosebutton.h" #include "pidgin/pidgincore.h" #include "pidgin/pidgindebug.h" #include "pidgin/pidgingdkpixbuf.h" @@ -53,6 +54,7 @@ #include "pidgin/pidginmooddialog.h" #include "pidgin/pidginplugininfo.h" #include "pidgin/pidgintooltip.h" +#include "pidgin/pidginwindow.h" #include "pidginmenutray.h" #include "pidginstock.h" @@ -5197,7 +5199,7 @@ gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000); - gtkblist->window = pidgin_create_window(_("Buddy List"), 0, "buddy_list", TRUE); + gtkblist->window = pidgin_window_new(_("Buddy List"), 0, "buddy_list", TRUE); g_signal_connect(G_OBJECT(gtkblist->window), "focus-in-event", G_CALLBACK(blist_focus_cb), gtkblist); g_signal_connect(G_OBJECT(gtkblist->window), "focus-out-event", @@ -5279,9 +5281,7 @@ gtk_box_pack_start(GTK_BOX(content_area), gtkblist->headline_label, TRUE, TRUE, 0); - close = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); - close = pidgin_create_small_button(close); - gtk_widget_set_tooltip_text(close, _("Close")); + close = pidgin_close_button_new(); gtk_info_bar_add_action_widget(GTK_INFO_BAR(infobar), close, GTK_RESPONSE_CLOSE);
--- a/pidgin/gtkconv.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkconv.c Tue Sep 15 20:26:57 2020 -0500 @@ -51,6 +51,7 @@ #include "gtkprivacy.h" #include "gtkstyle.h" #include "gtkutils.h" +#include "pidginclosebutton.h" #include "pidgincore.h" #include "pidgingdkpixbuf.h" #include "pidgininvitedialog.h" @@ -59,6 +60,7 @@ #include "pidginmessage.h" #include "pidginstock.h" #include "pidgintooltip.h" +#include "pidginwindow.h" #include "gtknickcolors.h" @@ -7651,7 +7653,7 @@ window_list = g_list_append(window_list, win); /* Create the window. */ - win->window = pidgin_create_window(NULL, 0, "conversation", TRUE); + win->window = pidgin_window_new(NULL, 0, "conversation", TRUE); /*_pidgin_widget_set_accessible_name(win->window, "Conversations");*/ if (!gtk_get_current_event_state(&state)) gtk_window_set_focus_on_map(GTK_WINDOW(win->window), FALSE); @@ -7915,9 +7917,7 @@ /* Close button. */ - gtkconv->close = pidgin_create_small_button(gtk_label_new("×")); - gtk_widget_set_tooltip_text(gtkconv->close, _("Close conversation")); - + gtkconv->close = pidgin_close_button_new(); g_signal_connect(gtkconv->close, "clicked", G_CALLBACK (close_conv_cb), gtkconv); /* Status icon. */
--- a/pidgin/gtkdialogs.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkdialogs.c Tue Sep 15 20:26:57 2020 -0500 @@ -40,6 +40,7 @@ #include "gtkdialogs.h" #include "gtkutils.h" #include "pidgincore.h" +#include "pidgindialog.h" #include "pidginlog.h" #include "pidginstock.h" @@ -112,7 +113,7 @@ AtkObject *obj; char *filename, *tmp; - win = pidgin_create_dialog(title, 0, role, TRUE); + win = pidgin_dialog_new(title, 0, role, TRUE); vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, 0); gtk_window_set_default_size(GTK_WINDOW(win), 475, 450);
--- a/pidgin/gtkpounce.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkpounce.c Tue Sep 15 20:26:57 2020 -0500 @@ -34,6 +34,7 @@ #include "gtkutils.h" #include "pidginaccountchooser.h" #include "pidgincore.h" +#include "pidgindialog.h" #include "pidgintalkatu.h" #include <gdk/gdkkeysyms.h> @@ -1253,7 +1254,7 @@ width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/pounces/dialog/width"); height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/pounces/dialog/height"); - dialog->window = win = pidgin_create_dialog(_("Buddy Pounces"), 0, "pounces", TRUE); + dialog->window = win = pidgin_dialog_new(_("Buddy Pounces"), 0, "pounces", TRUE); gtk_window_set_default_size(GTK_WINDOW(win), width, height);
--- a/pidgin/gtkrequest.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkrequest.c Tue Sep 15 20:26:57 2020 -0500 @@ -30,6 +30,7 @@ #include "gtkblist.h" #include "pidginaccountchooser.h" #include "pidgincore.h" +#include "pidgindialog.h" #include "pidginstock.h" #include <gdk/gdkkeysyms.h> @@ -1885,11 +1886,7 @@ data->cbs[0] = ok_cb; data->cbs[1] = cancel_cb; -#ifdef _WIN32 - data->dialog = win = pidgin_create_dialog(PIDGIN_ALERT_TITLE, 12, "multifield", TRUE) ; -#else /* !_WIN32 */ - data->dialog = win = pidgin_create_dialog(title, 12, "multifield", TRUE) ; -#endif /* _WIN32 */ + data->dialog = win = pidgin_dialog_new(title, 12, "multifield", TRUE) ; g_signal_connect(G_OBJECT(win), "delete_event", G_CALLBACK(destroy_multifield_cb), data);
--- a/pidgin/gtksavedstatuses.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtksavedstatuses.c Tue Sep 15 20:26:57 2020 -0500 @@ -29,6 +29,7 @@ #include "gtksavedstatuses.h" #include "gtkutils.h" #include "pidgincore.h" +#include "pidgindialog.h" #include "pidginstock.h" /* @@ -550,7 +551,7 @@ width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/status/dialog/width"); height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/status/dialog/height"); - dialog->window = win = pidgin_create_dialog(_("Saved Statuses"), 12, "statuses", TRUE); + dialog->window = win = pidgin_dialog_new(_("Saved Statuses"), 12, "statuses", TRUE); gtk_window_set_default_size(GTK_WINDOW(win), width, height); g_signal_connect(G_OBJECT(win), "delete_event", @@ -1103,7 +1104,7 @@ if (edit) dialog->original_title = g_strdup(purple_savedstatus_get_title(saved_status)); - dialog->window = win = pidgin_create_dialog(_("Status"), 12, "status", TRUE); + dialog->window = win = pidgin_dialog_new(_("Status"), 12, "status", TRUE); g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(status_editor_destroy_cb), dialog); @@ -1402,7 +1403,7 @@ dialog->account = account; tmp = g_strdup_printf(_("Status for %s"), purple_account_get_username(account)); - dialog->window = win = pidgin_create_dialog(tmp, 12, "substatus", TRUE); + dialog->window = win = pidgin_dialog_new(tmp, 12, "substatus", TRUE); g_free(tmp); g_signal_connect(G_OBJECT(win), "destroy",
--- a/pidgin/gtkutils.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkutils.c Tue Sep 15 20:26:57 2020 -0500 @@ -127,61 +127,6 @@ /****************************************************************************** * Code *****************************************************************************/ -static -void pidgin_window_init(GtkWindow *wnd, const char *title, guint border_width, const char *role, gboolean resizable) -{ - if (title) - gtk_window_set_title(wnd, title); -#ifdef _WIN32 - else - gtk_window_set_title(wnd, PIDGIN_ALERT_TITLE); -#endif - gtk_container_set_border_width(GTK_CONTAINER(wnd), border_width); - if (role) - gtk_window_set_role(wnd, role); - gtk_window_set_resizable(wnd, resizable); -} - -GtkWidget * -pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable) -{ - GtkWindow *wnd = NULL; - - wnd = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)); - pidgin_window_init(wnd, title, border_width, role, resizable); - - return GTK_WIDGET(wnd); -} - -GtkWidget * -pidgin_create_small_button(GtkWidget *image) -{ - GtkWidget *button; - - button = gtk_button_new(); - gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); - - /* don't allow focus on the close button */ - gtk_widget_set_focus_on_click(button, FALSE); - - gtk_widget_show(image); - - gtk_container_add(GTK_CONTAINER(button), image); - - return button; -} - -GtkWidget * -pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable) -{ - GtkWindow *wnd = NULL; - - wnd = GTK_WINDOW(gtk_dialog_new()); - pidgin_window_init(wnd, title, border_width, role, resizable); - - return GTK_WIDGET(wnd); -} - GtkWidget * pidgin_create_video_widget(void) {
--- a/pidgin/gtkutils.h Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/gtkutils.h Tue Sep 15 20:26:57 2020 -0500 @@ -84,42 +84,6 @@ G_BEGIN_DECLS /** - * pidgin_create_small_button: - * @image: A button image. - * - * Creates a small button - * - * Returns: (transfer full): A GtkButton created from the image. - */ -GtkWidget *pidgin_create_small_button(GtkWidget *image); - -/** - * pidgin_create_window: - * @title: The window title, or %NULL - * @border_width: The window's desired border width - * @role: A string indicating what the window is responsible for doing, or %NULL - * @resizable: Whether the window should be resizable (%TRUE) or not (%FALSE) - * - * Creates a new window - * - * Returns: (transfer full): A new window. - */ -GtkWidget *pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable); - -/** - * pidgin_create_dialog: - * @title: The window title, or %NULL - * @border_width: The window's desired border width - * @role: A string indicating what the window is responsible for doing, or %NULL - * @resizable: Whether the window should be resizable (%TRUE) or not (%FALSE) - * - * Creates a new dialog window - * - * Returns: (transfer full): A new dialog window. - */ -GtkWidget *pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable); - -/** * pidgin_create_video_widget: * * Creates a new drawing area suitable for displaying a video
--- a/pidgin/meson.build Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/meson.build Tue Sep 15 20:26:57 2020 -0500 @@ -39,8 +39,10 @@ 'pidginactiongroup.c', 'pidginattachment.c', 'pidginbuddylistmenu.c', + 'pidginclosebutton.c', 'pidgincontactcompletion.c', 'pidgindebug.c', + 'pidgindialog.c', 'pidgingdkpixbuf.c', 'pidgininvitedialog.c', 'pidginlog.c', @@ -54,6 +56,7 @@ 'pidginprotocolstore.c', 'pidgintalkatu.c', 'pidgintooltip.c', + 'pidginwindow.c', ] libpidgin_headers = [ @@ -98,8 +101,10 @@ 'pidginactiongroup.h', 'pidginattachment.h', 'pidginbuddylistmenu.h', + 'pidginclosebutton.h', 'pidgincontactcompletion.h', 'pidgincore.h', + 'pidgindialog.h', 'pidgindebug.h', 'pidgingdkpixbuf.h', 'pidginicon.h', @@ -115,6 +120,7 @@ 'pidginprotocolstore.h', 'pidgintalkatu.h', 'pidgintooltip.h', + 'pidginwindow.h', ] pidgin_SOURCES = [
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pidginclosebutton.c Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,54 @@ +/* + * pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#include "pidginclosebutton.h" + +struct _PidginCloseButton { + GtkButton parent; +}; + +/****************************************************************************** + * GObject Implementation + *****************************************************************************/ +G_DEFINE_TYPE(PidginCloseButton, pidgin_close_button, GTK_TYPE_BUTTON) + +static void +pidgin_close_button_init(PidginCloseButton *button) { + gtk_widget_init_template(GTK_WIDGET(button)); +} + +static void +pidgin_close_button_class_init(PidginCloseButtonClass *klass) { + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); + + gtk_widget_class_set_template_from_resource( + widget_class, + "/im/pidgin/Pidgin/closebutton.ui" + ); +} + +/****************************************************************************** + * Public API + *****************************************************************************/ +GtkWidget * +pidgin_close_button_new(void) { + return GTK_WIDGET(g_object_new(PIDGIN_TYPE_CLOSE_BUTTON, NULL)); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pidginclosebutton.h Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,62 @@ +/* + * pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION) +# error "only <pidgin.h> may be included directly" +#endif + +#ifndef PIDGIN_CLOSE_BUTTON_H +#define PIDGIN_CLOSE_BUTTON_H + +/** + * SECTION:pidginclosebutton + * @section_id: pidgin-close-button + * @short_description: A widget to close things. + * @title: Close Button + * + * #PidginCloseButton is a transitional widget as we slowly migrate the + * conversation window to glade. + */ + +#include <glib.h> + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define PIDGIN_TYPE_CLOSE_BUTTON (pidgin_close_button_get_type()) +G_DECLARE_FINAL_TYPE(PidginCloseButton, pidgin_close_button, PIDGIN, + CLOSE_BUTTON, GtkButton) + +/** + * pidgin_close_button_new: + * + * Creates a new #PidginCloseButton instance. + * + * Returns: (transfer full): The new #PidginCloseButton instance. + * + * Since: 3.0.0 + */ +GtkWidget *pidgin_close_button_new(void); + +G_END_DECLS + +#endif /* PIDGIN_CLOSE_BUTTON_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pidgindialog.c Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,61 @@ +/* + * pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#include "pidgindialog.h" + +#include "pidgincore.h" + +struct _PidginDialog { + GtkDialog parent; +}; + +/****************************************************************************** + * GObject Implementation + *****************************************************************************/ +G_DEFINE_TYPE(PidginDialog, pidgin_dialog, GTK_TYPE_DIALOG) + +static void +pidgin_dialog_init(PidginDialog *button) { +} + +static void +pidgin_dialog_class_init(PidginDialogClass *klass) { +} + +/****************************************************************************** + * Public API + *****************************************************************************/ +GtkWidget * +pidgin_dialog_new(const gchar *title, guint border_width, const gchar *role, + gboolean resizable) +{ + if(title == NULL) { + title = PIDGIN_ALERT_TITLE; + } + + return GTK_WIDGET(g_object_new( + PIDGIN_TYPE_DIALOG, + "title", title, + "border-width", border_width, + "role", role, + "resizable", resizable, + NULL)); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pidgindialog.h Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,67 @@ +/* + * pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION) +# error "only <pidgin.h> may be included directly" +#endif + +#ifndef PIDGIN_DIALOG_H +#define PIDGIN_DIALOG_H + +/** + * SECTION:pidgindialog + * @section_id: pidgin-dialog + * @short_description: A base dialog widget. + * @title: Dialog + * + * #PidginDialog is a transitional widget as we slowly migrate everything to + * glade. + */ + +#include <glib.h> + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define PIDGIN_TYPE_DIALOG (pidgin_dialog_get_type()) +G_DECLARE_FINAL_TYPE(PidginDialog, pidgin_dialog, PIDGIN, + DIALOG, GtkDialog) + +/** + * pidgin_dialog_new: + * @title: The dialog title, or %NULL. + * @border_width: The dialog's desired border width. + * @role: A string indicating what the dialog is responsible for doing, or + * %NULL. + * @resizable: Whether the dialog should be resizable. + * + * Creates a new #PidginDialog instance. + * + * Returns: (transfer full): The new #PidginDialog instance. + * + * Since: 3.0.0 + */ +GtkWidget *pidgin_dialog_new(const gchar *title, guint border_width, const gchar *role, gboolean resizable); + +G_END_DECLS + +#endif /* PIDGIN_DIALOG_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pidginwindow.c Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,61 @@ +/* + * pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#include "pidginwindow.h" + +#include "pidgincore.h" + +struct _PidginWindow { + GtkWindow parent; +}; + +/****************************************************************************** + * GObject Implementation + *****************************************************************************/ +G_DEFINE_TYPE(PidginWindow, pidgin_window, GTK_TYPE_WINDOW) + +static void +pidgin_window_init(PidginWindow *button) { +} + +static void +pidgin_window_class_init(PidginWindowClass *klass) { +} + +/****************************************************************************** + * Public API + *****************************************************************************/ +GtkWidget * +pidgin_window_new(const gchar *title, guint border_width, const gchar *role, + gboolean resizable) +{ + if(title == NULL) { + title = PIDGIN_ALERT_TITLE; + } + + return GTK_WIDGET(g_object_new( + PIDGIN_TYPE_WINDOW, + "title", title, + "border-width", border_width, + "role", role, + "resizable", resizable, + NULL)); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pidginwindow.h Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,67 @@ +/* + * pidgin + * + * Pidgin is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION) +# error "only <pidgin.h> may be included directly" +#endif + +#ifndef PIDGIN_WINDOW_H +#define PIDGIN_WINDOW_H + +/** + * SECTION:pidginwindow + * @section_id: pidgin-window + * @short_description: A base window widget. + * @title: Window + * + * #PidginWindow is a transitional widget as we slowly migrate everything to + * glade. + */ + +#include <glib.h> + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define PIDGIN_TYPE_WINDOW (pidgin_window_get_type()) +G_DECLARE_FINAL_TYPE(PidginWindow, pidgin_window, PIDGIN, + WINDOW, GtkWindow) + +/** + * pidgin_window_new: + * @title: The window title, or %NULL. + * @border_width: The window's desired border width. + * @role: A string indicating what the window is responsible for doing, or + * %NULL. + * @resizable: Whether the window should be resizable. + * + * Creates a new #PidginWindow instance. + * + * Returns: (transfer full): The new #PidginWindow instance. + * + * Since: 3.0.0 + */ +GtkWidget *pidgin_window_new(const gchar *title, guint border_width, const gchar *role, gboolean resizable); + +G_END_DECLS + +#endif /* PIDGIN_WINDOW_H */
--- a/pidgin/plugins/gevolution/add_buddy_dialog.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/plugins/gevolution/add_buddy_dialog.c Tue Sep 15 20:26:57 2020 -0500 @@ -425,7 +425,7 @@ if (username != NULL) dialog->username = g_strdup(username); - dialog->win = pidgin_create_window(_("Add Buddy"), 12, "add_buddy", TRUE); + dialog->win = pidgin_window_new(_("Add Buddy"), 12, "add_buddy", TRUE); gtk_widget_set_size_request(dialog->win, -1, 400); g_signal_connect(G_OBJECT(dialog->win), "delete_event",
--- a/pidgin/plugins/gevolution/assoc-buddy.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/plugins/gevolution/assoc-buddy.c Tue Sep 15 20:26:57 2020 -0500 @@ -316,7 +316,7 @@ dialog->buddy = buddy; - dialog->win = pidgin_create_window(NULL, 12, "assoc_buddy", TRUE); + dialog->win = pidgin_window_new(NULL, 12, "assoc_buddy", TRUE); g_signal_connect(G_OBJECT(dialog->win), "delete_event", G_CALLBACK(delete_win_cb), dialog);
--- a/pidgin/plugins/gevolution/new_person_dialog.c Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/plugins/gevolution/new_person_dialog.c Tue Sep 15 20:26:57 2020 -0500 @@ -234,7 +234,7 @@ dialog->book = book; g_object_ref(book); - dialog->win = pidgin_create_window(_("New Person"), 12, "new_person", FALSE); + dialog->win = pidgin_window_new(_("New Person"), 12, "new_person", FALSE); g_signal_connect(G_OBJECT(dialog->win), "delete_event", G_CALLBACK(delete_win_cb), dialog);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/resources/closebutton.ui Tue Sep 15 20:26:57 2020 -0500 @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.2 + +Pidgin - Internet Messenger +Copyright (C) Pidgin Developers <devel@pidgin.im> + +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, see <http://www.gnu.org/licenses/>. + +--> +<interface> + <requires lib="gtk+" version="3.20"/> + <!-- interface-license-type gplv2 --> + <!-- interface-name Pidgin --> + <!-- interface-description Internet Messenger --> + <!-- interface-copyright Pidgin Developers <devel@pidgin.im> --> + <template class="PidginCloseButton" parent="GtkButton"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="focus_on_click">False</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Close</property> + <property name="relief">none</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">×</property> + <property name="single_line_mode">True</property> + </object> + </child> + </template> +</interface>
--- a/pidgin/resources/pidgin.gresource.xml Mon Sep 14 21:35:28 2020 -0500 +++ b/pidgin/resources/pidgin.gresource.xml Tue Sep 15 20:26:57 2020 -0500 @@ -22,5 +22,6 @@ <file compressed="true">Roomlist/roomlist.ui</file> <file compressed="true">Whiteboard/whiteboard.ui</file> <file compressed="true">Xfer/xfer.ui</file> + <file compressed="true">closebutton.ui</file> </gresource> </gresources>
--- a/po/POTFILES.in Mon Sep 14 21:35:28 2020 -0500 +++ b/po/POTFILES.in Tue Sep 15 20:26:57 2020 -0500 @@ -345,8 +345,10 @@ pidgin/pidginabout.c pidgin/pidgin.c pidgin/pidginattachment.c +pidgin/pidginclosebutton.c pidgin/pidgincontactcompletion.c pidgin/pidgindebug.c +pidgin/pidgindialog.c pidgin/pidgingdkpixbuf.c pidgin/pidgininvitedialog.c pidgin/pidginlog.c @@ -355,6 +357,7 @@ pidgin/pidginstock.c pidgin/pidgintalkatu.c pidgin/pidgintooltip.c +pidgin/pidginwindow.c pidgin/plugins/contact_priority.c pidgin/plugins/disco/gtkdisco.c pidgin/plugins/disco/xmppdisco.c @@ -398,6 +401,7 @@ pidgin/resources/Debug/debug.ui pidgin/resources/Debug/plugininfo.ui pidgin/resources/Conversations/invite_dialog.ui +pidgin/resources/closebutton.ui pidgin/win32/gtkwin32dep.c pidgin/win32/untar.c pidgin/win32/winpidgin.c