annotate pidgin/gtklog.c @ 19860:9a6d429d7aed

Added hints to gtklog.c
author Gabriel Schulhof <nix@go-nix.ca>
date Thu, 16 Aug 2007 21:17:59 +0000
parents 64391b1e860e
children 5f857c5e2d72
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
16193
247e421c4fa6 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@wiktel.com>
parents: 15871
diff changeset
3 * @ingroup pidgin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 *
15871
66dff3dfdea6 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents: 15823
diff changeset
5 * pidgin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 *
15871
66dff3dfdea6 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents: 15823
diff changeset
7 * Pidgin is the legal property of its developers, whose names are too numerous
15374
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
15822
84b0f9b23ede According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@gmail.com>
parents: 15821
diff changeset
35 #include "pidginstock.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 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
46 PurpleLogType type;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 char *screenname;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
48 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
49 PurpleContact *contact;
15374
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) +
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
60 g_str_hash(purple_account_get_username(viewer->account));
15374
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
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
82 normal = g_strdup(purple_normalize(a->account, a->screenname));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 ret = (a->account == b->account) &&
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
84 !strcmp(normal, purple_normalize(b->account, b->screenname));
15374
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
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
113 static const char *log_get_date(PurpleLog *log)
15374
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)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
116 return purple_date_format_full(log->tm);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 else
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
118 return purple_date_format_full(localtime(&log->time));
15374
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) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
153 char *read = purple_log_read((PurpleLog*)logs->data, NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
154 if (read && *read && purple_strcasestr(read, search_term)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 GtkTreeIter iter;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
156 PurpleLog *log = logs->data;
15374
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) {
18495
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
175 GtkTreeSelection *sel;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
176 GtkTreeIter iter;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
177 GtkTreeModel *model;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
178 PurpleLog *log = NULL;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
179 char *logdir;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
180
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
181 if (ht != NULL)
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
182 lv = g_hash_table_lookup(log_viewers, ht);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
183 model = GTK_TREE_MODEL(lv->treestore);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
184
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
185 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview));
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
186 if (gtk_tree_selection_get_selected(sel, &model, &iter)) {
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
187 GValue val;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
188
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
189 val.g_type = 0;
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
190 gtk_tree_model_get_value (model, &iter, 1, &val);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
191 log = g_value_get_pointer(&val);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
192 g_value_unset(&val);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
193 }
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
194
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
195
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
196 if (log == NULL)
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
197 logdir = g_build_filename(purple_user_dir(), "logs", NULL);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
198 else
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
199 logdir = purple_log_get_log_dir(log->type, log->name, log->account);
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
200
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15507
diff changeset
201 winpidgin_shell_execute(logdir, "explore", NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 g_free(logdir);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 if (ht != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 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
209 g_hash_table_remove(log_viewers, ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 g_free(ht->screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 g_free(ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 } else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 syslog_viewer = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
216 purple_request_close_with_handle(lv);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
217
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
218 g_list_foreach(lv->logs, (GFunc)purple_log_free, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 g_list_free(lv->logs);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 g_free(lv->search);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222 g_free(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 gtk_widget_destroy(w);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
227 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
228 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
229 gtk_tree_view_collapse_row(tv, path);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 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
232 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
234 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
235 {
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
236 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
237 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
238 }
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
239
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
240 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
241 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
242 if (!purple_log_delete((PurpleLog *)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
243 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
244 purple_notify_error(NULL, NULL, "Log Deletion Failed",
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
245 "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
246 }
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
247 else
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
248 {
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
249 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
250 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
251 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
252 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
253
16231
7d1847ba3484 Fix Gtk+ 2.0 support
Stu Tomlinson <stu@nosnilmot.com>
parents: 16216
diff changeset
254 #if GTK_CHECK_VERSION(2,2,0)
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
255 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
256 {
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
257 /* 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
258
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
259 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
260 {
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
261 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
262 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
263 }
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
264 }
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
265 gtk_tree_path_free(path);
16231
7d1847ba3484 Fix Gtk+ 2.0 support
Stu Tomlinson <stu@nosnilmot.com>
parents: 16216
diff changeset
266 #else
7d1847ba3484 Fix Gtk+ 2.0 support
Stu Tomlinson <stu@nosnilmot.com>
parents: 16216
diff changeset
267 gtk_tree_store_remove(treestore, iter);
7d1847ba3484 Fix Gtk+ 2.0 support
Stu Tomlinson <stu@nosnilmot.com>
parents: 16216
diff changeset
268 gtk_tree_path_free(path);
7d1847ba3484 Fix Gtk+ 2.0 support
Stu Tomlinson <stu@nosnilmot.com>
parents: 16216
diff changeset
269 #endif
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
270 }
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
271
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
272 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
273 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
274
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
275 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
276 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
277 PidginLogViewer *lv = data[0];
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
278 PurpleLog *log = data[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
279 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
280 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
281 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
282 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
283
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
284 if (log->type == PURPLE_LOG_IM)
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
285 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
286 PurpleBuddy *buddy = purple_find_buddy(log->account, log->name);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
287 if (buddy != NULL)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
288 name = purple_buddy_get_contact_alias(buddy);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
289 else
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
290 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
291
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
292 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
293 "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
294 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
295 else if (log->type == PURPLE_LOG_CHAT)
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
296 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
297 PurpleChat *chat = purple_blist_find_chat(log->account, log->name);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
298 if (chat != NULL)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
299 name = purple_chat_get_name(chat);
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
300 else
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
301 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
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 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
304 "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
305 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
306 else if (log->type == PURPLE_LOG_SYSTEM)
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
307 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
308 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
309 "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
310 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
311 else
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
312 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
313
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
314 /* 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
315 * 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
316 * 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
317 * 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
318 * either way. */
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
319 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
320 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
321 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
322 data2[2] = log;
16442
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16427
diff changeset
323 purple_request_action(lv, NULL, "Delete Log?", tmp, 0,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16427
diff changeset
324 NULL, NULL, NULL,
19860
9a6d429d7aed Added hints to gtklog.c
Gabriel Schulhof <nix@go-nix.ca>
parents: 18495
diff changeset
325 /* "conversation" could be replaced with something Pidgin-specific */
9a6d429d7aed Added hints to gtklog.c
Gabriel Schulhof <nix@go-nix.ca>
parents: 18495
diff changeset
326 "conversation", data2, 2,
16442
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16427
diff changeset
327 _("Delete"), delete_log_cb,
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16427
diff changeset
328 _("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
329 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
330 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
331
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
332 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
333 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
334 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
335 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
336
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
337 if (!purple_log_is_deletable((PurpleLog *)data[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
338 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
339
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
340 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
341 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
342 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
343 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
344
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
345 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
346 (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
347 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
348 }
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 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
351 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
352 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
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 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
355 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
356 GValue val;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
357 PurpleLog *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
358 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
359
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
360 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
361 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
362 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
363 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
364 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
365 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
366
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
367 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
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 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
370 {
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
371 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
372 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
373 }
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
374
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
375 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
376 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
377 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
378 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
379 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
380
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
381 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
382 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
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
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 FALSE;
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
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
388 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
389 {
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
390 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
391 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
392 GValue val;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
393 PurpleLog *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
394 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
395
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
396 iter = g_new(GtkTreeIter, 1);
18495
64391b1e860e Make the "Browse Logs Folder" button open the folder containing the log
Richard Laager <rlaager@wiktel.com>
parents: 16442
diff changeset
397 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(lv->treeview));
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
398 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
399 {
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
400 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
401 }
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
402
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
403 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
404 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
405 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
406
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
407 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
408
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
409 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
410 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
411
15551
fa13722c7756 After the log is deleted, remove the entry from the log viewer.
Richard Laager <rlaager@wiktel.com>
parents: 15531
diff changeset
412 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
413 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
414 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
415 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
416 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
417
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
418 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
419 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
420 }
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
421
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422 static gboolean search_find_cb(gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
424 PidginLogViewer *viewer = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 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
426 return FALSE;
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
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
429 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
430 GtkTreeIter iter;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431 GValue val;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 GtkTreeModel *model = GTK_TREE_MODEL(viewer->treestore);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
433 PurpleLog *log = NULL;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
434 PurpleLogReadFlags flags;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435 char *read = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437 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
438 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 val.g_type = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 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
442 log = g_value_get_pointer(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443 g_value_unset(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 if (log == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 return;
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_set_cursor(viewer->window, GDK_WATCH);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
450 if (log->type != PURPLE_LOG_SYSTEM) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 char *title;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
452 if (log->type == PURPLE_LOG_CHAT)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 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
454 log->name, log_get_date(log));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 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
457 log->name, log_get_date(log));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 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
460 g_free(title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
463 read = purple_log_read(log, &flags);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464 viewer->flags = flags;
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 gtk_imhtml_clear(GTK_IMHTML(viewer->imhtml));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 gtk_imhtml_set_protocol_name(GTK_IMHTML(viewer->imhtml),
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
468 purple_account_get_protocol_name(log->account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
470 purple_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
471
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
472 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
473 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL |
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
474 ((flags & PURPLE_LOG_READ_NO_NEWLINE) ? GTK_IMHTML_NO_NEWLINE : 0));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 g_free(read);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477 if (viewer->search != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 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
479 g_idle_add(search_find_cb, viewer);
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
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
482 pidgin_clear_cursor(viewer->window);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
484
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485 /* 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
486 * 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
487 * "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
488 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
489 * 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
490 */
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
491 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
492 /* 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
493 This is a tree made from logs */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495 const char *month;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 char prev_top_month[30] = "";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497 GtkTreeIter toplevel, child;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 GList *logs = lv->logs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500 while (logs != NULL) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
501 PurpleLog *log = logs->data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
503 month = purple_utf8_strftime(_("%B %Y"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 log->tm ? log->tm : localtime(&log->time));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
506 if (strcmp(month, prev_top_month) != 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508 /* top level */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
509 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
510 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
511
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 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
513 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
515 /* sub */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516 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
517 gtk_tree_store_set(lv->treestore, &child,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
518 0, log_get_date(log),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
519 1, log,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
520 -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
521
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522 logs = logs->next;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
523 }
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
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
526 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
527 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
528 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
529 PidginLogViewer *lv;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
530 GtkWidget *title_box;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531 char *text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
532 GtkWidget *pane;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533 GtkWidget *sw;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 GtkCellRenderer *rend;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 GtkTreeViewColumn *col;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536 GtkTreeSelection *sel;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537 GtkWidget *vbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
538 GtkWidget *frame;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539 GtkWidget *hbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
540 GtkWidget *find_button;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
541 GtkWidget *size_label;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
542
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
543 if (logs == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
544 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
545 /* No logs were found. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
546 const char *log_preferences = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
547
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 if (ht == NULL) {
16427
4999bbc52881 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents: 16231
diff changeset
549 if (!purple_prefs_get_bool("/purple/logging/log_system"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
550 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
551 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
552 if (ht->type == PURPLE_LOG_IM) {
16427
4999bbc52881 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents: 16231
diff changeset
553 if (!purple_prefs_get_bool("/purple/logging/log_ims"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
554 log_preferences = _("Instant messages will only be logged if the \"Log all instant messages\" preference is enabled.");
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
555 } else if (ht->type == PURPLE_LOG_CHAT) {
16427
4999bbc52881 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents: 16231
diff changeset
556 if (!purple_prefs_get_bool("/purple/logging/log_chats"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 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
558 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
559 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
561 purple_notify_info(NULL, title, _("No logs were found"), log_preferences);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
562 return 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
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
565 lv = g_new0(PidginLogViewer, 1);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
566 lv->logs = logs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 if (ht != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569 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
570
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 /* Window ***********/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
572 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
573 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 #ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575 /* 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
576 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
577 #endif
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15593
diff changeset
578 gtk_container_set_border_width (GTK_CONTAINER(lv->window), PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 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
580 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
581 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
582 G_CALLBACK(destroy_cb), ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583 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
584
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 /* Icon *************/
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
586 if (icon != NULL) {
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15593
diff changeset
587 title_box = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15593
diff changeset
588 gtk_container_set_border_width(GTK_CONTAINER(title_box), PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 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
590
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 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
592 } else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593 title_box = GTK_DIALOG(lv->window)->vbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595 /* Label ************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 lv->label = gtk_label_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
597
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 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
599
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
600 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
601 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
602 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
603 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
604
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605 /* Pane *************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
606 pane = gtk_hpaned_new();
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15593
diff changeset
607 gtk_container_set_border_width(GTK_CONTAINER(pane), PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
608 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
609
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 /* List *************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 sw = gtk_scrolled_window_new (NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 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
613 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
614 gtk_paned_add1(GTK_PANED(pane), sw);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
615 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
616 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
617 rend = gtk_cell_renderer_text_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618 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
619 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
620 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
621 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
622
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
623 populate_log_tree(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
624
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 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
626 g_signal_connect (G_OBJECT (sel), "changed",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 G_CALLBACK (log_select_cb),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
628 lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 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
630 G_CALLBACK(log_row_activated_cb),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
631 lv);
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
632 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
633
15531
3fbd4d8b5f2b Implement the UI for deleting logs. This allows users to right-click on
Richard Laager <rlaager@wiktel.com>
parents: 15516
diff changeset
634 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
635 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
636
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637 /* Log size ************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638 if(log_size) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
639 char *sz_txt = purple_str_size_to_units(log_size);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 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
641 size_label = gtk_label_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
642 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
643 /* 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
644 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
645 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
646 g_free(sz_txt);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
647 g_free(text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 }
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 /* A fancy little box ************/
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15593
diff changeset
651 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
652 gtk_paned_add2(GTK_PANED(pane), vbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654 /* Viewer ************/
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
655 frame = pidgin_create_imhtml(FALSE, &lv->imhtml, NULL, NULL);
16198
88a93f78b489 I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@wiktel.com>
parents: 16193
diff changeset
656 gtk_widget_set_name(lv->imhtml, "pidgin_log_imhtml");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 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
658 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
659 gtk_widget_show(frame);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
661 /* Search box **********/
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15593
diff changeset
662 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663 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
664 lv->entry = gtk_entry_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 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
666 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
667 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
668 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
669 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
670
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671 select_first_log(lv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
672
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
673 gtk_widget_show_all(lv->window);
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 return lv;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
676 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
678 void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 struct log_viewer_hash_t *ht;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
680 PidginLogViewer *lv = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
681 const char *name = screenname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
682 char *title;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
683
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
684 g_return_if_fail(account != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685 g_return_if_fail(screenname != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
686
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
687 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
688
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
689 ht->type = type;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
690 ht->screenname = g_strdup(screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
691 ht->account = account;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
692
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
693 if (log_viewers == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
694 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
695 } 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
696 gtk_window_present(GTK_WINDOW(lv->window));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
697 g_free(ht->screenname);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
698 g_free(ht);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
699 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
700 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
701
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
702 if (type == PURPLE_LOG_CHAT) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
703 PurpleChat *chat;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
704
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
705 chat = purple_blist_find_chat(account, screenname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
706 if (chat != NULL)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
707 name = purple_chat_get_name(chat);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
708
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
709 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
710 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
711 PurpleBuddy *buddy;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
712
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
713 buddy = purple_find_buddy(account, screenname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
714 if (buddy != NULL)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
715 name = purple_buddy_get_contact_alias(buddy);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
716
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
717 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
718 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
719
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
720 display_log_viewer(ht, purple_log_get_logs(type, screenname, account),
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
721 title, gtk_image_new_from_pixbuf(pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM)),
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
722 purple_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
723 g_free(title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
724 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
725
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
726 void pidgin_log_show_contact(PurpleContact *contact) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
727 struct log_viewer_hash_t *ht = g_new0(struct log_viewer_hash_t, 1);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
728 PurpleBlistNode *child;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
729 PidginLogViewer *lv = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
730 GList *logs = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
731 GdkPixbuf *pixbuf;
15593
0a5823d45398 Fix a few small compile warnings:
Mark Doliner <mark@kingant.net>
parents: 15578
diff changeset
732 GtkWidget *image = gtk_image_new();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
733 const char *name = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
734 char *title;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
735 int total_log_size = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
736
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
737 g_return_if_fail(contact != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
738
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
739 ht->type = PURPLE_LOG_IM;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
740 ht->contact = contact;
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 if (log_viewers == NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
743 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
744 } 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
745 gtk_window_present(GTK_WINDOW(lv->window));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
746 g_free(ht);
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 (child = contact->node.child ; child ; child = child->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
751 if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
752 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
753
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
754 logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
755 ((PurpleBuddy *)child)->account), logs);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
756 total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
757 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
758 logs = g_list_sort(logs, purple_log_compare);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
759
16216
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
760 pixbuf = gtk_widget_render_icon(image, PIDGIN_STOCK_STATUS_PERSON,
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
761 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL), "GtkWindow");
15578
3ae0ba9aee46 Use person icon for Person log viewer
Sean Egan <seanegan@gmail.com>
parents: 15552
diff changeset
762 gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
16216
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
763
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
764 if (contact->alias != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
765 name = contact->alias;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
766 else if (contact->priority != NULL)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
767 name = purple_buddy_get_contact_alias(contact->priority);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
768
16216
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
769 /* This will happen if the contact doesn't have an alias,
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
770 * and none of the contact's buddies are online.
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
771 * There is probably a better way to deal with this. */
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
772 if (name == NULL) {
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
773 if (contact->node.child != NULL && PURPLE_BLIST_NODE_IS_BUDDY(contact->node.child))
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
774 name = purple_buddy_get_contact_alias((PurpleBuddy *) contact->node.child);
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
775 if (name == NULL)
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
776 name = "";
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
777 }
6118bd3c9a7c Fix a printf(%s, NULL) when opening a log for an buddy whose contact has no online buddies and no alias.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16198
diff changeset
778
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
779 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
780 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
781 g_free(title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
782 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
783
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
784 void pidgin_syslog_show()
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
785 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
786 GList *accounts = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
787 GList *logs = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
788
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
789 if (syslog_viewer != NULL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
790 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
791 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
792 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
793
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
794 for(accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
795
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
796 PurpleAccount *account = (PurpleAccount *)accounts->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
797 if(purple_find_prpl(purple_account_get_protocol_id(account)) == NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
798 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
799
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
800 logs = g_list_concat(purple_log_get_system_logs(account), logs);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
801 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
802 logs = g_list_sort(logs, purple_log_compare);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
803
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
804 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
805 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
806
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
807 /****************************************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
808 * GTK+ LOG SUBSYSTEM *******************************************************
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
809 ****************************************************************************/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
810
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
811 void *
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
812 pidgin_log_get_handle(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
813 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
814 static int handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
815
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
816 return &handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
817 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
818
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
819 void pidgin_log_init(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
820 {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
821 void *handle = pidgin_log_get_handle();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
822
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
823 purple_signal_register(handle, "log-displaying",
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
824 purple_marshal_VOID__POINTER_POINTER,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
825 NULL, 2,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
826 purple_value_new(PURPLE_TYPE_BOXED,
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
827 "PidginLogViewer *"),
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
828 purple_value_new(PURPLE_TYPE_SUBTYPE,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
829 PURPLE_SUBTYPE_LOG));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
830 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
831
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
832 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15436
diff changeset
833 pidgin_log_uninit(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
834 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
835 purple_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
836 }