src/gtklog.c

Fri, 03 Dec 2004 04:02:10 +0000

author
Andrew Hart <arhart@users.sourceforge.net>
date
Fri, 03 Dec 2004 04:02:10 +0000
changeset 10311
2380cae46dbd
parent 10181
2425c3773266
child 10574
5abb2931b6ff
permissions
-rw-r--r--

[gaim-migrate @ 11505]
Hitting the enter key when you're cursor is in the alias field of the
Add Chat dialog now activates the dialogs default action.

Closes bug 1075200 and patch 1078079. Thanks to Andrew Hart for
taking a stab at this and wounding, but not killing. Killing is wrong!

committer: Mark Doliner <markdoliner@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 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9624
diff changeset
25 #include "internal.h"
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9624
diff changeset
26 #include "gtkgaim.h"
7432
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);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
73
7535
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);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
76
7535
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 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
84
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
85 lv->search = g_strdup(search_term);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
86
7535
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);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
91
7535
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,
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
106 1, log, -1);
7535
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 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
109
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
110
7535
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));
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
192 gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read,
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
193 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL |
7432
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);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
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 {
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
213 char month[30];
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
214 char title[64];
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
215 char prev_top_month[30];
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
216 char *utf8_tmp; /* temporary variable for utf8 conversion */
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
217 GtkTreeIter toplevel, child;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 GList *logs = lv->logs;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 while (logs) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220 GaimLog *log = logs->data;
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
221
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
222 strftime(month, sizeof(month), "%B %Y", localtime(&log->time));
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
223 strftime(title, sizeof(title), "%c", localtime(&log->time));
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
224
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
225 /* do utf8 conversions */
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
226 utf8_tmp = gaim_utf8_try_convert(month);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
227 strncpy(month, utf8_tmp, sizeof(month));
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
228 utf8_tmp = gaim_utf8_try_convert(title);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
229 strncpy(title, utf8_tmp, sizeof(title));
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
230 g_free(utf8_tmp);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
231
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
232 if (strncmp(month, prev_top_month, sizeof(month)) != 0) {
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
233 /* top level */
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
234 gtk_tree_store_append(lv->treestore, &toplevel, NULL);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
235 gtk_tree_store_set(lv->treestore, &toplevel, 0, month, 1, NULL, -1);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
236
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
237 /* sub */
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
238 gtk_tree_store_append(lv->treestore, &child, &toplevel);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
239 gtk_tree_store_set(lv->treestore, &child, 0, title, 1, log, -1);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
240
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
241 strncpy(prev_top_month, month, sizeof(prev_top_month));
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
242 } else {
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
243 gtk_tree_store_append(lv->treestore, &child, &toplevel);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
244 gtk_tree_store_set(lv->treestore, &child, 0, title, 1, log, -1);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
245 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
246
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
247 logs = logs->next;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
248 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
249 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
250
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9791
diff changeset
251 void gaim_gtk_log_show(GaimLogType type, const char *screenname, GaimAccount *account) {
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
252 /* if (log_viewers && g_hash_table */
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
253 GtkWidget *hbox, *vbox;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
254 GdkPixbuf *pixbuf, *scale;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
255 GtkCellRenderer *rend;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
256 GtkTreeViewColumn *col;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
257 GaimGtkLogViewer *lv = NULL;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
258 GtkTreeSelection *sel;
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
259 GtkWidget *icon, *label, *pane, *sw, *button, *frame;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
260 GList *logs;
9624
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
261 char *text ,*ttext;
7436
39ad170582d5 [gaim-migrate @ 8041]
Nathan Walp <nwalp@pidgin.im>
parents: 7432
diff changeset
262 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
263
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
264 ht->screenname = g_strdup(screenname);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
265 ht->account = account;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
266
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
267 if (!log_viewers) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
270 gtk_window_present(GTK_WINDOW(lv->window));
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
271 g_free(ht);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
272 return;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
273 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
274
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
275 lv = g_new0(GaimGtkLogViewer, 1);
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9791
diff changeset
276 lv->logs = logs = gaim_log_get_logs(type, screenname, account);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
277 g_hash_table_insert(log_viewers, ht, lv);
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 /* Window ***********/
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
280 lv->window = gtk_dialog_new_with_buttons(screenname, NULL, 0,
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
281 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
282 gtk_container_set_border_width (GTK_CONTAINER(lv->window), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
284 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(lv->window)->vbox), 0);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
285 g_signal_connect(G_OBJECT(lv->window), "response",
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
286 G_CALLBACK(destroy_cb), ht);
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
287
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 hbox = gtk_hbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
289 gtk_container_set_border_width(GTK_CONTAINER(hbox), 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), hbox, FALSE, FALSE, 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 /* Icon *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293 pixbuf = create_prpl_icon(account);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
294 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
295 icon = gtk_image_new_from_pixbuf(scale);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
297 g_object_unref(G_OBJECT(pixbuf));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298 g_object_unref(G_OBJECT(scale));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
300 /* Label ************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301 label = gtk_label_new(NULL);
9624
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
302
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
303 ttext = g_strdup_printf(_("Conversations with %s"), screenname);
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
304 text = g_strdup_printf("<span size='larger' weight='bold'>%s</span>",ttext);
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
305 g_free(ttext);
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
306
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
307 gtk_label_set_markup(GTK_LABEL(label), text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
308 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
309 g_free(text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
310
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
311 /* Pane *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
312 pane = gtk_hpaned_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313 gtk_container_set_border_width(GTK_CONTAINER(pane), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
314 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), pane, TRUE, TRUE, 0);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
315
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
316 /* List *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
317 sw = gtk_scrolled_window_new (NULL, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
318 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
319 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
320 gtk_paned_add1(GTK_PANED(pane), sw);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
321 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
322 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
323 rend = gtk_cell_renderer_text_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
324 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
325 gtk_tree_view_append_column (GTK_TREE_VIEW(lv->treeview), col);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (lv->treeview), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
327 gtk_container_add (GTK_CONTAINER (sw), lv->treeview);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
328 populate_log_tree(lv);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
329
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
330 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
331 g_signal_connect (G_OBJECT (sel), "changed",
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
332 G_CALLBACK (log_select_cb),
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
333 lv);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
334 gaim_set_accessible_label(lv->treeview, label);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
335
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
336 /* A fancy little box ************/
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
337 vbox = gtk_vbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
338 gtk_paned_add2(GTK_PANED(pane), vbox);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
339
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
340 /* Viewer ************/
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
341 frame = gaim_gtk_create_imhtml(FALSE, &lv->imhtml, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
342 gtk_widget_set_name(lv->imhtml, "gaim_gtklog_imhtml");
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
343 gtk_widget_set_size_request(lv->imhtml, 320, 200);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
344 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
345 gtk_widget_show(frame);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
346
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
347 /* Search box **********/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
348 hbox = gtk_hbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
349 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
350 lv->entry = gtk_entry_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
351 gtk_box_pack_start(GTK_BOX(hbox), lv->entry, TRUE, TRUE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
352 button = gtk_button_new_from_stock(GTK_STOCK_FIND);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
353 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
354 g_signal_connect(GTK_ENTRY(lv->entry), "activate", G_CALLBACK(search_cb), lv);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
355 g_signal_connect(GTK_BUTTON(button), "activate", G_CALLBACK(search_cb), lv);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
356 g_signal_connect(GTK_BUTTON(button), "clicked", G_CALLBACK(search_cb), lv);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
357
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
358 gtk_widget_show_all(lv->window);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
359 }
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
360
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
361 void gaim_gtk_syslog_show()
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
362 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
363 GtkWidget *hbox, *vbox;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
364 GtkCellRenderer *rend;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
365 GtkTreeViewColumn *col;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
366 GtkTreeSelection *sel;
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
367 GtkWidget *label, *pane, *sw, *button, *frame;
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
368 char *text;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
369 GList *accounts = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
370
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
371 if (syslog_viewer != NULL) {
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
372 gtk_window_present(GTK_WINDOW(syslog_viewer->window));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
373 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
374 }
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 syslog_viewer = g_new0(GaimGtkLogViewer, 1);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
377
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
378 for(accounts = gaim_accounts_get_all(); accounts != NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
379 accounts = accounts->next) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
380 GList *logs;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
381 GaimAccount *account = (GaimAccount *)accounts->data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
382 if(!gaim_find_prpl(gaim_account_get_protocol_id(account)))
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
383 continue;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
384
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
385 logs = gaim_log_get_system_logs(account);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
386 syslog_viewer->logs = g_list_concat(syslog_viewer->logs, logs);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
387 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
388 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
389
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
390 /* Window ***********/
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
391 syslog_viewer->window = gtk_dialog_new_with_buttons(_("System Log"), NULL, 0,
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
392 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
393 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
394 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
395 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(syslog_viewer->window)->vbox), 0);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
396 g_signal_connect(G_OBJECT(syslog_viewer->window), "response",
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
397 G_CALLBACK(destroy_cb), NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
398
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
399 hbox = gtk_hbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
400 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
401 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
402 FALSE, FALSE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
403
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
404 /* Label ************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
405 label = gtk_label_new(NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
406 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
407 _("System Log"));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
408 gtk_label_set_markup(GTK_LABEL(label), text);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
409 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
410 g_free(text);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
411
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
412 /* Pane *************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
413 pane = gtk_hpaned_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
414 gtk_container_set_border_width(GTK_CONTAINER(pane), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
415 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
416 TRUE, TRUE, 0);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
417
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
418 /* List *************/
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_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
421 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
422 gtk_paned_add1(GTK_PANED(pane), sw);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
423 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
424 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
425 rend = gtk_cell_renderer_text_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
426 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
427 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
428 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
429 gtk_container_add (GTK_CONTAINER (sw), syslog_viewer->treeview);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
430
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
431 gtk_widget_set_size_request(syslog_viewer->treeview, 170, 200);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
432 populate_log_tree(syslog_viewer);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
433
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
434 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
435 g_signal_connect (G_OBJECT (sel), "changed",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
436 G_CALLBACK (log_select_cb),
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
437 syslog_viewer);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
438
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
439 /* A fancy little box ************/
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
440 vbox = gtk_vbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
441 gtk_paned_add2(GTK_PANED(pane), vbox);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
442
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
443 /* Viewer ************/
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
444 frame = gaim_gtk_create_imhtml(FALSE, &syslog_viewer->imhtml, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
445 gtk_widget_set_name(syslog_viewer->imhtml, "gaim_gtklog_imhtml");
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
446 gtk_widget_set_size_request(syslog_viewer->imhtml, 400, 200);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
447 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
448 gtk_widget_show(frame);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
449
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
450 /* Search box **********/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
451 hbox = gtk_hbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
452 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
453 syslog_viewer->entry = gtk_entry_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
454 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
455 button = gtk_button_new_from_stock(GTK_STOCK_FIND);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
456 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
457 g_signal_connect(GTK_ENTRY(syslog_viewer->entry), "activate",
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
458 G_CALLBACK(search_cb), syslog_viewer);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
459 g_signal_connect(GTK_BUTTON(button), "activate",
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
460 G_CALLBACK(search_cb), syslog_viewer);
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
461 g_signal_connect(GTK_BUTTON(button), "clicked",
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
462 G_CALLBACK(search_cb), syslog_viewer);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
463
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
464 gtk_widget_show_all(syslog_viewer->window);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
465 }

mercurial