pidgin/minidialog.c

Sun, 04 Nov 2007 23:57:43 +0000

author
Will Thompson <resiak@pidgin.im>
date
Sun, 04 Nov 2007 23:57:43 +0000
branch
cpw.resiak.disconnectreason
changeset 21327
5bf0b779fd1a
parent 21324
1c03c4df1658
child 21328
6fcd010acaa3
permissions
-rw-r--r--

Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Calling gtk_widget_destroy() directly from the button-clicked callback was
eating the stack.

21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
1 /**
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
2 * @file minidialog.c Implementation of the #PidginMiniDialog Gtk widget.
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
3 * @ingroup pidgin
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
4 */
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
5
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
6 /* pidgin
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
7 *
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
10 * source distribution.
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
11 *
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
16 *
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
21 *
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
25 */
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
26
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
27 #include <gtk/gtkhbox.h>
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
28 #include <gtk/gtkbutton.h>
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
29
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
30 #include "libpurple/prefs.h"
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
31
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
32 #include "pidgin/minidialog.h"
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
33 #include "pidgin/pidgin.h"
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
34 #include "pidgin/pidginstock.h"
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
35
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
36 G_DEFINE_TYPE (PidginMiniDialog, pidgin_mini_dialog, GTK_TYPE_VBOX)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
37
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
38 enum
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
39 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
40 PROP_TITLE = 1,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
41 PROP_DESCRIPTION,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
42 PROP_ICON_NAME,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
43
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
44 LAST_PROPERTY
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
45 } HazeConnectionProperties;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
46
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
47 typedef struct _PidginMiniDialogPrivate
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
48 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
49 GtkImage *icon;
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
50 GtkBox *title_box;
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
51 GtkLabel *title;
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
52 GtkBox *desc_box;
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
53 GtkLabel *desc;
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
54 GtkBox *buttons;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
55 } PidginMiniDialogPrivate;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
56
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
57 #define PIDGIN_MINI_DIALOG_GET_PRIVATE(dialog) \
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
58 ((PidginMiniDialogPrivate *) ((dialog)->priv))
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
59
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
60 PidginMiniDialog *
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
61 pidgin_mini_dialog_new(const gchar *title,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
62 const gchar *description,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
63 const gchar *icon_name)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
64 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
65 PidginMiniDialog *mini_dialog = g_object_new(PIDGIN_TYPE_MINI_DIALOG,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
66 "title", title,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
67 "description", description,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
68 "icon-name", icon_name,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
69 NULL);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
70
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
71 return mini_dialog;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
72 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
73
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
74 void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
75 pidgin_mini_dialog_set_title(PidginMiniDialog *mini_dialog,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
76 const char *title)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
77 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
78 g_object_set(G_OBJECT(mini_dialog), "title", title, NULL);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
79 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
80
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
81 void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
82 pidgin_mini_dialog_set_description(PidginMiniDialog *mini_dialog,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
83 const char *description)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
84 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
85 g_object_set(G_OBJECT(mini_dialog), "description", description, NULL);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
86 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
87
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
88 void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
89 pidgin_mini_dialog_set_icon_name(PidginMiniDialog *mini_dialog,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
90 const char *icon_name)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
91 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
92 g_object_set(G_OBJECT(mini_dialog), "icon_name", icon_name, NULL);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
93 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
94
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
95 struct _mini_dialog_button_clicked_cb_data
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
96 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
97 PidginMiniDialog *mini_dialog;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
98 PidginMiniDialogCallback callback;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
99 gpointer user_data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
100 };
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
101
21327
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
102 static gboolean
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
103 idle_destroy_cb(GtkWidget *mini_dialog)
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
104 {
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
105 gtk_widget_destroy(mini_dialog);
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
106 return FALSE;
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
107 }
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
108
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
109 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
110 mini_dialog_button_clicked_cb(GtkButton *button,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
111 gpointer user_data)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
112 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
113 struct _mini_dialog_button_clicked_cb_data *data = user_data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
114
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
115 data->callback(data->mini_dialog, button, data->user_data);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
116
21327
5bf0b779fd1a Use an idle callback to destroy PidginMiniDialogs when a button is pressed.
Will Thompson <resiak@pidgin.im>
parents: 21324
diff changeset
117 g_idle_add((GSourceFunc) idle_destroy_cb, data->mini_dialog);
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
118 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
119
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
120 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
121 mini_dialog_button_destroy_cb(GtkButton *button,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
122 gpointer user_data)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
123 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
124 struct _mini_dialog_button_clicked_cb_data *data = user_data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
125 g_free(data);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
126 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
127
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
128 void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
129 pidgin_mini_dialog_add_button(PidginMiniDialog *self,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
130 const char *text,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
131 PidginMiniDialogCallback clicked_cb,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
132 gpointer user_data)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
133 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
134 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
135 struct _mini_dialog_button_clicked_cb_data *callback_data
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
136 = g_new0(struct _mini_dialog_button_clicked_cb_data, 1);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
137 GtkWidget *button = gtk_button_new();
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
138 GtkWidget *label = gtk_label_new(NULL);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
139 char *button_text =
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
140 g_strdup_printf("<span size=\"smaller\">%s</span>", text);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
141
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
142 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), button_text);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
143 g_free(button_text);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
144
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
145 callback_data->mini_dialog = self;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
146 callback_data->callback = clicked_cb;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
147 callback_data->user_data = user_data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
148 g_signal_connect(G_OBJECT(button), "clicked",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
149 (GCallback) mini_dialog_button_clicked_cb, callback_data);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
150 g_signal_connect(G_OBJECT(button), "destroy",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
151 (GCallback) mini_dialog_button_destroy_cb, callback_data);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
152
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
153 gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
154 gtk_container_add(GTK_CONTAINER(button), label);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
155
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
156 gtk_box_pack_end(GTK_BOX(priv->buttons), button, FALSE, FALSE,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
157 0);
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
158 gtk_widget_show_all(GTK_WIDGET(button));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
159 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
160
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
161 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
162 pidgin_mini_dialog_get_property(GObject *object,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
163 guint property_id,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
164 GValue *value,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
165 GParamSpec *pspec)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
166 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
167 PidginMiniDialog *self = PIDGIN_MINI_DIALOG(object);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
168 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
169
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
170 switch (property_id) {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
171 case PROP_TITLE:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
172 g_value_set_string(value, gtk_label_get_text(priv->title));
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
173 break;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
174 case PROP_DESCRIPTION:
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
175 g_value_set_string(value, gtk_label_get_text(priv->desc));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
176 break;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
177 case PROP_ICON_NAME:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
178 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
179 gchar *icon_name = NULL;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
180 GtkIconSize size;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
181 gtk_image_get_stock(priv->icon, &icon_name, &size);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
182 g_value_set_string(value, icon_name);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
183 break;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
184 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
185 default:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
186 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
187 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
188 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
189
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
190 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
191 mini_dialog_set_title(PidginMiniDialog *self,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
192 const char *title)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
193 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
194 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
195
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
196 char *title_esc = g_markup_escape_text(title, -1);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
197 char *title_markup = g_strdup_printf(
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
198 "<span weight=\"bold\" size=\"smaller\">%s</span>",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
199 title_esc ? title_esc : "");
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
200
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
201 gtk_label_set_markup(priv->title, title_markup);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
202
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
203 g_free(title_esc);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
204 g_free(title_markup);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
205 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
206
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
207 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
208 mini_dialog_set_description(PidginMiniDialog *self,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
209 const char *description)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
210 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
211 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
212 if(description)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
213 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
214 char *desc_esc = g_markup_escape_text(description, -1);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
215 char *desc_markup = g_strdup_printf(
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
216 "<span size=\"smaller\">%s</span>", desc_esc);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
217
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
218 gtk_label_set_markup(priv->desc, desc_markup);
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
219
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
220 g_free(desc_esc);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
221 g_free(desc_markup);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
222
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
223 gtk_widget_show_all(GTK_WIDGET(priv->desc_box));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
224 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
225 else
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
226 {
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
227 gtk_label_set_text(priv->desc, NULL);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
228 gtk_widget_hide_all(GTK_WIDGET(priv->desc_box));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
229 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
230 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
231
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
232 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
233 pidgin_mini_dialog_set_property(GObject *object,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
234 guint property_id,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
235 const GValue *value,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
236 GParamSpec *pspec)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
237 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
238 PidginMiniDialog *self = PIDGIN_MINI_DIALOG(object);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
239 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
240
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
241 switch (property_id) {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
242 case PROP_TITLE:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
243 mini_dialog_set_title(self, g_value_get_string(value));
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
244 break;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
245 case PROP_DESCRIPTION:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
246 mini_dialog_set_description(self, g_value_get_string(value));
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
247 break;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
248 case PROP_ICON_NAME:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
249 gtk_image_set_from_stock(priv->icon, g_value_get_string(value),
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
250 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
251 break;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
252 default:
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
253 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
254 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
255 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
256
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
257 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
258 pidgin_mini_dialog_finalize(GObject *object)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
259 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
260 PidginMiniDialog *self = PIDGIN_MINI_DIALOG(object);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
261 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
262
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
263 g_free(priv);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
264 self->priv = NULL;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
265
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
266 G_OBJECT_CLASS (pidgin_mini_dialog_parent_class)->finalize (object);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
267 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
268
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
269 static void
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
270 pidgin_mini_dialog_add(GtkContainer *container,
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
271 GtkWidget *widget)
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
272 {
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
273 PidginMiniDialog *self = PIDGIN_MINI_DIALOG(container);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
274 gtk_widget_show_all(widget);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
275 gtk_box_pack_start(self->contents, widget, FALSE, FALSE, 0);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
276 }
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
277
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
278 static void
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
279 pidgin_mini_dialog_remove(GtkContainer *container,
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
280 GtkWidget *widget)
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
281 {
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
282 PidginMiniDialog *self = PIDGIN_MINI_DIALOG(container);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
283 gtk_container_remove(GTK_CONTAINER(self->contents), widget);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
284 }
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
285
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
286 static void
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
287 pidgin_mini_dialog_forall(GtkContainer *container,
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
288 gboolean include_internals,
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
289 GtkCallback callback,
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
290 gpointer callback_data)
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
291 {
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
292 PidginMiniDialog *self = PIDGIN_MINI_DIALOG(container);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
293 PidginMiniDialogPrivate *priv = PIDGIN_MINI_DIALOG_GET_PRIVATE(self);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
294 GtkContainer *contents = GTK_CONTAINER(self->contents);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
295
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
296 if(include_internals)
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
297 {
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
298 (*callback)(GTK_WIDGET(priv->title_box), callback_data);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
299 (*callback)(GTK_WIDGET(priv->desc_box), callback_data);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
300 }
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
301
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
302 gtk_container_foreach(contents, callback, callback_data);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
303
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
304 if (include_internals)
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
305 (*callback)(GTK_WIDGET(priv->buttons), callback_data);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
306 }
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
307
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
308 static void
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
309 pidgin_mini_dialog_class_init(PidginMiniDialogClass *klass)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
310 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
311 GObjectClass *object_class = G_OBJECT_CLASS(klass);
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
312 GtkContainerClass *container_class = GTK_CONTAINER_CLASS(klass);
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
313 GParamSpec *param_spec;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
314
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
315 object_class->get_property = pidgin_mini_dialog_get_property;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
316 object_class->set_property = pidgin_mini_dialog_set_property;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
317 object_class->finalize = pidgin_mini_dialog_finalize;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
318
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
319 container_class->add = pidgin_mini_dialog_add;
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
320 container_class->remove = pidgin_mini_dialog_remove;
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
321 container_class->forall = pidgin_mini_dialog_forall;
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
322 /* TODO: Implement set_focus_child, {get,set}_child_property and pals
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
323 * if necessary.
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
324 */
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
325
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
326 param_spec = g_param_spec_string("title", "title",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
327 "String specifying the mini-dialog's title", NULL,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
328 #if GTK_CHECK_VERSION(2,8,0)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
329 G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB |
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
330 #endif
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
331 G_PARAM_READWRITE);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
332 g_object_class_install_property (object_class, PROP_TITLE, param_spec);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
333
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
334 param_spec = g_param_spec_string("description", "description",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
335 "Description text for the mini-dialog, if desired", NULL,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
336 #if GTK_CHECK_VERSION(2,8,0)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
337 G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB |
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
338 #endif
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
339 G_PARAM_READWRITE);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
340 g_object_class_install_property (object_class, PROP_DESCRIPTION, param_spec);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
341
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
342 param_spec = g_param_spec_string("icon-name", "icon-name",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
343 "String specifying the Gtk stock name of the dialog's icon",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
344 NULL,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
345 #if GTK_CHECK_VERSION(2,8,0)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
346 G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB |
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
347 #endif
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
348 G_PARAM_READWRITE);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
349 g_object_class_install_property (object_class, PROP_ICON_NAME, param_spec);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
350 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
351
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
352 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
353 pidgin_mini_dialog_init(PidginMiniDialog *self)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
354 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
355 GtkBox *self_box = GTK_BOX(self);
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
356
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
357 PidginMiniDialogPrivate *priv = g_new0(PidginMiniDialogPrivate, 1);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
358 self->priv = priv;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
359
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
360 gtk_container_set_border_width(GTK_CONTAINER(self), PIDGIN_HIG_BOX_SPACE);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
361
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
362 priv->title_box = GTK_BOX(gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
363
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
364 priv->icon = GTK_IMAGE(gtk_image_new());
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
365 gtk_misc_set_alignment(GTK_MISC(priv->icon), 0, 0);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
366
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
367 priv->title = GTK_LABEL(gtk_label_new(""));
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
368 /* TODO: update this request when /blist/width updates. Also, 25 is
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
369 * magic.
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
370 */
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
371 gtk_widget_set_size_request(GTK_WIDGET(priv->title),
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
372 purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25, -1);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
373 gtk_label_set_line_wrap(priv->title, TRUE);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
374 gtk_misc_set_alignment(GTK_MISC(priv->title), 0, 0);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
375
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
376 gtk_box_pack_start(priv->title_box, GTK_WIDGET(priv->icon), FALSE, FALSE, 0);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
377 gtk_box_pack_start(priv->title_box, GTK_WIDGET(priv->title), TRUE, TRUE, 0);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
378 gtk_widget_show_all(GTK_WIDGET(priv->title_box));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
379
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
380 priv->desc_box = GTK_BOX(gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE));
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
381 priv->desc = GTK_LABEL(gtk_label_new(""));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
382 /* TODO: update this request when /blist/width updates. Also, 25 is
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
383 * magic.
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
384 */
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
385 gtk_widget_set_size_request(GTK_WIDGET(priv->desc),
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
386 purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25, -1);
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
387 gtk_label_set_line_wrap(priv->desc, TRUE);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
388 gtk_misc_set_alignment(GTK_MISC(priv->desc), 0, 0);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
389 gtk_box_pack_start(priv->desc_box, GTK_WIDGET(priv->desc),
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
390 TRUE, TRUE, 0);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
391 gtk_widget_hide_all(GTK_WIDGET(priv->desc_box));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
392
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
393 self->contents = GTK_BOX(gtk_vbox_new(FALSE, 0));
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
394 gtk_widget_show_all(GTK_WIDGET(self->contents));
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
395
21324
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
396 priv->buttons = GTK_BOX(gtk_hbox_new(FALSE, 0));
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
397 gtk_widget_show_all(GTK_WIDGET(priv->buttons));
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
398
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
399 gtk_box_pack_start(self_box, GTK_WIDGET(priv->title_box), FALSE, FALSE, 0);
1c03c4df1658 Make PidginMiniDialog do more things right when used as a GtkContainer. _add,
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
400 gtk_box_pack_start(self_box, GTK_WIDGET(priv->desc_box), FALSE, FALSE, 0);
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
401 gtk_box_pack_start(self_box, GTK_WIDGET(self->contents), TRUE, TRUE, 0);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
402 gtk_box_pack_start(self_box, GTK_WIDGET(priv->buttons), FALSE, FALSE, 0);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
403
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
404 gtk_widget_show_all(GTK_WIDGET(self));
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents:
diff changeset
405 }

mercurial