Mercurial > pidgin
annotate src/buddy_chat.c @ 7824:1663c076a744
[gaim-migrate @ 8476]
Changes from revo/shx. They're still all #if 0'ed out and what not.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Wed, 10 Dec 2003 06:34:11 +0000 |
| parents | 061b39119a1b |
| children | 0555e59dfba9 |
| rev | line source |
|---|---|
| 1 | 1 /* |
| 2 * gaim | |
| 3 * | |
| 4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 * | |
| 6 * This program is free software; you can redistribute it and/or modify | |
| 7 * it under the terms of the GNU General Public License as published by | |
| 8 * the Free Software Foundation; either version 2 of the License, or | |
| 9 * (at your option) any later version. | |
| 10 * | |
| 11 * This program is distributed in the hope that it will be useful, | |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 * GNU General Public License for more details. | |
| 15 * | |
| 16 * You should have received a copy of the GNU General Public License | |
| 17 * along with this program; if not, write to the Free Software | |
| 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 * | |
| 20 */ | |
| 7798 | 21 #include "gtkinternal.h" |
| 1 | 22 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
23 #include "debug.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
24 #include "multi.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
25 #include "notify.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
26 #include "prpl.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
27 #include "server.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
28 |
| 7798 | 29 #include "gtkblist.h" |
|
1428
00b3d02a2168
[gaim-migrate @ 1438]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1398
diff
changeset
|
30 #include "gtkimhtml.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
31 #include "gtkutils.h" |
| 7798 | 32 #include "stock.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
33 #include "ui.h" |
|
344
2434adbb8703
[gaim-migrate @ 354]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
34 |
| 7798 | 35 typedef struct |
| 36 { | |
| 37 GaimAccount *account; | |
| 38 | |
| 39 GtkWidget *window; | |
| 40 GtkWidget *account_menu; | |
| 41 GtkWidget *entries_box; | |
| 42 GtkSizeGroup *sg; | |
| 43 | |
| 44 GList *entries; | |
| 45 } GaimGtkJoinChatData; | |
| 3762 | 46 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
47 static void |
| 7798 | 48 do_join_chat(GaimGtkJoinChatData *data) |
| 1 | 49 { |
| 7798 | 50 if (data) { |
| 5234 | 51 GHashTable *components = g_hash_table_new_full(g_str_hash, g_str_equal, |
| 52 g_free, g_free); | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
53 GList *tmp; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
54 |
| 7798 | 55 for (tmp = data->entries; tmp != NULL; tmp = tmp->next) { |
| 4635 | 56 if (g_object_get_data(tmp->data, "is_spin")) { |
| 5234 | 57 g_hash_table_replace(components, |
| 58 g_strdup(g_object_get_data(tmp->data, "identifier")), | |
| 59 g_strdup_printf("%d", | |
| 60 gtk_spin_button_get_value_as_int(tmp->data))); | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
61 } |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
62 else { |
| 5234 | 63 g_hash_table_replace(components, |
| 64 g_strdup(g_object_get_data(tmp->data, "identifier")), | |
| 65 g_strdup(gtk_entry_get_text(tmp->data))); | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
66 } |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
67 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
68 |
| 7798 | 69 serv_join_chat(gaim_account_get_connection(data->account), components); |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
70 |
| 5234 | 71 g_hash_table_destroy(components); |
| 1 | 72 } |
| 73 } | |
| 74 | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
75 static void |
| 7798 | 76 rebuild_joinchat_entries(GaimGtkJoinChatData *data) |
|
1806
c649b63382b7
[gaim-migrate @ 1816]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1793
diff
changeset
|
77 { |
| 7798 | 78 GaimConnection *gc; |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
79 GList *list, *tmp; |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
80 struct proto_chat_entry *pce; |
|
2289
38e156136896
[gaim-migrate @ 2299]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2268
diff
changeset
|
81 gboolean focus = TRUE; |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
82 |
| 7798 | 83 gc = gaim_account_get_connection(data->account); |
|
1806
c649b63382b7
[gaim-migrate @ 1816]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1793
diff
changeset
|
84 |
| 7798 | 85 while (GTK_BOX(data->entries_box)->children) { |
| 86 gtk_container_remove(GTK_CONTAINER(data->entries_box), | |
| 87 ((GtkBoxChild *)GTK_BOX(data->entries_box)->children->data)->widget); | |
| 88 } | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
89 |
| 7798 | 90 if (data->entries != NULL) |
| 91 g_list_free(data->entries); | |
| 92 | |
| 93 data->entries = NULL; | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
94 |
| 7798 | 95 list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
96 |
| 7798 | 97 for (tmp = list; tmp; tmp = tmp->next) |
| 98 { | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
99 GtkWidget *label; |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
100 GtkWidget *rowbox; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
101 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
102 pce = tmp->data; |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
103 |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
104 rowbox = gtk_hbox_new(FALSE, 5); |
| 7798 | 105 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0); |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
106 |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
107 label = gtk_label_new(pce->label); |
| 7798 | 108 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 109 gtk_size_group_add_widget(data->sg, label); | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
110 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
111 |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
112 if (pce->is_int) { |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
113 GtkObject *adjust; |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
114 GtkWidget *spin; |
| 7798 | 115 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max, |
| 116 1, 10, 10); | |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
117 spin = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0); |
| 4635 | 118 g_object_set_data(G_OBJECT(spin), "is_spin", GINT_TO_POINTER(TRUE)); |
| 5234 | 119 g_object_set_data(G_OBJECT(spin), "identifier", pce->identifier); |
| 7798 | 120 data->entries = g_list_append(data->entries, spin); |
| 4635 | 121 gtk_widget_set_size_request(spin, 50, -1); |
|
2346
b1c1e3401e10
[gaim-migrate @ 2359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2345
diff
changeset
|
122 gtk_box_pack_end(GTK_BOX(rowbox), spin, FALSE, FALSE, 0); |
| 7798 | 123 } else { |
| 124 GtkWidget *entry = gtk_entry_new(); | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
125 |
| 7798 | 126 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
| 127 g_object_set_data(G_OBJECT(entry), "identifier", pce->identifier); | |
| 128 data->entries = g_list_append(data->entries, entry); | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
129 |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
130 if (pce->def) |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
131 gtk_entry_set_text(GTK_ENTRY(entry), pce->def); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
132 |
|
2289
38e156136896
[gaim-migrate @ 2299]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2268
diff
changeset
|
133 if (focus) { |
|
38e156136896
[gaim-migrate @ 2299]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2268
diff
changeset
|
134 gtk_widget_grab_focus(entry); |
|
38e156136896
[gaim-migrate @ 2299]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2268
diff
changeset
|
135 focus = FALSE; |
|
38e156136896
[gaim-migrate @ 2299]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2268
diff
changeset
|
136 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
137 |
| 7798 | 138 if (pce->secret) |
| 139 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
140 |
| 7798 | 141 gtk_box_pack_end(GTK_BOX(rowbox), entry, TRUE, TRUE, 0); |
|
2205
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
142 } |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
143 |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
144 g_free(pce); |
|
cff4fbe01c7b
[gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2199
diff
changeset
|
145 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
146 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
147 g_list_free(list); |
|
1806
c649b63382b7
[gaim-migrate @ 1816]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1793
diff
changeset
|
148 |
| 7798 | 149 gtk_widget_show_all(data->entries_box); |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
150 } |
|
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
151 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
152 static void |
| 7798 | 153 join_chat_select_account_cb(GObject *w, GaimAccount *account, GaimGtkJoinChatData *data) |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
154 { |
| 7798 | 155 if (gaim_account_get_protocol(data->account) == |
| 156 gaim_account_get_protocol(account)) { | |
| 157 data->account = account; | |
| 158 } else { | |
| 159 data->account = account; | |
| 160 rebuild_joinchat_entries(data); | |
| 161 } | |
| 162 } | |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
163 |
| 7798 | 164 static gboolean |
| 165 join_chat_check_account_func(GaimAccount *account) | |
| 166 { | |
| 167 GaimConnection *gc = gaim_account_get_connection(account); | |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
168 |
| 7798 | 169 return (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL); |
| 170 } | |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
171 |
| 7798 | 172 static void do_joinchat(GtkWidget *dialog, int id, GaimGtkJoinChatData *info) |
| 173 { | |
| 174 switch(id) { | |
| 175 case GTK_RESPONSE_OK: | |
| 176 do_join_chat(info); | |
|
5881
cc7870e1e3b3
[gaim-migrate @ 6313]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
177 |
| 7798 | 178 break; |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
179 } |
|
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
180 |
| 7798 | 181 gtk_widget_destroy(GTK_WIDGET(dialog)); |
| 182 g_list_free(info->entries); | |
| 183 g_free(info); | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
184 } |
| 1 | 185 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
186 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
187 void |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
188 join_chat() |
| 1 | 189 { |
| 7816 | 190 GtkWidget *hbox, *vbox; |
| 1210 | 191 GtkWidget *rowbox; |
| 192 GtkWidget *label; | |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
193 GList *c; |
| 7798 | 194 GaimGtkBuddyList *gtkblist; |
| 7816 | 195 GtkWidget *img = NULL; |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
196 GaimConnection *gc = NULL; |
| 7798 | 197 GaimGtkJoinChatData *data = NULL; |
| 7816 | 198 int numaccounts = 0; |
|
1356
c22d04db51be
[gaim-migrate @ 1366]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1343
diff
changeset
|
199 |
| 7816 | 200 /* Count how many protocols support chat */ |
|
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
201 for (c = gaim_connections_get_all(); c != NULL; c = c->next) { |
|
1356
c22d04db51be
[gaim-migrate @ 1366]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1343
diff
changeset
|
202 gc = c->data; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
203 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4859
diff
changeset
|
204 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat) |
| 7816 | 205 numaccounts++; |
|
1356
c22d04db51be
[gaim-migrate @ 1366]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1343
diff
changeset
|
206 } |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
207 |
| 7816 | 208 if (numaccounts <= 0) { |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5234
diff
changeset
|
209 gaim_notify_error(NULL, NULL, |
|
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
210 _("You are not currently signed on with any " |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5234
diff
changeset
|
211 "protocols that have the ability to chat."), |
|
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5234
diff
changeset
|
212 NULL); |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
213 |
|
1356
c22d04db51be
[gaim-migrate @ 1366]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1343
diff
changeset
|
214 return; |
|
c22d04db51be
[gaim-migrate @ 1366]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1343
diff
changeset
|
215 } |
| 456 | 216 |
| 7798 | 217 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); |
| 218 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); | |
| 219 data = g_new0(GaimGtkJoinChatData, 1); | |
| 456 | 220 |
| 7816 | 221 data->window = gtk_dialog_new_with_buttons(_("Join Chat"), gtkblist->window ? GTK_WINDOW(gtkblist->window) : NULL, 0, |
| 7798 | 222 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
| 7799 | 223 "Join", GTK_RESPONSE_OK, NULL); |
| 7798 | 224 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK); |
| 225 gtk_container_set_border_width(GTK_CONTAINER(data->window), 6); | |
| 226 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE); | |
| 227 gtk_dialog_set_has_separator(GTK_DIALOG(data->window), FALSE); | |
| 228 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), 12); | |
| 229 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), 6); | |
|
1250
b5783215b245
[gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1235
diff
changeset
|
230 |
| 7798 | 231 hbox = gtk_hbox_new(FALSE, 12); |
| 232 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox); | |
| 233 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 234 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
235 |
| 7816 | 236 vbox = gtk_vbox_new(FALSE, 5); |
| 237 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | |
| 238 gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 239 | |
| 240 label = gtk_label_new(_("Please enter the appropriate information about the chat you would like to join.\n")); | |
| 241 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 242 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 243 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
|
964
2cd7b73e2c9a
[gaim-migrate @ 974]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
960
diff
changeset
|
244 |
| 7798 | 245 rowbox = gtk_hbox_new(FALSE, 5); |
| 7816 | 246 gtk_box_pack_start(GTK_BOX(vbox), rowbox, TRUE, TRUE, 0); |
| 247 | |
| 248 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
|
1806
c649b63382b7
[gaim-migrate @ 1816]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1793
diff
changeset
|
249 |
| 7816 | 250 if (numaccounts > 1) { |
| 251 label = gtk_label_new(_("Join Chat As:")); | |
| 252 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 253 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); | |
| 254 gtk_size_group_add_widget(data->sg, label); | |
|
692
f4026275bc9f
[gaim-migrate @ 702]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
666
diff
changeset
|
255 |
| 7816 | 256 data->account_menu = gaim_gtk_account_option_menu_new(NULL, FALSE, |
| 257 G_CALLBACK(join_chat_select_account_cb), | |
| 258 join_chat_check_account_func, data); | |
| 259 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0); | |
| 260 } | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
261 |
| 7798 | 262 data->entries_box = gtk_vbox_new(FALSE, 5); |
| 7816 | 263 gtk_container_add(GTK_CONTAINER(vbox), data->entries_box); |
| 7798 | 264 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0); |
| 265 | |
| 1210 | 266 |
| 7816 | 267 data->account = gaim_connection_get_account(gaim_connections_get_all()->data); |
| 7798 | 268 rebuild_joinchat_entries(data); |
| 269 | |
|
2374
9e9385cddcc6
[gaim-migrate @ 2387]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2372
diff
changeset
|
270 |
| 7798 | 271 g_signal_connect(G_OBJECT(data->window), "response", G_CALLBACK(do_joinchat), data); |
| 272 | |
| 273 g_object_unref(data->sg); | |
| 274 | |
| 275 gtk_widget_show_all(data->window); | |
| 1 | 276 } |
