pidgin/gtklog.c

Fri, 03 Sep 2010 07:28:41 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 03 Sep 2010 07:28:41 +0000
changeset 30754
c03318c0df15
parent 29685
1507ce18860b
child 31321
1fef3832cfa2
child 32394
f883709bdba4
permissions
-rw-r--r--

merge of '6780237a96eeae80ce228502c6ab378052777367'
and '00b022749a3f398567ccbe083507f804b5d5f7d9'

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
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 15931
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* pidgin
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7685
diff changeset
9 * 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
10 * source distribution.
7537
4c3be2f554b1 [gaim-migrate @ 8150]
Christian Hammond <chipx86@chipx86.com>
parents: 7535
diff changeset
11 *
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * 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
14 * the Free Software Foundation; either version 2 of the License, or
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18743
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9624
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
27 #include "pidgin.h"
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
28
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29 #include "account.h"
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
30 #include "debug.h"
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
31 #include "log.h"
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
32 #include "notify.h"
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
33 #include "request.h"
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
34 #include "util.h"
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
35
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
36 #include "pidginstock.h"
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37 #include "gtkblist.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
38 #include "gtkimhtml.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39 #include "gtklog.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
40 #include "gtkutils.h"
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
41
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42 static GHashTable *log_viewers = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
43 static void populate_log_tree(PidginLogViewer *lv);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
44 static PidginLogViewer *syslog_viewer = NULL;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
45
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46 struct log_viewer_hash_t {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
47 PurpleLogType type;
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
48 char *buddyname;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
49 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
50 PurpleContact *contact;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51 };
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
52
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
53 static guint log_viewer_hash(gconstpointer data)
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
54 {
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
55 const struct log_viewer_hash_t *viewer = data;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
56
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
57 if (viewer->contact != NULL)
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
58 return g_direct_hash(viewer->contact);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
59
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
60 return g_str_hash(viewer->buddyname) +
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
61 g_str_hash(purple_account_get_username(viewer->account));
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
64 static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 {
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
66 const struct log_viewer_hash_t *a, *b;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 int ret;
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
68 char *normal;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
69
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
70 a = y;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
71 b = z;
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
72
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
73 if (a->contact != NULL) {
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
74 if (b->contact != NULL)
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
75 return (a->contact == b->contact);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
76 else
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
77 return FALSE;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
78 } else {
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
79 if (b->contact != NULL)
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
80 return FALSE;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
81 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
82
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
83 normal = g_strdup(purple_normalize(a->account, a->buddyname));
7440
e0d8f6bc36c2 [gaim-migrate @ 8045]
Nathan Walp <nwalp@pidgin.im>
parents: 7436
diff changeset
84 ret = (a->account == b->account) &&
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
85 !strcmp(normal, purple_normalize(b->account, b->buddyname));
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 g_free(normal);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
87
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88 return ret;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
89 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
91 static void select_first_log(PidginLogViewer *lv)
13569
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
92 {
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
93 GtkTreeModel *model;
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
94 GtkTreeIter iter, it;
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
95 GtkTreePath *path;
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
96
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
97 model = GTK_TREE_MODEL(lv->treestore);
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
98
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
99 if (!gtk_tree_model_get_iter_first(model, &iter))
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
100 return;
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
101
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
102 path = gtk_tree_model_get_path(model, &iter);
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
103 if (gtk_tree_model_iter_children(model, &it, &iter))
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
104 {
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
105 gtk_tree_view_expand_row(GTK_TREE_VIEW(lv->treeview), path, TRUE);
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
106 path = gtk_tree_model_get_path(model, &it);
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
107 }
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
108
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
109 gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview)), path);
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
110
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
111 gtk_tree_path_free(path);
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
112 }
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
113
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
114 static const char *log_get_date(PurpleLog *log)
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
115 {
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
116 if (log->tm)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
117 return purple_date_format_full(log->tm);
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
118 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
119 return purple_date_format_full(localtime(&log->time));
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
120 }
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
121
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
122 static void search_cb(GtkWidget *button, PidginLogViewer *lv)
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
123 {
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
124 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
125 GList *logs;
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
126
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 11869
diff changeset
127 if (!(*search_term)) {
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 11869
diff changeset
128 /* reset the tree */
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
129 gtk_tree_store_clear(lv->treestore);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
130 populate_log_tree(lv);
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
131 g_free(lv->search);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
132 lv->search = NULL;
7537
4c3be2f554b1 [gaim-migrate @ 8150]
Christian Hammond <chipx86@chipx86.com>
parents: 7535
diff changeset
133 gtk_imhtml_search_clear(GTK_IMHTML(lv->imhtml));
13569
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
134 select_first_log(lv);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
135 return;
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
136 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
137
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
138 if (lv->search != NULL && !strcmp(lv->search, search_term))
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
139 {
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
140 /* Searching for the same term acts as "Find Next" */
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
141 gtk_imhtml_search_find(GTK_IMHTML(lv->imhtml), lv->search);
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
142 return;
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
143 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
144
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
145 pidgin_set_cursor(lv->window, GDK_WATCH);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
146
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
147 g_free(lv->search);
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
148 lv->search = g_strdup(search_term);
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
149
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
150 gtk_tree_store_clear(lv->treestore);
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
151 gtk_imhtml_clear(GTK_IMHTML(lv->imhtml));
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
152
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
153 for (logs = lv->logs; logs != NULL; logs = logs->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
154 char *read = purple_log_read((PurpleLog*)logs->data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
155 if (read && *read && purple_strcasestr(read, search_term)) {
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
156 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
157 PurpleLog *log = logs->data;
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 11869
diff changeset
158
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
159 gtk_tree_store_append (lv->treestore, &iter, NULL);
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
160 gtk_tree_store_set(lv->treestore, &iter,
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
161 0, log_get_date(log),
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
162 1, log, -1);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
163 }
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10181
diff changeset
164 g_free(read);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
165 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
166
13569
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
167 select_first_log(lv);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
168 pidgin_clear_cursor(lv->window);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
169 }
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
170
15298
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
171 static void destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
172 PidginLogViewer *lv = syslog_viewer;
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
173
15298
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
174 #ifdef _WIN32
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
175 if (resp == GTK_RESPONSE_HELP) {
18743
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
176 GtkTreeSelection *sel;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
177 GtkTreeIter iter;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
178 GtkTreeModel *model;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
179 PurpleLog *log = NULL;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
180 char *logdir;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
181
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
182 if (ht != NULL)
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
183 lv = g_hash_table_lookup(log_viewers, ht);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
184 model = GTK_TREE_MODEL(lv->treestore);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
185
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
186 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview));
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
187 if (gtk_tree_selection_get_selected(sel, &model, &iter)) {
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
188 GValue val;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
189
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
190 val.g_type = 0;
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
191 gtk_tree_model_get_value (model, &iter, 1, &val);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
192 log = g_value_get_pointer(&val);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
193 g_value_unset(&val);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
194 }
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
195
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
196
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
197 if (log == NULL)
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
198 logdir = g_build_filename(purple_user_dir(), "logs", NULL);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
199 else
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
200 logdir = purple_log_get_log_dir(log->type, log->name, log->account);
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
201
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15568
diff changeset
202 winpidgin_shell_execute(logdir, "explore", NULL);
15298
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
203 g_free(logdir);
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
204 return;
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
205 }
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
206 #endif
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
207
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
208 if (ht != NULL) {
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
209 lv = g_hash_table_lookup(log_viewers, ht);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
210 g_hash_table_remove(log_viewers, ht);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
211
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
212 g_free(ht->buddyname);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
213 g_free(ht);
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
214 } else
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
215 syslog_viewer = NULL;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
216
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
217 purple_request_close_with_handle(lv);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
218
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
219 g_list_foreach(lv->logs, (GFunc)purple_log_free, NULL);
13569
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
220 g_list_free(lv->logs);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
221
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13569
diff changeset
222 g_free(lv->search);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13569
diff changeset
223 g_free(lv);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
224
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
225 gtk_widget_destroy(w);
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
226 }
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
227
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
228 static void log_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, PidginLogViewer *viewer) {
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
229 if (gtk_tree_view_row_expanded(tv, path))
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
230 gtk_tree_view_collapse_row(tv, path);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
231 else
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
232 gtk_tree_view_expand_row(tv, path, FALSE);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
233 }
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
234
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
235 static void delete_log_cleanup_cb(gpointer *data)
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
236 {
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
237 g_free(data[1]); /* iter */
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
238 g_free(data);
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
239 }
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
240
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
241 static void delete_log_cb(gpointer *data)
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
242 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
243 if (!purple_log_delete((PurpleLog *)data[2]))
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
244 {
22384
0a2c39b4a6b1 Mark some strings for translation
Mark Doliner <markdoliner@pidgin.im>
parents: 22237
diff changeset
245 purple_notify_error(NULL, NULL, _("Log Deletion Failed"),
0a2c39b4a6b1 Mark some strings for translation
Mark Doliner <markdoliner@pidgin.im>
parents: 22237
diff changeset
246 _("Check permissions and try again."));
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
247 }
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
248 else
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
249 {
15613
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
250 GtkTreeStore *treestore = data[0];
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
251 GtkTreeIter *iter = (GtkTreeIter *)data[1];
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
252 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), iter);
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
253 gboolean first = !gtk_tree_path_prev(path);
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
254
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
255 if (!gtk_tree_store_remove(treestore, iter) && first)
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
256 {
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
257 /* iter was the last child at its level */
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
258
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
259 if (gtk_tree_path_up(path))
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
260 {
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
261 gtk_tree_model_get_iter(GTK_TREE_MODEL(treestore), iter, path);
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
262 gtk_tree_store_remove(treestore, iter);
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
263 }
9a6ec23fe078 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@pidgin.im>
parents: 15612
diff changeset
264 }
29500
1e0464dad92b This should pretty much finish off the GTK_CHECK_VERSION calls in Pidgin.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25889
diff changeset
265
16293
2b8f5d509cc9 Fix Gtk+ 2.0 support
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16280
diff changeset
266 gtk_tree_path_free(path);
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
267 }
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
268
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
269 delete_log_cleanup_cb(data);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
270 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
271
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
272 static void log_delete_log_cb(GtkWidget *menuitem, gpointer *data)
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
273 {
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
274 PidginLogViewer *lv = data[0];
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
275 PurpleLog *log = data[1];
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
276 const char *time = log_get_date(log);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
277 const char *name;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
278 char *tmp;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
279 gpointer *data2;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
280
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
281 if (log->type == PURPLE_LOG_IM)
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
282 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
283 PurpleBuddy *buddy = purple_find_buddy(log->account, log->name);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
284 if (buddy != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
285 name = purple_buddy_get_contact_alias(buddy);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
286 else
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
287 name = log->name;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
288
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
289 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the "
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
290 "conversation with %s which started at %s?"), name, time);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
291 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
292 else if (log->type == PURPLE_LOG_CHAT)
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
293 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
294 PurpleChat *chat = purple_blist_find_chat(log->account, log->name);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
295 if (chat != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
296 name = purple_chat_get_name(chat);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
297 else
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
298 name = log->name;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
299
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
300 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the "
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
301 "conversation in %s which started at %s?"), name, time);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
302 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
303 else if (log->type == PURPLE_LOG_SYSTEM)
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
304 {
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
305 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the system log "
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
306 "which started at %s?"), time);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
307 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
308 else
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
309 g_return_if_reached();
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
310
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
311 /* The only way to free data in all cases is to tie it to the menuitem with
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
312 * g_object_set_data_full(). But, since we need to get some data down to
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
313 * delete_log_cb() to delete the log from the log viewer after the file is
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
314 * deleted, we have to allocate a new data array and make sure it gets freed
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
315 * either way. */
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
316 data2 = g_new(gpointer, 3);
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
317 data2[0] = lv->treestore;
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
318 data2[1] = data[3]; /* iter */
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
319 data2[2] = log;
22384
0a2c39b4a6b1 Mark some strings for translation
Mark Doliner <markdoliner@pidgin.im>
parents: 22237
diff changeset
320 purple_request_action(lv, NULL, _("Delete Log?"), tmp, 0,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
321 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
322 data2, 2,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
323 _("Delete"), delete_log_cb,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16478
diff changeset
324 _("Cancel"), delete_log_cleanup_cb);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
325 g_free(tmp);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
326 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
327
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
328 static void log_show_popup_menu(GtkWidget *treeview, GdkEventButton *event, gpointer *data)
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
329 {
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
330 GtkWidget *menu = gtk_menu_new();
22384
0a2c39b4a6b1 Mark some strings for translation
Mark Doliner <markdoliner@pidgin.im>
parents: 22237
diff changeset
331 GtkWidget *menuitem = gtk_menu_item_new_with_label(_("Delete Log..."));
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
332
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
333 if (!purple_log_is_deletable((PurpleLog *)data[1]))
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
334 gtk_widget_set_sensitive(menuitem, FALSE);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
335
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
336 g_signal_connect(menuitem, "activate", G_CALLBACK(log_delete_log_cb), data);
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
337 g_object_set_data_full(G_OBJECT(menuitem), "log-viewer-data", data, g_free);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
338 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
339 gtk_widget_show_all(menu);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
340
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
341 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, (GtkMenuPositionFunc)data[2], NULL,
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
342 (event != NULL) ? event->button : 0,
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
343 gdk_event_get_time((GdkEvent *)event));
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
344 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
345
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
346 static gboolean log_button_press_cb(GtkWidget *treeview, GdkEventButton *event, PidginLogViewer *lv)
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
347 {
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
348 if (event->type == GDK_BUTTON_PRESS && event->button == 3)
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
349 {
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
350 GtkTreePath *path;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
351 GtkTreeIter *iter;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
352 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
353 PurpleLog *log;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
354 gpointer *data;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
355
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
356 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), event->x, event->y, &path, NULL, NULL, NULL))
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
357 return FALSE;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
358 iter = g_new(GtkTreeIter, 1);
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
359 gtk_tree_model_get_iter(GTK_TREE_MODEL(lv->treestore), iter, path);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
360 val.g_type = 0;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
361 gtk_tree_model_get_value(GTK_TREE_MODEL(lv->treestore), iter, 1, &val);
22455
1e4f21a50bc6 Plug some leaks caused by GtkTreePaths not being freed.
Daniel Atallah <datallah@pidgin.im>
parents: 22384
diff changeset
362 gtk_tree_path_free(path);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
363
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
364 log = g_value_get_pointer(&val);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
365
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
366 if (log == NULL)
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
367 {
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
368 g_free(iter);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
369 return FALSE;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
370 }
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
371
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
372 data = g_new(gpointer, 4);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
373 data[0] = lv;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
374 data[1] = log;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
375 data[2] = NULL;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
376 data[3] = iter;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
377
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
378 log_show_popup_menu(treeview, event, data);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
379 return TRUE;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
380 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
381
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
382 return FALSE;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
383 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
384
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
385 static gboolean log_popup_menu_cb(GtkWidget *treeview, PidginLogViewer *lv)
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
386 {
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
387 GtkTreeSelection *sel;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
388 GtkTreeIter *iter;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
389 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
390 PurpleLog *log;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
391 gpointer *data;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
392
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
393 iter = g_new(GtkTreeIter, 1);
18743
58a367fa661a Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@pidgin.im>
parents: 16490
diff changeset
394 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview));
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
395 if (!gtk_tree_selection_get_selected(sel, NULL, iter))
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
396 {
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
397 return FALSE;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
398 }
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
399
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
400 val.g_type = 0;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
401 gtk_tree_model_get_value(GTK_TREE_MODEL(lv->treestore),
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
402 iter, NODE_COLUMN, &val);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
403
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
404 log = g_value_get_pointer(&val);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
405
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
406 if (log == NULL)
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
407 return FALSE;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
408
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
409 data = g_new(gpointer, 4);
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
410 data[0] = lv;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
411 data[1] = log;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
412 data[2] = pidgin_treeview_popup_menu_position_func;
15612
5de26d19e4e5 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@pidgin.im>
parents: 15586
diff changeset
413 data[3] = iter;
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
414
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
415 log_show_popup_menu(treeview, NULL, data);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
416 return TRUE;
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
417 }
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
418
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
419 static gboolean search_find_cb(gpointer data)
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
420 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
421 PidginLogViewer *viewer = data;
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
422 gtk_imhtml_search_find(GTK_IMHTML(viewer->imhtml), viewer->search);
29045
bbafcef9ffbb *** Plucked rev b0c392df480480c0a511e96fc7b2eb7f827e6efb (bcc0147bab874ca52c55ad4900545e17528bf8fd):
Daniel Atallah <datallah@pidgin.im>
parents: 25889
diff changeset
423 g_object_steal_data(G_OBJECT(viewer->entry), "search-find-cb");
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
424 return FALSE;
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
425 }
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
426
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
427 static void log_select_cb(GtkTreeSelection *sel, PidginLogViewer *viewer) {
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
428 GtkTreeIter iter;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12232
diff changeset
429 GValue val;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
430 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
431 PurpleLog *log = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
432 PurpleLogReadFlags flags;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
433 char *read = NULL;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
434
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
435 if (!gtk_tree_selection_get_selected(sel, &model, &iter))
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
436 return;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12232
diff changeset
437
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12232
diff changeset
438 val.g_type = 0;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
439 gtk_tree_model_get_value (model, &iter, 1, &val);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
440 log = g_value_get_pointer(&val);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
441 g_value_unset(&val);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
442
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
443 if (log == NULL)
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
444 return;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
445
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
446 pidgin_set_cursor(viewer->window, GDK_WATCH);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 11869
diff changeset
447
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
448 if (log->type != PURPLE_LOG_SYSTEM) {
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
449 char *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
450 if (log->type == PURPLE_LOG_CHAT)
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
451 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation in %s on %s</span>"),
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
452 log->name, log_get_date(log));
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
453 else
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
454 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation with %s on %s</span>"),
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
455 log->name, log_get_date(log));
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
456
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
457 gtk_label_set_markup(GTK_LABEL(viewer->label), title);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
458 g_free(title);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
459 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
460
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
461 read = purple_log_read(log, &flags);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
462 viewer->flags = flags;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
463
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
464 gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml));
10645
f00e65bebc8b [gaim-migrate @ 12157]
Richard Laager <rlaager@pidgin.im>
parents: 10636
diff changeset
465 gtk_imhtml_set_protocol_name(GTK_IMHTML(viewer->imhtml),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
466 purple_account_get_protocol_name(log->account));
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
467
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
468 purple_signal_emit(pidgin_log_get_handle(), "log-displaying", viewer, log);
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
469
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10181
diff changeset
470 gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read,
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
471 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL |
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
472 ((flags & PURPLE_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0));
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 11869
diff changeset
473 g_free(read);
7535
eff069bf9f27 [gaim-migrate @ 8148]
Sean Egan <seanegan@pidgin.im>
parents: 7533
diff changeset
474
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
475 if (viewer->search != NULL) {
29045
bbafcef9ffbb *** Plucked rev b0c392df480480c0a511e96fc7b2eb7f827e6efb (bcc0147bab874ca52c55ad4900545e17528bf8fd):
Daniel Atallah <datallah@pidgin.im>
parents: 25889
diff changeset
476 guint source;
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10181
diff changeset
477 gtk_imhtml_search_clear(GTK_IMHTML(viewer->imhtml));
29045
bbafcef9ffbb *** Plucked rev b0c392df480480c0a511e96fc7b2eb7f827e6efb (bcc0147bab874ca52c55ad4900545e17528bf8fd):
Daniel Atallah <datallah@pidgin.im>
parents: 25889
diff changeset
478 source = g_idle_add(search_find_cb, viewer);
bbafcef9ffbb *** Plucked rev b0c392df480480c0a511e96fc7b2eb7f827e6efb (bcc0147bab874ca52c55ad4900545e17528bf8fd):
Daniel Atallah <datallah@pidgin.im>
parents: 25889
diff changeset
479 g_object_set_data_full(G_OBJECT(viewer->entry), "search-find-cb",
bbafcef9ffbb *** Plucked rev b0c392df480480c0a511e96fc7b2eb7f827e6efb (bcc0147bab874ca52c55ad4900545e17528bf8fd):
Daniel Atallah <datallah@pidgin.im>
parents: 25889
diff changeset
480 GINT_TO_POINTER(source), (GDestroyNotify)g_source_remove);
10574
5abb2931b6ff [gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10181
diff changeset
481 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
482
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
483 pidgin_clear_cursor(viewer->window);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
484 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
485
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
486 /* 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
487 * 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
488 * "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
489 *
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
490 * For now, I'll just make it a flat list.
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
491 */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
492 static void populate_log_tree(PidginLogViewer *lv)
11585
e194ce8dcf6f [gaim-migrate @ 13855]
Nathan Walp <nwalp@pidgin.im>
parents: 11402
diff changeset
493 /* Logs are made from trees in real life.
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
494 This is a tree made from logs */
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
495 {
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
496 const char *month;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
497 char prev_top_month[30] = "";
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
498 GtkTreeIter toplevel, child;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
499 GList *logs = lv->logs;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
500
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
501 while (logs != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
502 PurpleLog *log = logs->data;
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
503
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
504 month = purple_utf8_strftime(_("%B %Y"),
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 13105
diff changeset
505 log->tm ? log->tm : localtime(&log->time));
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
506
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
507 if (strcmp(month, prev_top_month) != 0)
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
508 {
9435
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
509 /* top level */
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
510 gtk_tree_store_append(lv->treestore, &toplevel, NULL);
b17d52fece0f [gaim-migrate @ 10256]
Cole Kowalski
parents: 9192
diff changeset
511 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
512
10680
e4a00ce2fc35 [gaim-migrate @ 12226]
Richard Laager <rlaager@pidgin.im>
parents: 10669
diff changeset
513 strncpy(prev_top_month, month, sizeof(prev_top_month));
e4a00ce2fc35 [gaim-migrate @ 12226]
Richard Laager <rlaager@pidgin.im>
parents: 10669
diff changeset
514 }
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
515
10680
e4a00ce2fc35 [gaim-migrate @ 12226]
Richard Laager <rlaager@pidgin.im>
parents: 10669
diff changeset
516 /* sub */
e4a00ce2fc35 [gaim-migrate @ 12226]
Richard Laager <rlaager@pidgin.im>
parents: 10669
diff changeset
517 gtk_tree_store_append(lv->treestore, &child, &toplevel);
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
518 gtk_tree_store_set(lv->treestore, &child,
15060
a5d9fafd2b8c [gaim-migrate @ 17777]
Richard Laager <rlaager@pidgin.im>
parents: 14861
diff changeset
519 0, log_get_date(log),
13105
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
520 1, log,
8f9c66e4af87 [gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
521 -1);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
522
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
523 logs = logs->next;
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
524 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
525 }
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
526
21214
db28e29a4990 Reverted changes from ef7ac46f90a801547f7dfc4295927a956f90e869 to
Richard Laager <rlaager@pidgin.im>
parents: 21172
diff changeset
527 static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *logs,
15639
4d29fa62453d Use person icon for Person log viewer
Sean Egan <seanegan@pidgin.im>
parents: 15613
diff changeset
528 const char *title, GtkWidget *icon, int log_size)
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
529 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
530 PidginLogViewer *lv;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
531 GtkWidget *title_box;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
532 char *text;
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
533 GtkWidget *pane;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
534 GtkWidget *sw;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
535 GtkCellRenderer *rend;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
536 GtkTreeViewColumn *col;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
537 GtkTreeSelection *sel;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
538 GtkWidget *vbox;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
539 GtkWidget *frame;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
540 GtkWidget *hbox;
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
541 GtkWidget *find_button;
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
542 GtkWidget *size_label;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
543
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
544 if (logs == NULL)
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
545 {
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
546 /* No logs were found. */
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
547 const char *log_preferences = NULL;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
548
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
549 if (ht == NULL) {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16293
diff changeset
550 if (!purple_prefs_get_bool("/purple/logging/log_system"))
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
551 log_preferences = _("System events will only be logged if the \"Log all status changes to system log\" preference is enabled.");
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
552 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
553 if (ht->type == PURPLE_LOG_IM) {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16293
diff changeset
554 if (!purple_prefs_get_bool("/purple/logging/log_ims"))
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
555 log_preferences = _("Instant messages will only be logged if the \"Log all instant messages\" preference is enabled.");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
556 } else if (ht->type == PURPLE_LOG_CHAT) {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16293
diff changeset
557 if (!purple_prefs_get_bool("/purple/logging/log_chats"))
11869
e77f2f29b09d [gaim-migrate @ 14160]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11780
diff changeset
558 log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
559 }
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
560 g_free(ht->buddyname);
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
561 g_free(ht);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
562 }
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
563
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
564 if(icon != NULL)
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
565 gtk_widget_destroy(icon);
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
566
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
567 purple_notify_info(NULL, title, _("No logs were found"), log_preferences);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
568 return NULL;
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
569 }
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
570
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
571 lv = g_new0(PidginLogViewer, 1);
13569
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
572 lv->logs = logs;
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
573
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
574 if (ht != NULL)
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
575 g_hash_table_insert(log_viewers, ht, lv);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
576
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
577 /* Window ***********/
21214
db28e29a4990 Reverted changes from ef7ac46f90a801547f7dfc4295927a956f90e869 to
Richard Laager <rlaager@pidgin.im>
parents: 21172
diff changeset
578 lv->window = gtk_dialog_new_with_buttons(title, NULL, 0,
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
579 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
15298
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
580 #ifdef _WIN32
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
581 /* Steal the "HELP" response and use it to trigger browsing to the logs folder */
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
582 gtk_dialog_add_button(GTK_DIALOG(lv->window), _("_Browse logs folder"), GTK_RESPONSE_HELP);
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
583 #endif
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15656
diff changeset
584 gtk_container_set_border_width (GTK_CONTAINER(lv->window), PIDGIN_HIG_BOX_SPACE);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
585 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
586 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
587 g_signal_connect(G_OBJECT(lv->window), "response",
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
588 G_CALLBACK(destroy_cb), ht);
11004
2323998d6cb9 [gaim-migrate @ 12859]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 10884
diff changeset
589 gtk_window_set_role(GTK_WINDOW(lv->window), "log_viewer");
7454
c99a2070471e [gaim-migrate @ 8067]
Mark Doliner <markdoliner@pidgin.im>
parents: 7440
diff changeset
590
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
591 /* Icon *************/
15639
4d29fa62453d Use person icon for Person log viewer
Sean Egan <seanegan@pidgin.im>
parents: 15613
diff changeset
592 if (icon != NULL) {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15656
diff changeset
593 title_box = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15656
diff changeset
594 gtk_container_set_border_width(GTK_CONTAINER(title_box), PIDGIN_HIG_BOX_SPACE);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
595 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), title_box, FALSE, FALSE, 0);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
596
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
597 gtk_box_pack_start(GTK_BOX(title_box), icon, FALSE, FALSE, 0);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
598 } else
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
599 title_box = GTK_DIALOG(lv->window)->vbox;
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
600
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
601 /* Label ************/
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
602 lv->label = gtk_label_new(NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
603
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
604 text = g_strdup_printf("<span size='larger' weight='bold'>%s</span>", title);
9624
0c5f5a2e971c [gaim-migrate @ 10468]
Sean Egan <seanegan@pidgin.im>
parents: 9435
diff changeset
605
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
606 gtk_label_set_markup(GTK_LABEL(lv->label), text);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
607 gtk_misc_set_alignment(GTK_MISC(lv->label), 0, 0);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
608 gtk_box_pack_start(GTK_BOX(title_box), lv->label, FALSE, FALSE, 0);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
609 g_free(text);
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
610
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
611 /* Pane *************/
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
612 pane = gtk_hpaned_new();
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15656
diff changeset
613 gtk_container_set_border_width(GTK_CONTAINER(pane), PIDGIN_HIG_BOX_SPACE);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
614 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), pane, TRUE, TRUE, 0);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
615
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
616 /* List *************/
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
617 sw = gtk_scrolled_window_new (NULL, NULL);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
618 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
619 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
620 gtk_paned_add1(GTK_PANED(pane), sw);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
621 lv->treestore = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
622 lv->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (lv->treestore));
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21352
diff changeset
623 g_object_unref(G_OBJECT(lv->treestore));
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
624 rend = gtk_cell_renderer_text_new();
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
625 col = gtk_tree_view_column_new_with_attributes ("time", rend, "markup", 0, NULL);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
626 gtk_tree_view_append_column (GTK_TREE_VIEW(lv->treeview), col);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
627 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (lv->treeview), FALSE);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
628 gtk_container_add (GTK_CONTAINER (sw), lv->treeview);
11402
1be90c47f022 [gaim-migrate @ 13637]
Peter McCurdy <cpirate@users.sourceforge.net>
parents: 11243
diff changeset
629
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
630 populate_log_tree(lv);
11402
1be90c47f022 [gaim-migrate @ 13637]
Peter McCurdy <cpirate@users.sourceforge.net>
parents: 11243
diff changeset
631
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
632 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview));
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
633 g_signal_connect (G_OBJECT (sel), "changed",
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
634 G_CALLBACK (log_select_cb),
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
635 lv);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
636 g_signal_connect (G_OBJECT(lv->treeview), "row-activated",
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
637 G_CALLBACK(log_row_activated_cb),
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
638 lv);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
639 pidgin_set_accessible_label(lv->treeview, lv->label);
11585
e194ce8dcf6f [gaim-migrate @ 13855]
Nathan Walp <nwalp@pidgin.im>
parents: 11402
diff changeset
640
15586
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
641 g_signal_connect(lv->treeview, "button-press-event", G_CALLBACK(log_button_press_cb), lv);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
642 g_signal_connect(lv->treeview, "popup-menu", G_CALLBACK(log_popup_menu_cb), lv);
b03db9cb6cac Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@pidgin.im>
parents: 15578
diff changeset
643
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
644 /* Log size ************/
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
645 if(log_size) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
646 char *sz_txt = purple_str_size_to_units(log_size);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
647 text = g_strdup_printf("<span weight='bold'>%s</span> %s", _("Total log size:"), sz_txt);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
648 size_label = gtk_label_new(NULL);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
649 gtk_label_set_markup(GTK_LABEL(size_label), text);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
650 /* gtk_paned_add1(GTK_PANED(pane), size_label); */
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
651 gtk_misc_set_alignment(GTK_MISC(size_label), 0, 0);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
652 gtk_box_pack_end(GTK_BOX(GTK_DIALOG(lv->window)->vbox), size_label, FALSE, FALSE, 0);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
653 g_free(sz_txt);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
654 g_free(text);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
655 }
11402
1be90c47f022 [gaim-migrate @ 13637]
Peter McCurdy <cpirate@users.sourceforge.net>
parents: 11243
diff changeset
656
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
657 /* A fancy little box ************/
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15656
diff changeset
658 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
659 gtk_paned_add2(GTK_PANED(pane), vbox);
11402
1be90c47f022 [gaim-migrate @ 13637]
Peter McCurdy <cpirate@users.sourceforge.net>
parents: 11243
diff changeset
660
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
661 /* Viewer ************/
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
662 frame = pidgin_create_imhtml(FALSE, &lv->imhtml, NULL, NULL);
16259
73b7c796c8d3 I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@pidgin.im>
parents: 16254
diff changeset
663 gtk_widget_set_name(lv->imhtml, "pidgin_log_imhtml");
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
664 gtk_widget_set_size_request(lv->imhtml, 320, 200);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
665 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
666 gtk_widget_show(frame);
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
667
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
668 /* Search box **********/
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15656
diff changeset
669 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
670 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
671 lv->entry = gtk_entry_new();
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
672 gtk_box_pack_start(GTK_BOX(hbox), lv->entry, TRUE, TRUE, 0);
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
673 find_button = gtk_button_new_from_stock(GTK_STOCK_FIND);
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
674 gtk_box_pack_start(GTK_BOX(hbox), find_button, FALSE, FALSE, 0);
11769
66e922bf0ebd [gaim-migrate @ 14060]
Mark Doliner <markdoliner@pidgin.im>
parents: 11703
diff changeset
675 g_signal_connect(GTK_ENTRY(lv->entry), "activate", G_CALLBACK(search_cb), lv);
14400
953baf2eba1a [gaim-migrate @ 17035]
Richard Laager <rlaager@pidgin.im>
parents: 14253
diff changeset
676 g_signal_connect(GTK_BUTTON(find_button), "clicked", G_CALLBACK(search_cb), lv);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
677
13569
4f0396bc59fc [gaim-migrate @ 15947]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13435
diff changeset
678 select_first_log(lv);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
679
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
680 gtk_widget_show_all(lv->window);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
681
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
682 return lv;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
683 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
684
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
685 void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account) {
15298
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
686 struct log_viewer_hash_t *ht;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
687 PidginLogViewer *lv = NULL;
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
688 const char *name = buddyname;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
689 char *title;
20229
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
690 GdkPixbuf *prpl_icon;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
691
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
692 g_return_if_fail(account != NULL);
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
693 g_return_if_fail(buddyname != NULL);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
694
15298
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
695 ht = g_new0(struct log_viewer_hash_t, 1);
e192226f7804 [gaim-migrate @ 18026]
Daniel Atallah <datallah@pidgin.im>
parents: 15060
diff changeset
696
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
697 ht->type = type;
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
698 ht->buddyname = g_strdup(buddyname);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
699 ht->account = account;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
700
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
701 if (log_viewers == NULL) {
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
702 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
703 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
704 gtk_window_present(GTK_WINDOW(lv->window));
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
705 g_free(ht->buddyname);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
706 g_free(ht);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
707 return;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
708 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
709
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
710 if (type == PURPLE_LOG_CHAT) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
711 PurpleChat *chat;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
712
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
713 chat = purple_blist_find_chat(account, buddyname);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
714 if (chat != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
715 name = purple_chat_get_name(chat);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
716
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
717 title = g_strdup_printf(_("Conversations in %s"), name);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
718 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
719 PurpleBuddy *buddy;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
720
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
721 buddy = purple_find_buddy(account, buddyname);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
722 if (buddy != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
723 name = purple_buddy_get_contact_alias(buddy);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
724
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
725 title = g_strdup_printf(_("Conversations with %s"), name);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
726 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
727
20229
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
728 prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
729
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
730 display_log_viewer(ht, purple_log_get_logs(type, buddyname, account),
20229
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
731 title, gtk_image_new_from_pixbuf(prpl_icon),
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 24964
diff changeset
732 purple_log_get_total_size(type, buddyname, account));
20229
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
733
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
734 if (prpl_icon)
0c823e1a389d applied changes from 1e697229b1c9a564fa1e509cc9a4a83da6e664df
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
735 g_object_unref(prpl_icon);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
736 g_free(title);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
737 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
738
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
739 void pidgin_log_show_contact(PurpleContact *contact) {
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
740 struct log_viewer_hash_t *ht;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
741 PurpleBlistNode *child;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
742 PidginLogViewer *lv = NULL;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
743 GList *logs = NULL;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
744 GdkPixbuf *pixbuf;
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
745 GtkWidget *image;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
746 const char *name = NULL;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
747 char *title;
11585
e194ce8dcf6f [gaim-migrate @ 13855]
Nathan Walp <nwalp@pidgin.im>
parents: 11402
diff changeset
748 int total_log_size = 0;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
749
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
750 g_return_if_fail(contact != NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
751
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
752 ht = g_new0(struct log_viewer_hash_t, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
753 ht->type = PURPLE_LOG_IM;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
754 ht->contact = contact;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
755
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
756 if (log_viewers == NULL) {
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
757 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
758 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
759 gtk_window_present(GTK_WINDOW(lv->window));
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
760 g_free(ht);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
761 return;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
762 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
763
24959
346d2e79e719 Fix one struct hiding issue.
Richard Laager <rlaager@pidgin.im>
parents: 22455
diff changeset
764 for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact) ;
346d2e79e719 Fix one struct hiding issue.
Richard Laager <rlaager@pidgin.im>
parents: 22455
diff changeset
765 child != NULL ;
346d2e79e719 Fix one struct hiding issue.
Richard Laager <rlaager@pidgin.im>
parents: 22455
diff changeset
766 child = purple_blist_node_get_sibling_next(child)) {
24964
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
767 const char *buddy_name;
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
768 PurpleAccount *account;
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
769
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
770 if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
771 continue;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
772
24964
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
773 buddy_name = purple_buddy_get_name((PurpleBuddy *)child);
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
774 account = purple_buddy_get_account((PurpleBuddy *)child);
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
775 logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, buddy_name, account), logs);
ce4a5049a69f Another small struct hiding change.
Richard Laager <rlaager@pidgin.im>
parents: 24959
diff changeset
776 total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, buddy_name, account);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
777 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
778 logs = g_list_sort(logs, purple_log_compare);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
779
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
780 image = gtk_image_new();
16280
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
781 pixbuf = gtk_widget_render_icon(image, PIDGIN_STOCK_STATUS_PERSON,
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
782 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL), "GtkWindow");
22237
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
783 if (pixbuf) {
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
784 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
785 g_object_unref(pixbuf);
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
786 } else {
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
787 gtk_widget_destroy(image);
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
788 image = NULL;
8865b5d78095 Some more little leak fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22214
diff changeset
789 }
16280
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
790
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
791 if (contact->alias != NULL)
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
792 name = contact->alias;
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
793 else if (contact->priority != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
794 name = purple_buddy_get_contact_alias(contact->priority);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
795
16280
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
796 /* This will happen if the contact doesn't have an alias,
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
797 * and none of the contact's buddies are online.
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
798 * There is probably a better way to deal with this. */
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
799 if (name == NULL) {
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
800 if (contact->node.child != NULL && PURPLE_BLIST_NODE_IS_BUDDY(contact->node.child))
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
801 name = purple_buddy_get_contact_alias((PurpleBuddy *) contact->node.child);
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
802 if (name == NULL)
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
803 name = "";
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
804 }
f1174892ed45 Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <datallah@pidgin.im>
parents: 16259
diff changeset
805
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
806 title = g_strdup_printf(_("Conversations with %s"), name);
21214
db28e29a4990 Reverted changes from ef7ac46f90a801547f7dfc4295927a956f90e869 to
Richard Laager <rlaager@pidgin.im>
parents: 21172
diff changeset
807 display_log_viewer(ht, logs, title, image, total_log_size);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
808 g_free(title);
7432
d95b7d2b2716 [gaim-migrate @ 8037]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
809 }
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
810
21214
db28e29a4990 Reverted changes from ef7ac46f90a801547f7dfc4295927a956f90e869 to
Richard Laager <rlaager@pidgin.im>
parents: 21172
diff changeset
811 void pidgin_syslog_show()
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
812 {
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
813 GList *accounts = NULL;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10645
diff changeset
814 GList *logs = NULL;
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
815
10181
2425c3773266 [gaim-migrate @ 11296]
Mark Doliner <markdoliner@pidgin.im>
parents: 10175
diff changeset
816 if (syslog_viewer != NULL) {
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
817 gtk_window_present(GTK_WINDOW(syslog_viewer->window));
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
818 return;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
819 }
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
820
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
821 for(accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
822
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
823 PurpleAccount *account = (PurpleAccount *)accounts->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
824 if(purple_find_prpl(purple_account_get_protocol_id(account)) == NULL)
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
825 continue;
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
826
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
827 logs = g_list_concat(purple_log_get_system_logs(account), logs);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
828 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
829 logs = g_list_sort(logs, purple_log_compare);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
830
21214
db28e29a4990 Reverted changes from ef7ac46f90a801547f7dfc4295927a956f90e869 to
Richard Laager <rlaager@pidgin.im>
parents: 21172
diff changeset
831 syslog_viewer = display_log_viewer(NULL, logs, _("System Log"), NULL, 0);
8573
3f37bd7005c8 [gaim-migrate @ 9321]
Ka-Hing Cheung <khc@pidgin.im>
parents: 8137
diff changeset
832 }
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
833
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
834 /****************************************************************************
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
835 * GTK+ LOG SUBSYSTEM *******************************************************
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
836 ****************************************************************************/
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
837
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
838 void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
839 pidgin_log_get_handle(void)
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
840 {
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
841 static int handle;
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
842
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
843 return &handle;
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
844 }
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
845
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
846 void pidgin_log_init(void)
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
847 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
848 void *handle = pidgin_log_get_handle();
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
849
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
850 purple_signal_register(handle, "log-displaying",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
851 purple_marshal_VOID__POINTER_POINTER,
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
852 NULL, 2,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
853 purple_value_new(PURPLE_TYPE_BOXED,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
854 "PidginLogViewer *"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
855 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
856 PURPLE_SUBTYPE_LOG));
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
857 }
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
858
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
859 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
860 pidgin_log_uninit(void)
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
861 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
862 purple_signals_unregister_by_instance(pidgin_log_get_handle());
12838
5c6f36abeee8 [gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
863 }

mercurial