src/gtklog.c

Fri, 21 May 2004 14:33:32 +0000

author
Stu Tomlinson <nosnilmot@pidgin.im>
date
Fri, 21 May 2004 14:33:32 +0000
changeset 8999
dd434cfec86a
parent 8898
85f5615bc27e
child 9005
581097ebbeab
permissions
-rw-r--r--

[gaim-migrate @ 9774]
" This patch renames the existing received-*-msg signals
to receiving-*msg to fit the naming of other signals
where a pointer to the message is passed (writing,
sending, displaying)

It adds new received-*-msg signals which are emitted
after the receiving signals, in line with the other
conversation signals (wrote, sent, displayed)

This is necessary to allow plugins which depend on the
final received message to work alongside plugins which
may modify the message.

One known example of this is festival-gaim alongside
gaim-encryption - festival-gaim would try to "speak"
the encrypted text:
http://sf.net/tracker/?func=detail&aid=943216&group_id=89763&atid=591320

I've tested this with gaim-encryption and festival-gaim
(locally modified so gaim-encryption uses the receiving
signal and festival uses the received signal)

All in-tree users of received-*-msg are updated to use
receiving-*-msg if they do modify the message, the
conversation-signals documentation is updated, the
signals-test.c & signal-test.tcl plugins are also updated." --Stu Tomlinson

committer: Luke Schierer <lschiere@pidgin.im>

7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /**
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * @file gtklog.c GTK+ Log viewer
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 * @ingroup gtkui
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
4 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
5 * gaim
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
6 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7685
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7685
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7685
diff changeset
9 * source distribution.
7537
4c3be2f554b1 [gaim-migrate @ 8150]
Christian Hammond <chipx86@chipx86.com>
parents: 7535
diff changeset
10 *
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * (at your option) any later version.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * GNU General Public License for more details.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
24 */
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26 #include "gtkinternal.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
27
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
28 #include "account.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29 #include "util.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
30 #include "gtkblist.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
31 #include "gtkimhtml.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
32 #include "gtklog.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
33 #include "gtkutils.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
34 #include "log.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
35
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 static GHashTable *log_viewers = NULL;
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
37 static void populate_log_tree(GaimGtkLogViewer *lv);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
38 static GaimGtkLogViewer *syslog_viewer = NULL;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
40 struct log_viewer_hash_t {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
41 char *screenname;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42 GaimAccount *account;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
43 };
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
44
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
45 static guint log_viewer_hash(gconstpointer data)
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46 {
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
47 const struct log_viewer_hash_t *viewer = data;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
48 return g_str_hash(viewer->screenname) + g_str_hash(gaim_account_get_username(viewer->account));
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
49
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
50 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
52 static gint log_viewer_equal(gconstpointer y, gconstpointer z)
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 {
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
54 const struct log_viewer_hash_t *a, *b;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55 int ret;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
56 char *normal;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
57
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
58 a = y;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
59 b = z;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
60
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
61 normal = g_strdup(gaim_normalize(a->account, a->screenname));
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
62 ret = (a->account == b->account) &&
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
63 !strcmp(normal, gaim_normalize(b->account, b->screenname));
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 g_free(normal);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 return ret;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
68 static void search_cb(GtkWidget *button, GaimGtkLogViewer *lv)
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
69 {
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
70 const char *search_term = gtk_entry_get_text(GTK_ENTRY(lv->entry));
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
71 GList *logs;
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
72 GdkCursor *cursor = gdk_cursor_new(GDK_WATCH);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
73
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
74 if (lv->search)
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
75 g_free(lv->search);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
76
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
77 gtk_tree_store_clear(lv->treestore);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
78 if (strlen(search_term) == 0) {/* reset the tree */
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
79 populate_log_tree(lv);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
80 lv->search = NULL;
7537
4c3be2f554b1 [gaim-migrate @ 8150]
Christian Hammond <chipx86@chipx86.com>
parents: 7535
diff changeset
81 gtk_imhtml_search_clear(GTK_IMHTML(lv->imhtml));
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
82 return;
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
83 }
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
84
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
85 lv->search = g_strdup(search_term);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
86
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
87 gdk_window_set_cursor(lv->window->window, cursor);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
88 while (gtk_events_pending())
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
89 gtk_main_iteration();
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
90 gdk_cursor_unref(cursor);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
91
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
92 for (logs = lv->logs; logs != NULL; logs = logs->next) {
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
93 char *read = gaim_log_read((GaimLog*)logs->data, NULL);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
94 if (gaim_strcasestr(read, search_term)) {
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
95 GtkTreeIter iter;
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
96 GaimLog *log = logs->data;
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
97 char title[64];
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
98 char *title_utf8; /* temporary variable for utf8 conversion */
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
99 strftime(title, sizeof(title), "%c", localtime(&log->time));
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
100 title_utf8 = gaim_utf8_try_convert(title);
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
101 strncpy(title, title_utf8, sizeof(title));
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
102 g_free(title_utf8);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
103 gtk_tree_store_append (lv->treestore, &iter, NULL);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
104 gtk_tree_store_set(lv->treestore, &iter,
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
105 0, title,
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
106 1, log, -1);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
107 }
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
108 }
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
109
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
110
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
111 cursor = gdk_cursor_new(GDK_LEFT_PTR);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
112 gdk_window_set_cursor(lv->window->window, cursor);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
113 gdk_cursor_unref(cursor);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
114 }
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
115
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
116 static gboolean destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) {
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
117 GaimGtkLogViewer *lv = syslog_viewer;
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
118
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
119 if(ht != NULL){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
120 lv = g_hash_table_lookup(log_viewers, ht);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
121 g_hash_table_remove(log_viewers, ht);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
122 g_free(ht->screenname);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
123 g_free(ht);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
124 } else
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
125 syslog_viewer = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
126
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
127 while (lv->logs) {
7533
a2340496157f [gaim-migrate @ 8146]
Sean Egan <seanegan@pidgin.im>
parents: 7485
diff changeset
128 GaimLog *log = lv->logs->data;
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
129 GList *logs2;
7685
e43070343b86 [gaim-migrate @ 8329]
Ethan Blanton <elb@pidgin.im>
parents: 7676
diff changeset
130 gaim_log_free(log);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
131 logs2 = lv->logs->next;
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
132 g_list_free_1(lv->logs);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
133 lv->logs = logs2;
7533
a2340496157f [gaim-migrate @ 8146]
Sean Egan <seanegan@pidgin.im>
parents: 7485
diff changeset
134 }
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
135 if (lv->search)
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
136 g_free(lv->search);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
137 g_free(lv);
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
138 gtk_widget_destroy(w);
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
139
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
140 return TRUE;
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
141 }
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
142 #if 0
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
143 static gboolean destroy_syslog_cb(GtkWidget *w, gint resp, void *cb)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
144 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
145 while (syslog_viewer->logs) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
146 GaimLog *log = syslog_viewer->logs->data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
147 GList *logs2;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
148 gaim_log_free(log);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
149 logs2 = syslog_viewer->logs->next;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
150 g_list_free_1(syslog_viewer->logs);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
151 syslog_viewer->logs = logs2;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
152 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
153 if (syslog_viewer->search)
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
154 g_free(syslog_viewer->search);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
155 g_free(syslog_viewer);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
156 syslog_viewer = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
157 gtk_widget_destroy(w);
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
158
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
159 return TRUE;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
160 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
161 #endif
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
162 static void log_select_cb(GtkTreeSelection *sel, GaimGtkLogViewer *viewer) {
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
163 GtkTreeIter iter;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
164 GValue val = { 0, };
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
165 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
166 GaimLog *log = NULL;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
167 GaimLogReadFlags flags;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
168 char *read = NULL;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169 char time[64];
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
170
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
171 char *title;
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
172 char *title_utf8; /* temporary variable for utf8 conversion */
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
173
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
174 if (! gtk_tree_selection_get_selected (sel, &model, &iter))
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
175 return;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
176 gtk_tree_model_get_value (model, &iter, 1, &val);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
177 log = g_value_get_pointer(&val);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
178 g_value_unset(&val);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
179
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
180 if (!log)
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
181 return;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
182
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
183 read = gaim_log_read(log, &flags);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
184 viewer->flags = flags;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
185 strftime(time, sizeof(time), "%c", localtime(&log->time));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
186 title = g_strdup_printf("%s - %s", log->name, time);
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
187 title_utf8 = gaim_utf8_try_convert(title);
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
188 g_free(title);
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
189 title = title_utf8;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190 gtk_window_set_title(GTK_WINDOW(viewer->window), title);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
191 gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
192 gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
193 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL |
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
194 ((flags & GAIM_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0));
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
195
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
196 if (viewer->search)
7537
4c3be2f554b1 [gaim-migrate @ 8150]
Christian Hammond <chipx86@chipx86.com>
parents: 7535
diff changeset
197 gtk_imhtml_search_find(GTK_IMHTML(viewer->imhtml), viewer->search);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
198
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
199 g_free(read);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
200 g_free(title);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
201 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
202
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
203 /* I want to make this smarter, but haven't come up with a cool algorithm to do so, yet.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
204 * I want the tree to be divided into groups like "Today," "Yesterday," "Last week,"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
205 * "August," "2002," etc. based on how many conversation took place in each subdivision.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
206 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207 * For now, I'll just make it a flat list.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
208 */
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
209 static void populate_log_tree(GaimGtkLogViewer *lv)
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
210 /* Logs are made from trees in real life.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
211 This is a tree made from logs */
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
212 {
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
213 char title[64];
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
214 char *title_utf8; /* temporary variable for utf8 conversion */
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
215 GtkTreeIter iter;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
216 GList *logs = lv->logs;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
217 while (logs) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 GaimLog *log = logs->data;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 strftime(title, sizeof(title), "%c", localtime(&log->time));
7676
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
220 title_utf8 = gaim_utf8_try_convert(title);
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
221 strncpy(title, title_utf8, sizeof(title));
1013e51a1d94 [gaim-migrate @ 8320]
Ambrose Li <ambrose.li@gmail.com>
parents: 7537
diff changeset
222 g_free(title_utf8);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
223 gtk_tree_store_append (lv->treestore, &iter, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
224 gtk_tree_store_set(lv->treestore, &iter,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 0, title,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 1, log, -1);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227 logs = logs->next;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
229 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
230
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231 void gaim_gtk_log_show(const char *screenname, GaimAccount *account) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
232 /* if (log_viewers && g_hash_table */
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
233 GtkWidget *hbox, *vbox;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
234 GdkPixbuf *pixbuf, *scale;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
235 GtkCellRenderer *rend;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
236 GtkTreeViewColumn *col;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237 GaimGtkLogViewer *lv = NULL;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
238 GtkTreeSelection *sel;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
239 GtkWidget *icon, *label, *pane, *sw, *button;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
240 GList *logs;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
241 char *text;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7432
diff changeset
242 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1);
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7432
diff changeset
243
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
244 ht->screenname = g_strdup(screenname);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
245 ht->account = account;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
246
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
247 if (!log_viewers) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
248 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
249 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
250 gtk_window_present(GTK_WINDOW(lv->window));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251 return;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
252 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
253
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
254 lv = g_new0(GaimGtkLogViewer, 1);
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8577
diff changeset
255 lv->logs = logs = gaim_log_get_logs(GAIM_LOG_IM, screenname, account);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
256 g_hash_table_insert(log_viewers, ht, lv);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
257
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
258 /* Window ***********/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
259 lv->window = gtk_dialog_new_with_buttons(screenname, NULL, 0,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
260 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261 gtk_container_set_border_width (GTK_CONTAINER(lv->window), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
262 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
263 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(lv->window)->vbox), 0);
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
264 g_signal_connect(G_OBJECT(lv->window), "response",
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
265 G_CALLBACK(destroy_cb), ht);
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
266
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
267 hbox = gtk_hbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), hbox, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
270
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
271 /* Icon *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
272 pixbuf = create_prpl_icon(account);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
273 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
274 icon = gtk_image_new_from_pixbuf(scale);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
275 gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
276 g_object_unref(G_OBJECT(pixbuf));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
277 g_object_unref(G_OBJECT(scale));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
278
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
279 /* Label ************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
280 label = gtk_label_new(NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
281 text = g_strdup_printf("<span size='larger' weight='bold'>%s %s</span>",
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
282 _("Conversations with"), screenname);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283 gtk_label_set_markup(GTK_LABEL(label), text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
284 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
285 g_free(text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
286
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
287 /* Pane *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 pane = gtk_hpaned_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
289 gtk_container_set_border_width(GTK_CONTAINER(pane), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
290 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), pane, TRUE, TRUE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
291
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
292 /* List *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293 sw = gtk_scrolled_window_new (NULL, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
294 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
295 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 gtk_paned_add1(GTK_PANED(pane), sw);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
297 lv->treestore = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298 lv->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (lv->treestore));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299 rend = gtk_cell_renderer_text_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
300 col = gtk_tree_view_column_new_with_attributes ("time", rend, "markup", 0, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301 gtk_tree_view_append_column (GTK_TREE_VIEW(lv->treeview), col);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
302 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (lv->treeview), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
303 gtk_container_add (GTK_CONTAINER (sw), lv->treeview);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
304 populate_log_tree(lv);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
305
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
306 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
307 g_signal_connect (G_OBJECT (sel), "changed",
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
308 G_CALLBACK (log_select_cb),
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
309 lv);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
310
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
311 /* Viewer ************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
312 vbox = gtk_vbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313 gtk_paned_add2(GTK_PANED(pane), vbox);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
314 sw = gtk_scrolled_window_new(NULL, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
315 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
316 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
317 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
318 lv->imhtml = gtk_imhtml_new(NULL, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
319 gtk_container_add(GTK_CONTAINER(sw), lv->imhtml);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
320 gaim_setup_imhtml(lv->imhtml);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
321 gtk_widget_set_size_request(lv->imhtml, 320, 200);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
322
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
323 /* Search box **********/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
324 hbox = gtk_hbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
325 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326 lv->entry = gtk_entry_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
327 gtk_box_pack_start(GTK_BOX(hbox), lv->entry, TRUE, TRUE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
328 button = gtk_button_new_from_stock(GTK_STOCK_FIND);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
329 g_signal_connect (G_OBJECT (button), "pressed",
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
330 G_CALLBACK (search_cb),
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
331 lv);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
332 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8046
diff changeset
333 gaim_set_accessible_label (lv->treeview, label);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
334
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335 gtk_widget_show_all(lv->window);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
336 }
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
337
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
338 void gaim_gtk_syslog_show()
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
339 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
340 GtkWidget *hbox, *vbox;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
341 GtkCellRenderer *rend;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
342 GtkTreeViewColumn *col;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
343 GtkTreeSelection *sel;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
344 GtkWidget *label, *pane, *sw, *button;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
345 char *text;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
346 GList *accounts = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
347
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
348 if(syslog_viewer){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
349 gtk_window_present(GTK_WINDOW(syslog_viewer->window));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
350 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
351 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
352
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
353 syslog_viewer = g_new0(GaimGtkLogViewer, 1);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
354
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
355 for(accounts = gaim_accounts_get_all(); accounts != NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
356 accounts = accounts->next) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
357 GList *logs;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
358 GaimAccount *account = (GaimAccount *)accounts->data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
359 if(!gaim_find_prpl(gaim_account_get_protocol_id(account)))
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
360 continue;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
361
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
362 logs = gaim_log_get_system_logs(account);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
363 syslog_viewer->logs = g_list_concat(syslog_viewer->logs, logs);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
364 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
365 syslog_viewer->logs = g_list_sort(syslog_viewer->logs, gaim_log_compare);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
366
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
367 /* Window ***********/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
368 syslog_viewer->window = gtk_dialog_new_with_buttons(_("System Log"), NULL, 0,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
369 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
370 gtk_container_set_border_width (GTK_CONTAINER(syslog_viewer->window), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
371 gtk_dialog_set_has_separator(GTK_DIALOG(syslog_viewer->window), FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
372 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(syslog_viewer->window)->vbox), 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
373 g_signal_connect(G_OBJECT(syslog_viewer->window), "response",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
374 G_CALLBACK(destroy_cb), NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
375
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
376 hbox = gtk_hbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
377 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
378 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(syslog_viewer->window)->vbox), hbox,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
379 FALSE, FALSE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
380
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
381 /* Label ************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
382 label = gtk_label_new(NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
383 text = g_strdup_printf("<span size='larger' weight='bold'>%s</span>",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
384 _("System Log"));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
385 gtk_label_set_markup(GTK_LABEL(label), text);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
386 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
387 g_free(text);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
388
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
389 /* Pane *************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
390 pane = gtk_hpaned_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
391 gtk_container_set_border_width(GTK_CONTAINER(pane), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
392 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(syslog_viewer->window)->vbox), pane,
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
393 TRUE, TRUE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
394
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
395 /* List *************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
396 sw = gtk_scrolled_window_new (NULL, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
397 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
398 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
399 gtk_paned_add1(GTK_PANED(pane), sw);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
400 syslog_viewer->treestore = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
401 syslog_viewer->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (syslog_viewer->treestore));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
402 rend = gtk_cell_renderer_text_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
403 col = gtk_tree_view_column_new_with_attributes ("time", rend, "markup", 0, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
404 gtk_tree_view_append_column (GTK_TREE_VIEW(syslog_viewer->treeview), col);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
405 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (syslog_viewer->treeview), FALSE);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
406 gtk_container_add (GTK_CONTAINER (sw), syslog_viewer->treeview);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
407
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
408 gtk_widget_set_size_request(syslog_viewer->treeview, 170, 200);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
409 populate_log_tree(syslog_viewer);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
410
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
411 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (syslog_viewer->treeview));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
412 g_signal_connect (G_OBJECT (sel), "changed",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
413 G_CALLBACK (log_select_cb),
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
414 syslog_viewer);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
415
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
416 /* Viewer ************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
417 vbox = gtk_vbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
418 gtk_paned_add2(GTK_PANED(pane), vbox);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
419 sw = gtk_scrolled_window_new(NULL, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
420 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
421 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
422 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
423 syslog_viewer->imhtml = gtk_imhtml_new(NULL, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
424 gtk_container_add(GTK_CONTAINER(sw), syslog_viewer->imhtml);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
425 gaim_setup_imhtml(syslog_viewer->imhtml);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
426 gtk_widget_set_size_request(syslog_viewer->imhtml, 400, 200);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
427
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
428 /* Search box **********/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
429 hbox = gtk_hbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
430 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
431 syslog_viewer->entry = gtk_entry_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
432 gtk_box_pack_start(GTK_BOX(hbox), syslog_viewer->entry, TRUE, TRUE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
433 button = gtk_button_new_from_stock(GTK_STOCK_FIND);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
434 g_signal_connect (G_OBJECT (button), "pressed",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
435 G_CALLBACK (search_cb),
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
436 syslog_viewer);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
437 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
438
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
439 gtk_widget_show_all(syslog_viewer->window);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
440 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
441

mercurial