src/gtklog.c

Tue, 17 Aug 2004 02:52:13 +0000

author
Nathan Fredrickson <nathan@silverorange.com>
date
Tue, 17 Aug 2004 02:52:13 +0000
changeset 9770
d61fe8dcb6d9
parent 9624
0c5f5a2e971c
child 9791
f5c5bda0b96b
permissions
-rw-r--r--

[gaim-migrate @ 10638]
(22:52:45) noif: LSchiere: one last addition to my chat-info-defaults
patch... this removes the old defaulting mechanism which only jabber used
and accomplishes the same thing through the new defaulting mechanism. It
also changes the "Group" to "Room" for oscar chats to avoid having two
fields labelled "Group".

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 {
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;
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
221
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));
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
224
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);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
231
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);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
236
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);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
240
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 }
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
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
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251 void gaim_gtk_log_show(const char *screenname, GaimAccount *account) {
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;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
259 GtkWidget *icon, *label, *pane, *sw, *button;
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));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
271 return;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
272 }
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 lv = g_new0(GaimGtkLogViewer, 1);
8898
85f5615bc27e [gaim-migrate @ 9667]
Mark Doliner <markdoliner@pidgin.im>
parents: 8577
diff changeset
275 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
276 g_hash_table_insert(log_viewers, ht, lv);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
277
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
278 /* Window ***********/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
279 lv->window = gtk_dialog_new_with_buttons(screenname, NULL, 0,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
280 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
281 gtk_container_set_border_width (GTK_CONTAINER(lv->window), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
282 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283 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
284 g_signal_connect(G_OBJECT(lv->window), "response",
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
285 G_CALLBACK(destroy_cb), ht);
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
286
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
287 hbox = gtk_hbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
289 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
290
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
291 /* Icon *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
292 pixbuf = create_prpl_icon(account);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
294 icon = gtk_image_new_from_pixbuf(scale);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
295 gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 g_object_unref(G_OBJECT(pixbuf));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
297 g_object_unref(G_OBJECT(scale));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299 /* Label ************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
300 label = gtk_label_new(NULL);
9624
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
301
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
302 ttext = g_strdup_printf(_("Conversations with %s"), screenname);
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
303 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
304 g_free(ttext);
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
305
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
306 gtk_label_set_markup(GTK_LABEL(label), text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
307 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
308 g_free(text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
309
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
310 /* Pane *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
311 pane = gtk_hpaned_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
312 gtk_container_set_border_width(GTK_CONTAINER(pane), 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313 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
314
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
315 /* List *************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
316 sw = gtk_scrolled_window_new (NULL, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
317 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
318 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
319 gtk_paned_add1(GTK_PANED(pane), sw);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
320 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
321 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
322 rend = gtk_cell_renderer_text_new();
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
323 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
324 gtk_tree_view_append_column (GTK_TREE_VIEW(lv->treeview), col);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
325 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (lv->treeview), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326 gtk_container_add (GTK_CONTAINER (sw), lv->treeview);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
327 populate_log_tree(lv);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
328
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
329 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview));
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
330 g_signal_connect (G_OBJECT (sel), "changed",
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
331 G_CALLBACK (log_select_cb),
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
332 lv);
8577
64f25a17f8e4 [gaim-migrate @ 9326]
Nathan Walp <nwalp@pidgin.im>
parents: 8573
diff changeset
333
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
334 /* Viewer ************/
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335 vbox = gtk_vbox_new(FALSE, 6);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
336 gtk_paned_add2(GTK_PANED(pane), vbox);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
337 sw = gtk_scrolled_window_new(NULL, NULL);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
338 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
339 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
340 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
341 lv->imhtml = gtk_imhtml_new(NULL, 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_container_add(GTK_CONTAINER(sw), lv->imhtml);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
344 gaim_setup_imhtml(lv->imhtml);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
345 gtk_widget_set_size_request(lv->imhtml, 320, 200);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
346
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);
9010
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
352 g_signal_connect(GTK_ENTRY(lv->entry), "activate",
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
353 G_CALLBACK (search_cb), lv);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
354 button = gtk_button_new_from_stock(GTK_STOCK_FIND);
9010
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
355 g_signal_connect (GTK_BUTTON (button), "activate",
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
356 G_CALLBACK (search_cb), lv);
9192
a9b545eb6e4f [gaim-migrate @ 9987]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9010
diff changeset
357 g_signal_connect (GTK_BUTTON (button), "clicked",
a9b545eb6e4f [gaim-migrate @ 9987]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9010
diff changeset
358 G_CALLBACK (search_cb), lv);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
359 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8046
diff changeset
360 gaim_set_accessible_label (lv->treeview, label);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
361
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
362 gtk_widget_show_all(lv->window);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
363 }
8573
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 void gaim_gtk_syslog_show()
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 GtkWidget *hbox, *vbox;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
368 GtkCellRenderer *rend;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
369 GtkTreeViewColumn *col;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
370 GtkTreeSelection *sel;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
371 GtkWidget *label, *pane, *sw, *button;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
372 char *text;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
373 GList *accounts = NULL;
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 if(syslog_viewer){
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
376 gtk_window_present(GTK_WINDOW(syslog_viewer->window));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
377 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
378 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
379
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
380 syslog_viewer = g_new0(GaimGtkLogViewer, 1);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
381
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
382 for(accounts = gaim_accounts_get_all(); accounts != NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
383 accounts = accounts->next) {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
384 GList *logs;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
385 GaimAccount *account = (GaimAccount *)accounts->data;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
386 if(!gaim_find_prpl(gaim_account_get_protocol_id(account)))
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
387 continue;
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 logs = gaim_log_get_system_logs(account);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
390 syslog_viewer->logs = g_list_concat(syslog_viewer->logs, logs);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
391 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
392 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
393
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
394 /* Window ***********/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
395 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
396 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
397 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
398 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
399 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
400 g_signal_connect(G_OBJECT(syslog_viewer->window), "response",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
401 G_CALLBACK(destroy_cb), NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
402
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
403 hbox = gtk_hbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
404 gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
405 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
406 FALSE, FALSE, 0);
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 /* Label ************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
409 label = gtk_label_new(NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
410 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
411 _("System Log"));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
412 gtk_label_set_markup(GTK_LABEL(label), text);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
413 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
414 g_free(text);
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 /* Pane *************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
417 pane = gtk_hpaned_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
418 gtk_container_set_border_width(GTK_CONTAINER(pane), 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
419 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
420 TRUE, TRUE, 0);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
421
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
422 /* List *************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
423 sw = gtk_scrolled_window_new (NULL, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
424 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
425 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
426 gtk_paned_add1(GTK_PANED(pane), sw);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
427 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
428 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
429 rend = gtk_cell_renderer_text_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
430 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
431 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
432 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
433 gtk_container_add (GTK_CONTAINER (sw), syslog_viewer->treeview);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
434
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
435 gtk_widget_set_size_request(syslog_viewer->treeview, 170, 200);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
436 populate_log_tree(syslog_viewer);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
437
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
438 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
439 g_signal_connect (G_OBJECT (sel), "changed",
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
440 G_CALLBACK (log_select_cb),
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
441 syslog_viewer);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
442
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
443 /* Viewer ************/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
444 vbox = gtk_vbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
445 gtk_paned_add2(GTK_PANED(pane), vbox);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
446 sw = gtk_scrolled_window_new(NULL, NULL);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
447 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
448 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
449 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
450 syslog_viewer->imhtml = gtk_imhtml_new(NULL, NULL);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
451 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
452 gtk_container_add(GTK_CONTAINER(sw), syslog_viewer->imhtml);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
453 gaim_setup_imhtml(syslog_viewer->imhtml);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
454 gtk_widget_set_size_request(syslog_viewer->imhtml, 400, 200);
9005
581097ebbeab [gaim-migrate @ 9780]
Kevin Stange <kstange@pidgin.im>
parents: 8898
diff changeset
455
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
456 /* Search box **********/
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
457 hbox = gtk_hbox_new(FALSE, 6);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
458 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
459 syslog_viewer->entry = gtk_entry_new();
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
460 gtk_box_pack_start(GTK_BOX(hbox), syslog_viewer->entry, TRUE, TRUE, 0);
9010
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
461 g_signal_connect (GTK_ENTRY (syslog_viewer->entry), "activate",
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
462 G_CALLBACK (search_cb),
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
463 syslog_viewer);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
464 button = gtk_button_new_from_stock(GTK_STOCK_FIND);
9010
4ede1a09b994 [gaim-migrate @ 9786]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9005
diff changeset
465 g_signal_connect (GTK_BUTTON (button), "activate",
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
466 G_CALLBACK (search_cb),
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
467 syslog_viewer);
9192
a9b545eb6e4f [gaim-migrate @ 9987]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9010
diff changeset
468 g_signal_connect (GTK_BUTTON (button), "clicked",
a9b545eb6e4f [gaim-migrate @ 9987]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9010
diff changeset
469 G_CALLBACK (search_cb),
a9b545eb6e4f [gaim-migrate @ 9987]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9010
diff changeset
470 syslog_viewer);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
471 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
472
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
473 gtk_widget_show_all(syslog_viewer->window);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
474 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
475

mercurial