annotate pidgin/gtklog.c @ 15778:c2c2a854f5b3

Change a bit how the keystrokes are processed. When a lot of keystrokes come in at the same time, the shortest key-combination is processed first. This should make typing fast over a very slow connection work properly.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 07 Mar 2007 12:58:34 +0000
parents 0a5823d45398
children cebfc6af3eb5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /**
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 * @file gtklog.c GTK+ Log viewer
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 * @ingroup gtkui
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 * gaim
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * source distribution.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * (at your option) any later version.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 #include "internal.h"
15514
535f002e7b0f More pidgin changes
Sean Egan <seanegan@gmail.com>
parents: 15507
diff changeset
26 #include "pidgin.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include "account.h"
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
29 #include "debug.h"
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
30 #include "log.h"
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
31 #include "notify.h"
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
32 #include "request.h"
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
33 #include "util.h"
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
34
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
35 #include "gaimstock.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include "gtkblist.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #include "gtkimhtml.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 #include "gtklog.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 #include "gtkutils.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 static GHashTable *log_viewers = NULL;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
42 static void populate_log_tree(PidginLogViewer *lv);
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
43 static PidginLogViewer *syslog_viewer = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 struct log_viewer_hash_t {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 GaimLogType type;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 char *screenname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 GaimAccount *account;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 GaimContact *contact;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 static guint log_viewer_hash(gconstpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 const struct log_viewer_hash_t *viewer = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 if (viewer->contact != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 return g_direct_hash(viewer->contact);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 return g_str_hash(viewer->screenname) +
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 g_str_hash(gaim_account_get_username(viewer->account));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 const struct log_viewer_hash_t *a, *b;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 int ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 char *normal;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 a = y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 b = z;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72 if (a->contact != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 if (b->contact != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 return (a->contact == b->contact);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 if (b->contact != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 normal = g_strdup(gaim_normalize(a->account, a->screenname));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 ret = (a->account == b->account) &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 !strcmp(normal, gaim_normalize(b->account, b->screenname));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 g_free(normal);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
90 static void select_first_log(PidginLogViewer *lv)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 GtkTreeModel *model;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 GtkTreeIter iter, it;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 GtkTreePath *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 model = GTK_TREE_MODEL(lv->treestore);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 if (!gtk_tree_model_get_iter_first(model, &iter))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 path = gtk_tree_model_get_path(model, &iter);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 if (gtk_tree_model_iter_children(model, &it, &iter))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 gtk_tree_view_expand_row(GTK_TREE_VIEW(lv->treeview), path, TRUE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 path = gtk_tree_model_get_path(model, &it);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 gtk_tree_selection_select_path(gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview)), path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 gtk_tree_path_free(path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 static const char *log_get_date(GaimLog *log)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 if (log->tm)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 return gaim_date_format_full(log->tm);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 return gaim_date_format_full(localtime(&log->time));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
121 static void search_cb(GtkWidget *button, PidginLogViewer *lv)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 const char *search_term = gtk_entry_get_text(GTK_ENTRY(lv->entry));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 GList *logs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 if (!(*search_term)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 /* reset the tree */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 gtk_tree_store_clear(lv->treestore);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 populate_log_tree(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 g_free(lv->search);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 lv->search = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 gtk_imhtml_search_clear(GTK_IMHTML(lv->imhtml));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 select_first_log(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137 if (lv->search != NULL && !strcmp(lv->search, search_term))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139 /* Searching for the same term acts as "Find Next" */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 gtk_imhtml_search_find(GTK_IMHTML(lv->imhtml), lv->search);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
144 pidgin_set_cursor(lv->window, GDK_WATCH);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 g_free(lv->search);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 lv->search = g_strdup(search_term);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 gtk_tree_store_clear(lv->treestore);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150 gtk_imhtml_clear(GTK_IMHTML(lv->imhtml));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 for (logs = lv->logs; logs != NULL; logs = logs->next) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153 char *read = gaim_log_read((GaimLog*)logs->data, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 if (read && *read && gaim_strcasestr(read, search_term)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 GtkTreeIter iter;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 GaimLog *log = logs->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 gtk_tree_store_append (lv->treestore, &iter, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 gtk_tree_store_set(lv->treestore, &iter,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 0, log_get_date(log),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 1, log, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 g_free(read);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 select_first_log(lv);
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
167 pidgin_clear_cursor(lv->window);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 static void destroy_cb(GtkWidget *w, gint resp, struct log_viewer_hash_t *ht) {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
171 PidginLogViewer *lv = syslog_viewer;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 #ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 if (resp == GTK_RESPONSE_HELP) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 char *logdir = g_build_filename(gaim_user_dir(), "logs", NULL);
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15507
diff changeset
176 winpidgin_shell_execute(logdir, "explore", NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 g_free(logdir);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 if (ht != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 lv = g_hash_table_lookup(log_viewers, ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
184 g_hash_table_remove(log_viewers, ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
185
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186 g_free(ht->screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 g_free(ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 } else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 syslog_viewer = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
191 gaim_request_close_with_handle(lv);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
192
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
193 g_list_foreach(lv->logs, (GFunc)gaim_log_free, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194 g_list_free(lv->logs);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196 g_free(lv->search);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 g_free(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 gtk_widget_destroy(w);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
202 static void log_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, PidginLogViewer *viewer) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 if (gtk_tree_view_row_expanded(tv, path))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 gtk_tree_view_collapse_row(tv, path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 gtk_tree_view_expand_row(tv, path, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
209 static void delete_log_cleanup_cb(gpointer *data)
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
210 {
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
211 g_free(data[1]); /* iter */
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
212 g_free(data);
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
213 }
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
214
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
215 static void delete_log_cb(gpointer *data)
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
216 {
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
217 if (!gaim_log_delete((GaimLog *)data[2]))
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
218 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
219 gaim_notify_error(NULL, NULL, "Log Deletion Failed",
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
220 "Check permissions and try again.");
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
221 }
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
222 else
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
223 {
15552
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
224 GtkTreeStore *treestore = data[0];
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
225 GtkTreeIter *iter = (GtkTreeIter *)data[1];
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
226 GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), iter);
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
227 gboolean first = !gtk_tree_path_prev(path);
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
228
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
229 if (!gtk_tree_store_remove(treestore, iter) && first)
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
230 {
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
231 /* iter was the last child at its level */
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
232
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
233 if (gtk_tree_path_up(path))
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
234 {
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
235 gtk_tree_model_get_iter(GTK_TREE_MODEL(treestore), iter, path);
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
236 gtk_tree_store_remove(treestore, iter);
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
237 }
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
238 }
7ebe32203e67 If you delete the last log for a month, delete the month header as well.
Richard Laager <rlaager@wiktel.com>
parents: 15551
diff changeset
239 gtk_tree_path_free(path);
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
240 }
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
241
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
242 delete_log_cleanup_cb(data);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
243 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
244
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
245 static void log_delete_log_cb(GtkWidget *menuitem, gpointer *data)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
246 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
247 PidginLogViewer *lv = data[0];
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
248 GaimLog *log = data[1];
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
249 const char *time = log_get_date(log);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
250 const char *name;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
251 char *tmp;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
252 gpointer *data2;
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
253
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
254 if (log->type == GAIM_LOG_IM)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
255 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
256 GaimBuddy *buddy = gaim_find_buddy(log->account, log->name);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
257 if (buddy != NULL)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
258 name = gaim_buddy_get_contact_alias(buddy);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
259 else
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
260 name = log->name;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
261
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
262 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the "
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
263 "conversation with %s which started at %s?"), name, time);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
264 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
265 else if (log->type == GAIM_LOG_CHAT)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
266 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
267 GaimChat *chat = gaim_blist_find_chat(log->account, log->name);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
268 if (chat != NULL)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
269 name = gaim_chat_get_name(chat);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
270 else
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
271 name = log->name;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
272
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
273 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the log of the "
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
274 "conversation in %s which started at %s?"), name, time);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
275 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
276 else if (log->type == GAIM_LOG_SYSTEM)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
277 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
278 tmp = g_strdup_printf(_("Are you sure you want to permanently delete the system log "
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
279 "which started at %s?"), time);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
280 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
281 else
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
282 g_return_if_reached();
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
283
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
284 /* The only way to free data in all cases is to tie it to the menuitem with
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
285 * g_object_set_data_full(). But, since we need to get some data down to
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
286 * delete_log_cb() to delete the log from the log viewer after the file is
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
287 * deleted, we have to allocate a new data array and make sure it gets freed
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
288 * either way. */
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
289 data2 = g_new(gpointer, 3);
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
290 data2[0] = lv->treestore;
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
291 data2[1] = data[3]; /* iter */
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
292 data2[2] = log;
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
293 gaim_request_action(lv, NULL, "Delete Log?", tmp,
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
294 0, data2, 2, _("Delete"), delete_log_cb, _("Cancel"), delete_log_cleanup_cb);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
295 g_free(tmp);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
296 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
297
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
298 static void log_show_popup_menu(GtkWidget *treeview, GdkEventButton *event, gpointer *data)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
299 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
300 GtkWidget *menu = gtk_menu_new();
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
301 GtkWidget *menuitem = gtk_menu_item_new_with_label("Delete Log...");
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
302
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
303 if (!gaim_log_is_deletable((GaimLog *)data[1]))
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
304 gtk_widget_set_sensitive(menuitem, FALSE);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
305
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
306 g_signal_connect(menuitem, "activate", G_CALLBACK(log_delete_log_cb), data);
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
307 g_object_set_data_full(G_OBJECT(menuitem), "log-viewer-data", data, g_free);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
308 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
309 gtk_widget_show_all(menu);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
310
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
311 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, (GtkMenuPositionFunc)data[2], NULL,
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
312 (event != NULL) ? event->button : 0,
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
313 gdk_event_get_time((GdkEvent *)event));
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
314 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
315
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
316 static gboolean log_button_press_cb(GtkWidget *treeview, GdkEventButton *event, PidginLogViewer *lv)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
317 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
318 if (event->type == GDK_BUTTON_PRESS && event->button == 3)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
319 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
320 GtkTreePath *path;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
321 GtkTreeIter *iter;
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
322 GValue val;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
323 GaimLog *log;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
324 gpointer *data;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
325
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
326 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeview), event->x, event->y, &path, NULL, NULL, NULL))
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
327 return FALSE;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
328 iter = g_new(GtkTreeIter, 1);
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
329 gtk_tree_model_get_iter(GTK_TREE_MODEL(lv->treestore), iter, path);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
330 val.g_type = 0;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
331 gtk_tree_model_get_value(GTK_TREE_MODEL(lv->treestore), iter, 1, &val);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
332
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
333 log = g_value_get_pointer(&val);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
334
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
335 if (log == NULL)
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
336 {
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
337 g_free(iter);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
338 return FALSE;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
339 }
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
340
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
341 data = g_new(gpointer, 4);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
342 data[0] = lv;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
343 data[1] = log;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
344 data[2] = NULL;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
345 data[3] = iter;
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
346
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
347 log_show_popup_menu(treeview, event, data);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
348 return TRUE;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
349 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
350
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
351 return FALSE;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
352 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
353
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
354 static gboolean log_popup_menu_cb(GtkWidget *treeview, PidginLogViewer *lv)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
355 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
356 GtkTreeSelection *sel;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
357 GtkTreeIter *iter;
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
358 GValue val;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
359 GaimLog *log;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
360 gpointer *data;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
361
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
362 iter = g_new(GtkTreeIter, 1);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
363 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv));
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
364 if (!gtk_tree_selection_get_selected(sel, NULL, iter))
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
365 {
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
366 return FALSE;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
367 }
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
368
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
369 val.g_type = 0;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
370 gtk_tree_model_get_value(GTK_TREE_MODEL(lv->treestore),
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
371 iter, NODE_COLUMN, &val);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
372
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
373 log = g_value_get_pointer(&val);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
374
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
375 if (log == NULL)
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
376 return FALSE;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
377
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
378 data = g_new(gpointer, 4);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
379 data[0] = lv;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
380 data[1] = log;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
381 data[2] = pidgin_treeview_popup_menu_position_func;
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
382 data[3] = iter;
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
383
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
384 log_show_popup_menu(treeview, NULL, data);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
385 return TRUE;
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
386 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
387
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 static gboolean search_find_cb(gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
390 PidginLogViewer *viewer = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391 gtk_imhtml_search_find(GTK_IMHTML(viewer->imhtml), viewer->search);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
395 static void log_select_cb(GtkTreeSelection *sel, PidginLogViewer *viewer) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396 GtkTreeIter iter;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 GValue val;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 GaimLog *log = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400 GaimLogReadFlags flags;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 char *read = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
402
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403 if (!gtk_tree_selection_get_selected(sel, &model, &iter))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 val.g_type = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407 gtk_tree_model_get_value (model, &iter, 1, &val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 log = g_value_get_pointer(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409 g_value_unset(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411 if (log == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
412 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
414 pidgin_set_cursor(viewer->window, GDK_WATCH);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416 if (log->type != GAIM_LOG_SYSTEM) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 char *title;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 if (log->type == GAIM_LOG_CHAT)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation in %s on %s</span>"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 log->name, log_get_date(log));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422 title = g_strdup_printf(_("<span size='larger' weight='bold'>Conversation with %s on %s</span>"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 log->name, log_get_date(log));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 gtk_label_set_markup(GTK_LABEL(viewer->label), title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
426 g_free(title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 read = gaim_log_read(log, &flags);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 viewer->flags = flags;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 gtk_imhtml_set_protocol_name(GTK_IMHTML(viewer->imhtml),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 gaim_account_get_protocol_name(log->account));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
436 gaim_signal_emit(pidgin_log_get_handle(), "log-displaying", viewer, log);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 gtk_imhtml_append_text(GTK_IMHTML(viewer->imhtml), read,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL |
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 ((flags & GAIM_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 g_free(read);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443 if (viewer->search != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444 gtk_imhtml_search_clear(GTK_IMHTML(viewer->imhtml));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 g_idle_add(search_find_cb, viewer);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
448 pidgin_clear_cursor(viewer->window);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 /* I want to make this smarter, but haven't come up with a cool algorithm to do so, yet.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452 * I want the tree to be divided into groups like "Today," "Yesterday," "Last week,"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 * "August," "2002," etc. based on how many conversation took place in each subdivision.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 * For now, I'll just make it a flat list.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 */
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
457 static void populate_log_tree(PidginLogViewer *lv)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458 /* Logs are made from trees in real life.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 This is a tree made from logs */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 const char *month;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462 char prev_top_month[30] = "";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463 GtkTreeIter toplevel, child;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464 GList *logs = lv->logs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
466 while (logs != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 GaimLog *log = logs->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
468
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469 month = gaim_utf8_strftime(_("%B %Y"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470 log->tm ? log->tm : localtime(&log->time));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
471
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
472 if (strcmp(month, prev_top_month) != 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
473 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
474 /* top level */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 gtk_tree_store_append(lv->treestore, &toplevel, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476 gtk_tree_store_set(lv->treestore, &toplevel, 0, month, 1, NULL, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 strncpy(prev_top_month, month, sizeof(prev_top_month));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
479 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
481 /* sub */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482 gtk_tree_store_append(lv->treestore, &child, &toplevel);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 gtk_tree_store_set(lv->treestore, &child,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
484 0, log_get_date(log),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485 1, log,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
486 -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
487
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
488 logs = logs->next;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
489 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
492 static PidginLogViewer *display_log_viewer(struct log_viewer_hash_t *ht, GList *logs,
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
493 const char *title, GtkWidget *icon, int log_size)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
495 PidginLogViewer *lv;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 GtkWidget *title_box;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497 char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 GtkWidget *pane;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499 GtkWidget *sw;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500 GtkCellRenderer *rend;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501 GtkTreeViewColumn *col;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502 GtkTreeSelection *sel;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503 GtkWidget *vbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 GtkWidget *frame;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505 GtkWidget *hbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
506 GtkWidget *find_button;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507 GtkWidget *size_label;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
509 if (logs == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
510 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
511 /* No logs were found. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 const char *log_preferences = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
513
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514 if (ht == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
515 if (!gaim_prefs_get_bool("/core/logging/log_system"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516 log_preferences = _("System events will only be logged if the \"Log all status changes to system log\" preference is enabled.");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
517 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
518 if (ht->type == GAIM_LOG_IM) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
519 if (!gaim_prefs_get_bool("/core/logging/log_ims"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
520 log_preferences = _("Instant messages will only be logged if the \"Log all instant messages\" preference is enabled.");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
521 } else if (ht->type == GAIM_LOG_CHAT) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522 if (!gaim_prefs_get_bool("/core/logging/log_chats"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
523 log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
524 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
525 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
526
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
527 gaim_notify_info(NULL, title, _("No logs were found"), log_preferences);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
528 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
530
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
531 lv = g_new0(PidginLogViewer, 1);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
532 lv->logs = logs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 if (ht != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 g_hash_table_insert(log_viewers, ht, lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537 /* Window ***********/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
538 lv->window = gtk_dialog_new_with_buttons(title, NULL, 0,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
540 #ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
541 /* Steal the "HELP" response and use it to trigger browsing to the logs folder */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
542 gtk_dialog_add_button(GTK_DIALOG(lv->window), _("_Browse logs folder"), GTK_RESPONSE_HELP);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
543 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
544 gtk_container_set_border_width (GTK_CONTAINER(lv->window), GAIM_HIG_BOX_SPACE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
545 gtk_dialog_set_has_separator(GTK_DIALOG(lv->window), FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
546 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(lv->window)->vbox), 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
547 g_signal_connect(G_OBJECT(lv->window), "response",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 G_CALLBACK(destroy_cb), ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
549 gtk_window_set_role(GTK_WINDOW(lv->window), "log_viewer");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
550
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
551 /* Icon *************/
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
552 if (icon != NULL) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
553 title_box = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
554 gtk_container_set_border_width(GTK_CONTAINER(title_box), GAIM_HIG_BOX_SPACE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
555 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), title_box, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
556
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 gtk_box_pack_start(GTK_BOX(title_box), icon, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
558 } else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
559 title_box = GTK_DIALOG(lv->window)->vbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
561 /* Label ************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
562 lv->label = gtk_label_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
564 text = g_strdup_printf("<span size='larger' weight='bold'>%s</span>", title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
566 gtk_label_set_markup(GTK_LABEL(lv->label), text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567 gtk_misc_set_alignment(GTK_MISC(lv->label), 0, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 gtk_box_pack_start(GTK_BOX(title_box), lv->label, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 /* Pane *************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
572 pane = gtk_hpaned_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
573 gtk_container_set_border_width(GTK_CONTAINER(pane), GAIM_HIG_BOX_SPACE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(lv->window)->vbox), pane, TRUE, TRUE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576 /* List *************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
577 sw = gtk_scrolled_window_new (NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580 gtk_paned_add1(GTK_PANED(pane), sw);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 lv->treestore = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 lv->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (lv->treestore));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583 rend = gtk_cell_renderer_text_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584 col = gtk_tree_view_column_new_with_attributes ("time", rend, "markup", 0, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 gtk_tree_view_append_column (GTK_TREE_VIEW(lv->treeview), col);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
586 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (lv->treeview), FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 gtk_container_add (GTK_CONTAINER (sw), lv->treeview);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 populate_log_tree(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (lv->treeview));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 g_signal_connect (G_OBJECT (sel), "changed",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593 G_CALLBACK (log_select_cb),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595 g_signal_connect (G_OBJECT(lv->treeview), "row-activated",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 G_CALLBACK(log_row_activated_cb),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
597 lv);
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
598 pidgin_set_accessible_label(lv->treeview, lv->label);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
599
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
600 g_signal_connect(lv->treeview, "button-press-event", G_CALLBACK(log_button_press_cb), lv);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
601 g_signal_connect(lv->treeview, "popup-menu", G_CALLBACK(log_popup_menu_cb), lv);
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
602
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603 /* Log size ************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
604 if(log_size) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605 char *sz_txt = gaim_str_size_to_units(log_size);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
606 text = g_strdup_printf("<span weight='bold'>%s</span> %s", _("Total log size:"), sz_txt);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 size_label = gtk_label_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
608 gtk_label_set_markup(GTK_LABEL(size_label), text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 /* gtk_paned_add1(GTK_PANED(pane), size_label); */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 gtk_misc_set_alignment(GTK_MISC(size_label), 0, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 gtk_box_pack_end(GTK_BOX(GTK_DIALOG(lv->window)->vbox), size_label, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 g_free(sz_txt);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
613 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
614 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
615
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
616 /* A fancy little box ************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618 gtk_paned_add2(GTK_PANED(pane), vbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
620 /* Viewer ************/
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
621 frame = pidgin_create_imhtml(FALSE, &lv->imhtml, NULL, NULL);
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
622 gtk_widget_set_name(lv->imhtml, "pidginlog_imhtml");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
623 gtk_widget_set_size_request(lv->imhtml, 320, 200);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
624 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 gtk_widget_show(frame);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
626
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 /* Search box **********/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
628 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
630 lv->entry = gtk_entry_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
631 gtk_box_pack_start(GTK_BOX(hbox), lv->entry, TRUE, TRUE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
632 find_button = gtk_button_new_from_stock(GTK_STOCK_FIND);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
633 gtk_box_pack_start(GTK_BOX(hbox), find_button, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634 g_signal_connect(GTK_ENTRY(lv->entry), "activate", G_CALLBACK(search_cb), lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
635 g_signal_connect(GTK_BUTTON(find_button), "clicked", G_CALLBACK(search_cb), lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
636
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637 select_first_log(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
639 gtk_widget_show_all(lv->window);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
641 return lv;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
642 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
644 void pidgin_log_show(GaimLogType type, const char *screenname, GaimAccount *account) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
645 struct log_viewer_hash_t *ht;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
646 PidginLogViewer *lv = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
647 const char *name = screenname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 char *title;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650 g_return_if_fail(account != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
651 g_return_if_fail(screenname != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
652
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 ht = g_new0(struct log_viewer_hash_t, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
655 ht->type = type;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
656 ht->screenname = g_strdup(screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 ht->account = account;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
659 if (log_viewers == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
661 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
662 gtk_window_present(GTK_WINDOW(lv->window));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663 g_free(ht->screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
664 g_free(ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
666 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
667
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
668 if (type == GAIM_LOG_CHAT) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
669 GaimChat *chat;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
670
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671 chat = gaim_blist_find_chat(account, screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
672 if (chat != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
673 name = gaim_chat_get_name(chat);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
674
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675 title = g_strdup_printf(_("Conversations in %s"), name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
676 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677 GaimBuddy *buddy;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
678
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 buddy = gaim_find_buddy(account, screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
680 if (buddy != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
681 name = gaim_buddy_get_contact_alias(buddy);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
682
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
683 title = g_strdup_printf(_("Conversations with %s"), name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
684 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
686 display_log_viewer(ht, gaim_log_get_logs(type, screenname, account),
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
687 title, gtk_image_new_from_pixbuf(pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM)),
15435
29e443e0613f I think this takes care of protocol icons. Note there are still places
Sean Egan <seanegan@gmail.com>
parents: 15374
diff changeset
688 gaim_log_get_total_size(type, screenname, account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
689 g_free(title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
690 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
691
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
692 void pidgin_log_show_contact(GaimContact *contact) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
693 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
694 GaimBlistNode *child;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
695 PidginLogViewer *lv = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
696 GList *logs = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
697 GdkPixbuf *pixbuf;
15593
0a5823d45398 Fix a few small compile warnings:
Mark Doliner <mark@kingant.net>
parents: 15578
diff changeset
698 GtkWidget *image = gtk_image_new();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
699 const char *name = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
700 char *title;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
701 int total_log_size = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
702
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
703 g_return_if_fail(contact != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
704
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
705 ht->type = GAIM_LOG_IM;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
706 ht->contact = contact;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
707
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
708 if (log_viewers == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
709 log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
710 } else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
711 gtk_window_present(GTK_WINDOW(lv->window));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
712 g_free(ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
713 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
714 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
715
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
716 for (child = contact->node.child ; child ; child = child->next) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
717 if (!GAIM_BLIST_NODE_IS_BUDDY(child))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
718 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
719
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
720 logs = g_list_concat(gaim_log_get_logs(GAIM_LOG_IM, ((GaimBuddy *)child)->name,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
721 ((GaimBuddy *)child)->account), logs);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
722 total_log_size += gaim_log_get_total_size(GAIM_LOG_IM, ((GaimBuddy *)child)->name, ((GaimBuddy *)child)->account);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
723 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
724 logs = g_list_sort(logs, gaim_log_compare);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
725
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
726 pixbuf = gtk_widget_render_icon (image, PIDGIN_STOCK_STATUS_PERSON,
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
727 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL), "GtkWindow");
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
728 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
729
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
730 if (contact->alias != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
731 name = contact->alias;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
732 else if (contact->priority != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
733 name = gaim_buddy_get_contact_alias(contact->priority);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
734
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
735 title = g_strdup_printf(_("Conversations with %s"), name);
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
736 display_log_viewer(ht, logs, title, image, total_log_size);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
737 g_free(title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
738 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
739
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
740 void pidgin_syslog_show()
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
741 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
742 GList *accounts = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
743 GList *logs = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
744
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
745 if (syslog_viewer != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
746 gtk_window_present(GTK_WINDOW(syslog_viewer->window));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
747 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
748 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
749
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
750 for(accounts = gaim_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
751
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
752 GaimAccount *account = (GaimAccount *)accounts->data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
753 if(gaim_find_prpl(gaim_account_get_protocol_id(account)) == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
754 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
755
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
756 logs = g_list_concat(gaim_log_get_system_logs(account), logs);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
757 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
758 logs = g_list_sort(logs, gaim_log_compare);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
759
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
760 syslog_viewer = display_log_viewer(NULL, logs, _("System Log"), NULL, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
761 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
762
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
763 /****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
764 * GTK+ LOG SUBSYSTEM *******************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
765 ****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
766
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
767 void *
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
768 pidgin_log_get_handle(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
769 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
770 static int handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
771
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
772 return &handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
773 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
774
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
775 void pidgin_log_init(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
776 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
777 void *handle = pidgin_log_get_handle();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
778
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
779 gaim_signal_register(handle, "log-displaying",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
780 gaim_marshal_VOID__POINTER_POINTER,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
781 NULL, 2,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
782 gaim_value_new(GAIM_TYPE_BOXED,
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
783 "PidginLogViewer *"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
784 gaim_value_new(GAIM_TYPE_SUBTYPE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
785 GAIM_SUBTYPE_LOG));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
786 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
787
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
788 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
789 pidgin_log_uninit(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
790 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
791 gaim_signals_unregister_by_instance(pidgin_log_get_handle());
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
792 }