Mercurial > pidgin
annotate src/gtkconn.c @ 7431:643cbc9a6035
[gaim-migrate @ 8036]
This is good enough for CVS. This is new logging. It centers around the
highly modular "GaimLogLogger," which controls how to write the log. Currently
I only have the plain text logger. I wrote the beginning of an XML logger, but
decided I didn't think it was that great an idea. Plugins can implement loggers
themselves, so you can have, like, an SQL logger or something.
The default logger writes to a file unique to the conversation, and they're saved
on disk in a heirarchical fashion: ~/.gaim/logs/aim/seanegn/robflynn-date.log would
be a conversation I had with Rob on date.
What doesn't work:
System logging
The search button in the log viewer.
Oh, chats probably don't log either, I didn't test.
You can only log in plain text right now.
Obviously, it's not done yet. But you can play around with it, and give it
some love. I'll get back to it tomorrow after school, maybe.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 05 Nov 2003 06:15:49 +0000 |
parents | 2ea9bf5686ad |
children | 4a416ff9cb4f |
rev | line source |
---|---|
5717 | 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 */ | |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6216
diff
changeset
|
20 #include "gtkinternal.h" |
5717 | 21 |
22 #include "account.h" | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
23 #include "debug.h" |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
24 #include "notify.h" |
6216 | 25 #include "prefs.h" |
7399 | 26 #include "stock.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
27 #include "util.h" |
5717 | 28 |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
29 #include "gtkblist.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
30 #include "gtkutils.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
31 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
32 #include "ui.h" |
5717 | 33 |
34 struct signon_meter { | |
35 GaimAccount *account; | |
36 GtkWidget *button; | |
37 GtkWidget *progress; | |
38 GtkWidget *status; | |
39 }; | |
40 | |
41 struct meter_window { | |
42 GtkWidget *window; | |
43 GtkWidget *table; | |
44 gint rows; | |
45 gint active_count; | |
46 GSList *meters; | |
47 } *meter_win = NULL; | |
48 | |
5991
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
49 static void kill_meter(struct signon_meter *meter, const char *text); |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
50 |
5717 | 51 static void cancel_signon(GtkWidget *button, struct signon_meter *meter) |
52 { | |
5991
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
53 if (meter->account->gc != NULL) { |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
54 meter->account->gc->wants_to_die = TRUE; |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
55 gaim_connection_destroy(meter->account->gc); |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
56 } |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
57 else { |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
58 kill_meter(meter, _("Done.")); |
5987
6e19ad2ef712
[gaim-migrate @ 6435]
Christian Hammond <chipx86@chipx86.com>
parents:
5936
diff
changeset
|
59 |
5991
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
60 if (gaim_connections_get_all() == NULL) { |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
61 destroy_all_dialogs(); |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
62 |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
63 gaim_blist_destroy(); |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
64 |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
65 show_login(); |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
66 } |
5d5bad909bc4
[gaim-migrate @ 6439]
Christian Hammond <chipx86@chipx86.com>
parents:
5989
diff
changeset
|
67 } |
5717 | 68 } |
69 | |
70 static void cancel_all () { | |
71 GSList *m = meter_win ? meter_win->meters : NULL; | |
6114 | 72 struct signon_meter *meter; |
5717 | 73 |
74 while (m) { | |
6114 | 75 meter = m->data; |
76 cancel_signon(NULL, meter); | |
77 m = m->next; | |
5717 | 78 } |
79 } | |
80 | |
81 static gint meter_destroy(GtkWidget *window, GdkEvent *evt, struct signon_meter *meter) | |
82 { | |
83 return TRUE; | |
84 } | |
85 | |
86 static struct signon_meter *find_signon_meter(GaimConnection *gc) | |
87 { | |
88 GSList *m = meter_win ? meter_win->meters : NULL; | |
6114 | 89 struct signon_meter *meter; |
5717 | 90 |
91 while (m) { | |
6114 | 92 meter = m->data; |
93 if (meter->account == gaim_connection_get_account(gc)) | |
5717 | 94 return m->data; |
95 m = m->next; | |
96 } | |
97 | |
98 return NULL; | |
99 } | |
100 | |
101 static GtkWidget* create_meter_pixmap (GaimConnection *gc) | |
102 { | |
103 GdkPixbuf *pb = create_prpl_icon(gc->account); | |
104 GdkPixbuf *scale = gdk_pixbuf_scale_simple(pb, 30,30,GDK_INTERP_BILINEAR); | |
105 GtkWidget *image = | |
106 gtk_image_new_from_pixbuf(scale); | |
107 g_object_unref(G_OBJECT(pb)); | |
108 g_object_unref(G_OBJECT(scale)); | |
109 return image; | |
110 } | |
111 | |
112 | |
113 | |
114 static struct signon_meter * | |
115 new_meter(GaimConnection *gc, GtkWidget *widget, | |
116 GtkWidget *table, gint *rows) | |
117 { | |
118 GtkWidget *graphic; | |
119 GtkWidget *label; | |
120 GtkWidget *nest_vbox; | |
121 GString *name_to_print; | |
122 struct signon_meter *meter; | |
123 | |
124 | |
125 meter = g_new0(struct signon_meter, 1); | |
126 | |
127 meter->account = gaim_connection_get_account(gc); | |
128 name_to_print = g_string_new(gaim_account_get_username(meter->account)); | |
129 | |
130 (*rows)++; | |
131 gtk_table_resize (GTK_TABLE(table), *rows, 4); | |
132 | |
133 graphic = create_meter_pixmap(gc); | |
134 | |
135 nest_vbox = gtk_vbox_new (FALSE, 0); | |
136 | |
137 g_string_prepend(name_to_print, _("Signon: ")); | |
138 label = gtk_label_new (name_to_print->str); | |
139 g_string_free(name_to_print, TRUE); | |
140 gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); | |
141 | |
142 meter->status = gtk_label_new(""); | |
143 gtk_misc_set_alignment(GTK_MISC(meter->status), 0, 0.5); | |
144 gtk_widget_set_size_request(meter->status, 250, -1); | |
145 | |
146 meter->progress = gtk_progress_bar_new (); | |
147 | |
148 meter->button = gaim_pixbuf_button_from_stock (_("Cancel"), GTK_STOCK_CANCEL, GAIM_BUTTON_HORIZONTAL); | |
149 g_signal_connect(G_OBJECT (meter->button), "clicked", | |
150 G_CALLBACK (cancel_signon), meter); | |
151 | |
152 gtk_table_attach (GTK_TABLE (table), graphic, 0, 1, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
153 gtk_table_attach (GTK_TABLE (table), nest_vbox, 1, 2, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
154 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (label), FALSE, FALSE, 0); | |
155 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (meter->status), FALSE, FALSE, 0); | |
156 gtk_table_attach (GTK_TABLE (table), meter->progress, 2, 3, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
157 gtk_table_attach (GTK_TABLE (table), meter->button, 3, 4, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | |
158 | |
159 gtk_widget_show_all (GTK_WIDGET (meter_win->window)); | |
160 | |
161 meter_win->active_count++; | |
162 | |
163 return meter; | |
164 } | |
165 | |
166 static void kill_meter(struct signon_meter *meter, const char *text) { | |
167 gtk_widget_set_sensitive (meter->button, FALSE); | |
168 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(meter->progress), 1); | |
169 gtk_label_set_text(GTK_LABEL(meter->status), text); | |
170 meter_win->active_count--; | |
171 if (meter_win->active_count == 0) { | |
172 gtk_widget_destroy(meter_win->window); | |
173 g_free (meter_win); | |
174 meter_win = NULL; | |
175 } | |
176 } | |
177 | |
178 static void gaim_gtk_connection_connect_progress(GaimConnection *gc, | |
179 const char *text, size_t step, size_t step_count) | |
180 { | |
181 struct signon_meter *meter; | |
182 | |
183 if(!meter_win) { | |
184 GtkWidget *vbox; | |
185 GtkWidget *cancel_button; | |
186 | |
187 if(mainwindow) | |
188 gtk_widget_hide(mainwindow); | |
189 | |
190 meter_win = g_new0(struct meter_window, 1); | |
191 meter_win->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
192 gtk_window_set_resizable(GTK_WINDOW(meter_win->window), FALSE); | |
193 gtk_window_set_role(GTK_WINDOW(meter_win->window), "signon"); | |
194 gtk_container_set_border_width(GTK_CONTAINER(meter_win->window), 5); | |
195 gtk_window_set_title(GTK_WINDOW(meter_win->window), _("Signon")); | |
196 gtk_widget_realize(meter_win->window); | |
197 | |
198 vbox = gtk_vbox_new (FALSE, 0); | |
199 gtk_container_add(GTK_CONTAINER(meter_win->window), vbox); | |
200 | |
201 meter_win->table = gtk_table_new(1, 4, FALSE); | |
202 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(meter_win->table), | |
203 FALSE, FALSE, 0); | |
204 gtk_container_set_border_width(GTK_CONTAINER(meter_win->table), 5); | |
205 gtk_table_set_row_spacings(GTK_TABLE(meter_win->table), 5); | |
206 gtk_table_set_col_spacings(GTK_TABLE(meter_win->table), 10); | |
207 | |
208 cancel_button = gaim_pixbuf_button_from_stock(_("Cancel All"), | |
209 GTK_STOCK_QUIT, GAIM_BUTTON_HORIZONTAL); | |
210 g_signal_connect_swapped(G_OBJECT(cancel_button), "clicked", | |
211 G_CALLBACK(cancel_all), NULL); | |
212 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(cancel_button), | |
213 FALSE, FALSE, 0); | |
214 | |
215 g_signal_connect(G_OBJECT(meter_win->window), "delete_event", | |
216 G_CALLBACK(meter_destroy), NULL); | |
217 } | |
218 | |
219 meter = find_signon_meter(gc); | |
220 if(!meter) { | |
221 meter = new_meter(gc, meter_win->window, meter_win->table, | |
222 &meter_win->rows); | |
223 | |
224 meter_win->meters = g_slist_append(meter_win->meters, meter); | |
225 } | |
226 | |
227 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(meter->progress), | |
228 (float)step / (float)step_count); | |
229 gtk_label_set_text(GTK_LABEL(meter->status), text); | |
230 } | |
231 | |
232 static void gaim_gtk_connection_connected(GaimConnection *gc) | |
233 { | |
234 struct signon_meter *meter = find_signon_meter(gc); | |
235 | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
236 gaim_setup(gc); |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
237 |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
238 do_away_menu(); |
5936
1b56a833d665
[gaim-migrate @ 6376]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
239 gaim_gtk_blist_update_protocol_actions(); |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
240 |
5717 | 241 if(meter) |
242 kill_meter(meter, _("Done.")); | |
243 } | |
244 | |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
245 static void gaim_gtk_connection_disconnected(GaimConnection *gc) |
5717 | 246 { |
247 struct signon_meter *meter = find_signon_meter(gc); | |
5883
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
248 |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
249 do_away_menu(); |
5936
1b56a833d665
[gaim-migrate @ 6376]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
250 gaim_gtk_blist_update_protocol_actions(); |
5883
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
251 |
5717 | 252 if(meter) |
253 kill_meter(meter, _("Done.")); | |
5883
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
254 |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
255 if (gaim_connections_get_all() != NULL) |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
256 return; |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
257 |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
258 destroy_all_dialogs(); |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
259 |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
260 gaim_blist_destroy(); |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
261 |
f5b0c6073264
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
262 show_login(); |
5717 | 263 } |
264 | |
265 static void gaim_gtk_connection_notice(GaimConnection *gc, | |
266 const char *text) | |
267 { | |
268 } | |
269 | |
7399 | 270 struct disconnect_window { |
271 GtkWidget *window; | |
272 GtkWidget *treeview; | |
273 GtkWidget *sw; | |
274 GtkWidget *label; | |
275 }; | |
276 struct disconnect_window *disconnect_window = NULL; | |
277 | |
278 static void disconnect_response_cb(GtkDialog *dialog, gint id, GtkWidget *widget) | |
279 { | |
7431 | 280 GaimAccount *account = NULL; |
281 | |
7399 | 282 switch(id) { |
283 case GTK_RESPONSE_CLOSE: | |
284 gtk_widget_destroy(disconnect_window->window); | |
285 g_free(disconnect_window); | |
286 disconnect_window = NULL; | |
287 break; | |
288 case GTK_RESPONSE_ACCEPT: | |
7431 | 289 |
290 gaim_account_connect(account); | |
7399 | 291 break; |
292 } | |
293 } | |
294 | |
295 static void disconnect_tree_cb(GtkTreeSelection *sel, GtkTreeModel *model) | |
296 { | |
297 GtkTreeIter iter; | |
298 GValue val = { 0, }; | |
299 const char *label_text; | |
300 | |
301 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | |
302 return; | |
303 gtk_tree_model_get_value (model, &iter, 3, &val); | |
304 label_text = g_value_get_string(&val); | |
305 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); | |
306 g_value_unset(&val); | |
307 } | |
308 | |
309 | |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
310 static void |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
311 gaim_gtk_connection_report_disconnect(GaimConnection *gc, const char *text) |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
312 { |
7399 | 313 char *label_text = NULL; |
314 GdkPixbuf *scale, *icon; | |
315 GtkTreeViewColumn *col; | |
316 GtkListStore *list_store; | |
317 GtkTreeIter iter; | |
318 | |
319 icon = create_prpl_icon(gaim_connection_get_account(gc)); | |
320 scale = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | |
321 | |
7409
2ea9bf5686ad
[gaim-migrate @ 8009]
Christian Hammond <chipx86@chipx86.com>
parents:
7407
diff
changeset
|
322 label_text = g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s has been disconnected.</span>\n\n%s\n%s", |
7399 | 323 gaim_account_get_username(gaim_connection_get_account(gc)), gaim_date_full(), |
324 text ? text : _("Reason Unknown.")); | |
325 | |
326 if (!disconnect_window) { | |
327 GtkWidget *hbox, *vbox, *img; | |
328 GtkCellRenderer *rend, *rend2; | |
329 GtkTreeSelection *sel; | |
330 | |
7407 | 331 disconnect_window = g_new0(struct disconnect_window, 1); |
7399 | 332 disconnect_window->window = gtk_dialog_new_with_buttons("", NULL, GTK_DIALOG_NO_SEPARATOR, |
333 _("Reconnect"), GTK_RESPONSE_ACCEPT, | |
334 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); | |
335 g_signal_connect(G_OBJECT(disconnect_window->window), "response", G_CALLBACK(disconnect_response_cb), disconnect_window); | |
336 | |
337 gtk_container_set_border_width(GTK_CONTAINER(disconnect_window->window), 6); | |
338 gtk_window_set_resizable(GTK_WINDOW(disconnect_window->window), FALSE); | |
339 gtk_dialog_set_has_separator(GTK_DIALOG(disconnect_window->window), FALSE); | |
340 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(disconnect_window->window)->vbox), 12); | |
341 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(disconnect_window->window)->vbox), 6); | |
342 | |
343 hbox = gtk_hbox_new(FALSE, 12); | |
344 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(disconnect_window->window)->vbox), hbox); | |
345 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG); | |
346 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
347 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
348 | |
349 vbox = gtk_vbox_new(FALSE, 12); | |
350 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); | |
351 | |
352 disconnect_window->label = gtk_label_new(NULL); | |
353 | |
354 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); | |
355 gtk_label_set_line_wrap(GTK_LABEL(disconnect_window->label), TRUE); | |
356 gtk_misc_set_alignment(GTK_MISC(disconnect_window->label), 0, 0); | |
357 gtk_box_pack_start(GTK_BOX(vbox), disconnect_window->label, FALSE, FALSE, 0); | |
358 | |
359 gtk_widget_show_all(disconnect_window->window); | |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
360 |
7399 | 361 /* Tree View */ |
362 disconnect_window->sw = gtk_scrolled_window_new(NULL,NULL); | |
363 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(disconnect_window->sw), GTK_SHADOW_IN); | |
364 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(disconnect_window->sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
365 gtk_box_pack_start(GTK_BOX(vbox), disconnect_window->sw, TRUE, TRUE, 0); | |
366 | |
367 list_store = gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); | |
368 gtk_list_store_append (list_store, &iter); | |
369 gtk_list_store_set(list_store, &iter, | |
370 0, scale, | |
371 1, gaim_account_get_username(gaim_connection_get_account(gc)), | |
372 2, gaim_date_full(), | |
373 3, label_text, | |
374 4, gaim_connection_get_account(gc), -1); | |
375 | |
376 disconnect_window->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(list_store)); | |
377 | |
378 rend = gtk_cell_renderer_pixbuf_new(); | |
379 rend2 = gtk_cell_renderer_text_new(); | |
380 col = gtk_tree_view_column_new(); | |
381 gtk_tree_view_column_set_title(col, _("Account")); | |
382 gtk_tree_view_column_pack_start(col, rend, FALSE); | |
383 gtk_tree_view_column_pack_start(col, rend2, FALSE); | |
384 gtk_tree_view_column_set_attributes(col, rend, "pixbuf", 0, NULL); | |
385 gtk_tree_view_column_set_attributes(col, rend2, "text", 1, NULL); | |
386 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); | |
387 | |
388 rend = gtk_cell_renderer_text_new(); | |
389 col = gtk_tree_view_column_new_with_attributes (_("Time"), | |
390 rend, "text", 2, NULL); | |
391 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); | |
392 | |
393 g_object_unref(G_OBJECT(list_store)); | |
394 gtk_container_add(GTK_CONTAINER(disconnect_window->sw), disconnect_window->treeview); | |
395 | |
396 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview)); | |
7409
2ea9bf5686ad
[gaim-migrate @ 8009]
Christian Hammond <chipx86@chipx86.com>
parents:
7407
diff
changeset
|
397 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96); |
7399 | 398 g_signal_connect (G_OBJECT (sel), "changed", |
399 G_CALLBACK (disconnect_tree_cb), list_store); | |
400 } else { | |
401 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview))); | |
402 gtk_list_store_append (list_store, &iter); | |
403 gtk_list_store_set(list_store, &iter, | |
404 0, scale, | |
405 1, gaim_account_get_username(gaim_connection_get_account(gc)), | |
406 2, gaim_date_full(), | |
407 3, label_text, | |
408 4, gaim_connection_get_account(gc), -1); | |
409 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); | |
410 gtk_widget_show_all(disconnect_window->sw); | |
411 } | |
412 g_free(label_text); | |
413 g_object_unref(G_OBJECT(icon)); | |
414 g_object_unref(G_OBJECT(scale)); | |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
415 } |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
416 |
5717 | 417 static GaimConnectionUiOps conn_ui_ops = |
418 { | |
419 gaim_gtk_connection_connect_progress, | |
420 gaim_gtk_connection_connected, | |
421 gaim_gtk_connection_disconnected, | |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
422 gaim_gtk_connection_notice, |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
423 gaim_gtk_connection_report_disconnect |
5717 | 424 }; |
425 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
426 GaimConnectionUiOps * |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
427 gaim_gtk_connections_get_ui_ops(void) |
5717 | 428 { |
429 return &conn_ui_ops; | |
430 } | |
431 | |
6216 | 432 void away_on_login(const char *mesg) |
5717 | 433 { |
434 GSList *awy = away_messages; | |
435 struct away_message *a, *message = NULL; | |
7098
770233dad86c
[gaim-migrate @ 7663]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
436 GaimGtkBuddyList *gtkblist; |
5717 | 437 |
438 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); | |
439 | |
440 if (!gtkblist->window) { | |
441 return; | |
442 } | |
443 | |
6216 | 444 if (mesg == NULL) |
445 mesg = gaim_prefs_get_string("/core/away/default_message"); | |
446 while (awy) { | |
447 a = (struct away_message *)awy->data; | |
448 if (strcmp(a->name, mesg) == 0) { | |
449 message = a; | |
450 break; | |
5717 | 451 } |
6216 | 452 awy = awy->next; |
5717 | 453 } |
6216 | 454 if (message == NULL) { |
455 if(!away_messages) | |
456 return; | |
457 message = away_messages->data; | |
458 } | |
459 do_away_message(NULL, message); | |
5717 | 460 } |