Wed, 21 Dec 2005 18:36:19 +0000
[gaim-migrate @ 14934]
Enable the extra warnings regardless of --enable-debug.
Enable FORTIFY_SOURCE regardless of --enable-debug, adding a --disable-fortify flag to configure.
Enable (well, stop disabling) the missing initializer warnings.
This leads to warnings with: GValue v = {0,}; that must be worked around.
Basically, instead of:
GValue v = {0,};
...
g_value_init(&v, G_TYPE_FOO); /* or other use of the GValue */
We'd need to do:
GValue v;
...
v.g_type = 0;
g_value_init(&v, G_TYPE_FOO); /* or other use of the GValue */
Fix several cases of missing initializers. I don't think any of these are bugs, but having this warning seems like a good idea. It might prevent us from making a mistake in the future.
While I was fixing missing initializers, I optimized substitute_simple_word in plugins/spellchk.c, in the same way as I did substitute_word before. Yes, I'm bad for committing these together.
Added a --enable-fatal-asserts flag to configure. As the name implies, this makes g_return_... guards fatal. This is a useful flag to run on a debug copy of Gaim. It will make it very clear if your changes have triggered one of these guards. It's also useful in detecting g_return_... abuse, which helps prevent crashes if Gaim is compiled with G_DISABLE_ASSERT defined.
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
1 | /* |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2 | * Gaim - iChat-like timestamps |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
3 | * |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4 | * Copyright (C) 2002-2003, Sean Egan |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5 | * Copyright (C) 2003, Chris J. Friesen <Darth_Sebulba04@yahoo.com> |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6 | * |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
10 | * (at your option) any later version. |
| 4220 | 11 | * |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
15 | * GNU General Public License for more details. |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
16 | * |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
20 | * |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
21 | */ |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
22 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
23 | #include "internal.h" |
|
4202
8b92de3b1c07
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4201
diff
changeset
|
24 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
25 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
26 | #include "debug.h" |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
27 | #include "prefs.h" |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
28 | #include "signals.h" |
| 9943 | 29 | #include "version.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
30 | |
| 3598 | 31 | #include "gtkimhtml.h" |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
32 | #include "gtkplugin.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
33 | #include "gtkutils.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
34 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
35 | #define TIMESTAMP_PLUGIN_ID "gtk-timestamp" |
| 3598 | 36 | |
|
6050
7410ba1809ad
[gaim-migrate @ 6500]
Mark Doliner <markdoliner@pidgin.im>
parents:
5920
diff
changeset
|
37 | /* Set the default to 5 minutes. */ |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
38 | static int interval = 5 * 60 * 1000; |
| 3598 | 39 | |
| 9191 | 40 | static GSList *timestamp_timeouts = NULL; |
| 3598 | 41 | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
42 | static gboolean |
|
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
43 | do_timestamp(gpointer data) |
| 3598 | 44 | { |
|
5676
d3c2fdaf4821
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
45 | GaimConversation *c = (GaimConversation *)data; |
| 10389 | 46 | GaimGtkConversation *conv = GAIM_GTK_CONVERSATION(c); |
| 47 | GtkTextIter iter; | |
| 10390 | 48 | char mdate[7]; |
| 9191 | 49 | int is_conversation_active; |
| 3598 | 50 | time_t tim = time(NULL); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
51 | |
|
4376
88f8faf7cb61
[gaim-migrate @ 4642]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
52 | if (!g_list_find(gaim_get_conversations(), c)) |
| 3598 | 53 | return FALSE; |
| 54 | ||
| 9191 | 55 | /* is_conversation_active is true if an im has been displayed since the last timestamp */ |
| 56 | is_conversation_active = GPOINTER_TO_INT(gaim_conversation_get_data(c, "timestamp-conv-active")); | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
57 | |
| 9191 | 58 | if (is_conversation_active){ |
| 10400 | 59 | int y, height; |
| 60 | GdkRectangle rect; | |
| 61 | gboolean scroll = TRUE; | |
| 62 | GtkWidget *imhtml = conv->imhtml; | |
| 63 | GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(imhtml)); | |
| 10389 | 64 | gtk_text_buffer_get_end_iter(buffer, &iter); |
| 9191 | 65 | gaim_conversation_set_data(c, "timestamp-conv-active", GINT_TO_POINTER(FALSE)); |
| 10390 | 66 | strftime(mdate, sizeof(mdate), "\n%H:%M", localtime(&tim)); |
| 10400 | 67 | gtk_text_view_get_visible_rect(GTK_TEXT_VIEW(imhtml), &rect); |
| 68 | gtk_text_view_get_line_yrange(GTK_TEXT_VIEW(imhtml), &iter, &y, &height); | |
| 69 | if(((y + height) - (rect.y + rect.height)) > height | |
| 70 | && gtk_text_buffer_get_char_count(buffer)){ | |
| 71 | scroll = FALSE; | |
| 72 | } | |
| 10389 | 73 | gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, mdate, strlen(mdate), "TIMESTAMP", NULL); |
| 10400 | 74 | if (scroll) |
|
12560
d53984a3d470
[gaim-migrate @ 14879]
Richard Laager <rlaager@pidgin.im>
parents:
12559
diff
changeset
|
75 | gtk_imhtml_scroll_to_end(GTK_IMHTML(imhtml), gaim_prefs_get_bool("/gaim/gtk/conversations/use_smooth_scrolling")); |
| 9191 | 76 | } |
| 77 | else | |
| 78 | gaim_conversation_set_data(c, "timestamp-enabled", GINT_TO_POINTER(FALSE)); | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
79 | |
| 3598 | 80 | return TRUE; |
| 81 | } | |
| 82 | ||
| 9191 | 83 | |
| 84 | static gboolean | |
| 85 | timestamp_displaying_conv_msg(GaimAccount *account, GaimConversation *conv, | |
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9191
diff
changeset
|
86 | char **buffer, void *data) |
| 9191 | 87 | { |
| 88 | int is_timestamp_enabled; | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
89 | |
| 9191 | 90 | if (!g_list_find(gaim_get_conversations(), conv)) |
| 91 | return FALSE; | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
92 | |
| 9191 | 93 | /* set to true, since there has been an im since the last timestamp */ |
| 94 | gaim_conversation_set_data(conv, "timestamp-conv-active", GINT_TO_POINTER(TRUE)); | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
95 | |
| 9191 | 96 | is_timestamp_enabled = GPOINTER_TO_INT(gaim_conversation_get_data(conv, "timestamp-enabled")); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
97 | |
| 9191 | 98 | if (!is_timestamp_enabled){ |
| 99 | gaim_conversation_set_data(conv, "timestamp-enabled", GINT_TO_POINTER(TRUE)); | |
| 100 | do_timestamp((gpointer)conv); | |
| 101 | } | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
102 | |
| 9191 | 103 | return FALSE; |
| 104 | } | |
| 105 | ||
| 106 | static gboolean | |
| 107 | timestamp_receiving_msg(GaimAccount *account, char **sender, char **buffer, | |
|
10104
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9943
diff
changeset
|
108 | GaimConversation *conv, int *flags, void *data) |
| 9191 | 109 | { |
|
10104
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9943
diff
changeset
|
110 | g_return_val_if_fail(conv != NULL, FALSE); |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9943
diff
changeset
|
111 | |
|
081392879815
[gaim-migrate @ 11131]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9943
diff
changeset
|
112 | return timestamp_displaying_conv_msg(account, conv, buffer, data); |
| 9191 | 113 | } |
| 114 | ||
| 115 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
116 | static void timestamp_new_convo(GaimConversation *conv) |
| 3598 | 117 | { |
| 10389 | 118 | GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
119 | |
| 9191 | 120 | if (!g_list_find(gaim_get_conversations(), conv)) |
| 121 | return; | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
122 | |
| 10389 | 123 | gtk_imhtml_show_comments(GTK_IMHTML(c->imhtml), FALSE); |
| 124 | ||
| 9191 | 125 | /* |
| 126 | This if statement stops conversations that have already been initialized for timestamps | |
| 127 | from being reinitialized. This prevents every active conversation from immediately being spammed | |
| 128 | with a new timestamp when the user modifies the timer interval. | |
| 129 | */ | |
| 130 | if (!gaim_conversation_get_data(conv, "timestamp-initialized")){ | |
| 10389 | 131 | GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(c->imhtml)); |
| 9191 | 132 | gaim_conversation_set_data(conv, "timestamp-initialized", GINT_TO_POINTER(TRUE)); |
| 133 | gaim_conversation_set_data(conv, "timestamp-enabled", GINT_TO_POINTER(TRUE)); | |
| 134 | gaim_conversation_set_data(conv, "timestamp-conv-active", GINT_TO_POINTER(TRUE)); | |
| 10389 | 135 | gtk_text_buffer_create_tag (buffer, "TIMESTAMP", "foreground", "#888888", "justification", GTK_JUSTIFY_CENTER, |
| 136 | "weight", PANGO_WEIGHT_BOLD, NULL); | |
| 9191 | 137 | do_timestamp(conv); |
| 138 | } | |
| 4168 | 139 | |
| 3727 | 140 | timestamp_timeouts = g_slist_append(timestamp_timeouts, |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
141 | GINT_TO_POINTER(g_timeout_add(interval, do_timestamp, conv))); |
| 9191 | 142 | } |
| 3598 | 143 | |
| 9191 | 144 | |
| 145 | static void destroy_timer_list() | |
| 146 | { | |
| 147 | GSList *to; | |
| 148 | ||
| 149 | for (to = timestamp_timeouts; to != NULL; to = to->next) | |
| 150 | g_source_remove(GPOINTER_TO_INT(to->data)); | |
| 151 | ||
| 152 | g_slist_free(timestamp_timeouts); | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
153 | |
| 9191 | 154 | timestamp_timeouts = NULL; |
| 3598 | 155 | } |
| 4220 | 156 | |
| 9191 | 157 | static void init_timer_list() |
| 158 | { | |
| 159 | GList *cnvs; | |
| 160 | GaimConversation *c; | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
161 | |
| 9191 | 162 | if (timestamp_timeouts != NULL) |
| 163 | destroy_timer_list(); | |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
164 | |
| 9191 | 165 | for (cnvs = gaim_get_conversations(); cnvs != NULL; cnvs = cnvs->next) { |
| 166 | c = cnvs->data; | |
| 167 | timestamp_new_convo(c); | |
| 168 | } | |
| 169 | } | |
| 170 | ||
| 171 | ||
| 172 | ||
| 11740 | 173 | static void set_timestamp(GtkWidget *spinner, void *null) { |
| 4220 | 174 | int tm; |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
175 | |
|
12204
77be85a65fe8
[gaim-migrate @ 14506]
Richard Laager <rlaager@pidgin.im>
parents:
11740
diff
changeset
|
176 | tm = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinner)); |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
177 | gaim_debug(GAIM_DEBUG_MISC, "timestamp", "setting time to %d mins\n", tm); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
178 | |
|
12204
77be85a65fe8
[gaim-migrate @ 14506]
Richard Laager <rlaager@pidgin.im>
parents:
11740
diff
changeset
|
179 | interval = tm * 60 * 1000; |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
180 | gaim_prefs_set_int("/plugins/gtk/timestamp/interval", interval); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
181 | |
| 9191 | 182 | destroy_timer_list(); |
| 183 | init_timer_list(); | |
| 4220 | 184 | } |
| 185 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
186 | static GtkWidget * |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
187 | get_config_frame(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
188 | { |
| 4220 | 189 | GtkWidget *ret; |
| 190 | GtkWidget *frame, *label; | |
| 191 | GtkWidget *vbox, *hbox; | |
| 192 | GtkAdjustment *adj; | |
| 11740 | 193 | GtkWidget *spinner; |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
194 | |
| 4220 | 195 | ret = gtk_vbox_new(FALSE, 18); |
| 196 | gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
| 197 | ||
|
5530
ba1ad464b56f
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5314
diff
changeset
|
198 | frame = gaim_gtk_make_frame(ret, _("iChat Timestamp")); |
| 4220 | 199 | vbox = gtk_vbox_new(FALSE, 5); |
| 200 | gtk_container_add(GTK_CONTAINER(frame), vbox); | |
| 201 | ||
| 202 | hbox = gtk_hbox_new(FALSE, 5); | |
| 203 | gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
| 204 | ||
| 4586 | 205 | label = gtk_label_new(_("Delay")); |
| 4220 | 206 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
207 | |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
208 | adj = (GtkAdjustment *)gtk_adjustment_new(interval/(60*1000), 1, G_MAXINT, 1, 0, 0); |
| 4220 | 209 | spinner = gtk_spin_button_new(adj, 0, 0); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
210 | gtk_box_pack_start(GTK_BOX(hbox), spinner, TRUE, TRUE, 0); |
| 11740 | 211 | g_signal_connect(G_OBJECT(spinner), "value-changed", G_CALLBACK(set_timestamp), NULL); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
212 | label = gtk_label_new(_("minutes.")); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
213 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
| 4220 | 214 | |
| 215 | gtk_widget_show_all(ret); | |
| 216 | return ret; | |
| 217 | } | |
| 218 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
219 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
220 | plugin_load(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
221 | { |
| 9191 | 222 | void *conv_handle = gaim_conversations_get_handle(); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
223 | |
| 9191 | 224 | init_timer_list(); |
| 3598 | 225 | |
| 9191 | 226 | gaim_signal_connect(conv_handle, "conversation-created", |
| 227 | plugin, GAIM_CALLBACK(timestamp_new_convo), NULL); | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
228 | |
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9191
diff
changeset
|
229 | /* record IM display events for each conversation */ |
| 9191 | 230 | gaim_signal_connect(conv_handle, "receiving-im-msg", |
| 231 | plugin, GAIM_CALLBACK(timestamp_receiving_msg), NULL); | |
| 232 | gaim_signal_connect(conv_handle, "displaying-im-msg", | |
| 233 | plugin, GAIM_CALLBACK(timestamp_displaying_conv_msg), NULL); | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
234 | |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
235 | interval = gaim_prefs_get_int("/plugins/gtk/timestamp/interval"); |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
236 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
237 | return TRUE; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
238 | } |
| 3598 | 239 | |
| 9191 | 240 | |
| 241 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
242 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
243 | plugin_unload(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
244 | { |
| 10389 | 245 | GList *cnvs; |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
246 | |
| 9191 | 247 | destroy_timer_list(); |
| 10389 | 248 | |
| 249 | for (cnvs = gaim_get_conversations(); cnvs != NULL; cnvs = cnvs->next) { | |
| 250 | GaimConversation *c = cnvs->data; | |
| 251 | GaimGtkConversation *conv = GAIM_GTK_CONVERSATION(c); | |
| 252 | gtk_imhtml_show_comments(GTK_IMHTML(conv->imhtml), TRUE); | |
| 253 | } | |
| 254 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
255 | return TRUE; |
| 3598 | 256 | } |
| 257 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
258 | static GaimGtkPluginUiInfo ui_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
259 | { |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12560
diff
changeset
|
260 | get_config_frame, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12560
diff
changeset
|
261 | 0 /* page_num (Reserved) */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
262 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
263 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
264 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
265 | { |
| 9943 | 266 | GAIM_PLUGIN_MAGIC, |
| 267 | GAIM_MAJOR_VERSION, | |
| 268 | GAIM_MINOR_VERSION, | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
269 | GAIM_PLUGIN_STANDARD, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
270 | GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
271 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
272 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
273 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
274 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
275 | TIMESTAMP_PLUGIN_ID, /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
276 | N_("Timestamp"), /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
277 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
278 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
279 | N_("Adds iChat-style timestamps to conversations every N minutes."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
280 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
281 | N_("Adds iChat-style timestamps to conversations every N minutes."), |
|
12406
89863d2d9b8d
[gaim-migrate @ 14713]
Richard Laager <rlaager@pidgin.im>
parents:
12204
diff
changeset
|
282 | "Sean Egan <seanegan@gmail.com>", /**< author */ |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
283 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
284 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
285 | plugin_load, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
286 | plugin_unload, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
287 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
288 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
289 | &ui_info, /**< ui_info */ |
| 8993 | 290 | NULL, /**< extra_info */ |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10400
diff
changeset
|
291 | NULL, |
| 8993 | 292 | NULL |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
293 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
294 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
295 | static void |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
296 | init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4586
diff
changeset
|
297 | { |
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
298 | gaim_prefs_add_none("/plugins/gtk/timestamp"); |
|
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
299 | gaim_prefs_add_int("/plugins/gtk/timestamp/interval", interval); |
| 3598 | 300 | } |
| 301 | ||
|
7237
da128ba7a4de
[gaim-migrate @ 7812]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
302 | GAIM_INIT_PLUGIN(interval, init_plugin, info) |