Tue, 07 May 2013 05:04:46 -0400
Rewrite debug window filter in JS.
Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.
I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.
| 12737 | 1 | #include "internal.h" |
| 2 | ||
| 3 | #include "debug.h" | |
| 4 | #include "log.h" | |
| 5 | #include "plugin.h" | |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13090
diff
changeset
|
6 | #include "util.h" |
| 12737 | 7 | #include "version.h" |
| 8 | ||
| 9 | #include "gtkconv.h" | |
| 10 | #include "gtkplugin.h" | |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
11 | #include "gtkimhtml.h" |
| 12737 | 12 | |
|
12851
96079cc66acf
[gaim-migrate @ 15201]
Richard Laager <rlaager@pidgin.im>
parents:
12848
diff
changeset
|
13 | #include <time.h> |
|
96079cc66acf
[gaim-migrate @ 15201]
Richard Laager <rlaager@pidgin.im>
parents:
12848
diff
changeset
|
14 | |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
15 | static const char *format_12hour_hour(const struct tm *tm) |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
16 | { |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
17 | static char hr[3]; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
18 | int hour = tm->tm_hour % 12; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
19 | if (hour == 0) |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
20 | hour = 12; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
21 | |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
22 | g_snprintf(hr, sizeof(hr), "%d", hour); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
23 | return hr; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
24 | } |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
25 | |
| 15884 | 26 | static PurplePluginPrefFrame * |
| 27 | get_plugin_pref_frame(PurplePlugin *plugin) | |
| 12737 | 28 | { |
| 15884 | 29 | PurplePluginPrefFrame *frame; |
| 30 | PurplePluginPref *ppref; | |
|
16073
e70e589dde54
more help for translators (I removed a few PIDGIN_NAME references
Nathan Walp <nwalp@pidgin.im>
parents:
15939
diff
changeset
|
31 | char *tmp; |
| 12737 | 32 | |
| 15884 | 33 | frame = purple_plugin_pref_frame_new(); |
| 12737 | 34 | |
| 15884 | 35 | ppref = purple_plugin_pref_new_with_label(_("Timestamp Format Options")); |
| 36 | purple_plugin_pref_frame_add(frame, ppref); | |
| 12737 | 37 | |
| 33740 | 38 | tmp = g_strdup(_("_Force timestamp format:")); |
| 15884 | 39 | ppref = purple_plugin_pref_new_with_name_and_label( |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
40 | "/plugins/gtk/timestamp_format/force", |
|
16073
e70e589dde54
more help for translators (I removed a few PIDGIN_NAME references
Nathan Walp <nwalp@pidgin.im>
parents:
15939
diff
changeset
|
41 | tmp); |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
42 | purple_plugin_pref_set_type(ppref, PURPLE_PLUGIN_PREF_CHOICE); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
43 | purple_plugin_pref_add_choice(ppref, _("Use system default"), "default"); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
44 | purple_plugin_pref_add_choice(ppref, _("12 hour time format"), "force12"); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
45 | purple_plugin_pref_add_choice(ppref, _("24 hour time format"), "force24"); |
| 15884 | 46 | purple_plugin_pref_frame_add(frame, ppref); |
|
16073
e70e589dde54
more help for translators (I removed a few PIDGIN_NAME references
Nathan Walp <nwalp@pidgin.im>
parents:
15939
diff
changeset
|
47 | g_free(tmp); |
| 12737 | 48 | |
| 15884 | 49 | ppref = purple_plugin_pref_new_with_label(_("Show dates in...")); |
| 50 | purple_plugin_pref_frame_add(frame, ppref); | |
| 12737 | 51 | |
| 15884 | 52 | ppref = purple_plugin_pref_new_with_name_and_label( |
| 12737 | 53 | "/plugins/gtk/timestamp_format/use_dates/conversation", |
| 54 | _("Co_nversations:")); | |
| 15884 | 55 | purple_plugin_pref_set_type(ppref, PURPLE_PLUGIN_PREF_CHOICE); |
| 56 | purple_plugin_pref_add_choice(ppref, _("For delayed messages"), "automatic"); | |
| 57 | purple_plugin_pref_add_choice(ppref, _("For delayed messages and in chats"), "chats"); | |
| 58 | purple_plugin_pref_add_choice(ppref, _("Always"), "always"); | |
| 59 | purple_plugin_pref_frame_add(frame, ppref); | |
| 12737 | 60 | |
| 15884 | 61 | ppref = purple_plugin_pref_new_with_name_and_label( |
| 12737 | 62 | "/plugins/gtk/timestamp_format/use_dates/log", |
|
12848
a6cc4c3c950f
[gaim-migrate @ 15198]
Richard Laager <rlaager@pidgin.im>
parents:
12737
diff
changeset
|
63 | _("_Message Logs:")); |
| 15884 | 64 | purple_plugin_pref_set_type(ppref, PURPLE_PLUGIN_PREF_CHOICE); |
| 65 | purple_plugin_pref_add_choice(ppref, _("For delayed messages"), "automatic"); | |
| 66 | purple_plugin_pref_add_choice(ppref, _("For delayed messages and in chats"), "chats"); | |
| 67 | purple_plugin_pref_add_choice(ppref, _("Always"), "always"); | |
| 68 | purple_plugin_pref_frame_add(frame, ppref); | |
| 12737 | 69 | |
| 70 | return frame; | |
| 71 | } | |
| 72 | ||
| 15884 | 73 | static char *timestamp_cb_common(PurpleConversation *conv, |
|
14049
c15c41423e19
[gaim-migrate @ 16559]
Richard Laager <rlaager@pidgin.im>
parents:
13115
diff
changeset
|
74 | time_t t, |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15562
diff
changeset
|
75 | gboolean show_date, |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
76 | const char *force, |
| 16865 | 77 | const char *dates, |
| 78 | gboolean parens) | |
| 12737 | 79 | { |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
80 | struct tm *tm; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
81 | |
| 12737 | 82 | g_return_val_if_fail(dates != NULL, NULL); |
| 83 | ||
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
84 | tm = localtime(&t); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
85 | |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15562
diff
changeset
|
86 | if (show_date || |
|
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15562
diff
changeset
|
87 | !strcmp(dates, "always") || |
| 15884 | 88 | (conv != NULL && purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT && !strcmp(dates, "chats"))) |
| 12737 | 89 | { |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
90 | if (g_str_equal(force, "force24")) |
| 16865 | 91 | return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_utf8_strftime("%Y-%m-%d %H:%M:%S", tm), parens ? ")" : ""); |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
92 | else if (g_str_equal(force, "force12")) { |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
93 | char *date = g_strdup_printf("%s", purple_utf8_strftime("%Y-%m-%d ", tm)); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
94 | char *remtime = g_strdup_printf("%s", purple_utf8_strftime(":%M:%S %p", tm)); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
95 | const char *hour = format_12hour_hour(tm); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
96 | char *output; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
97 | |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
98 | output = g_strdup_printf("%s%s%s%s%s", |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
99 | parens ? "(" : "", date, |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
100 | hour, remtime, parens ? ")" : ""); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
101 | |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
102 | g_free(date); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
103 | g_free(remtime); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
104 | |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
105 | return output; |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
106 | } else |
| 16865 | 107 | return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_date_format_long(tm), parens ? ")" : ""); |
| 12737 | 108 | } |
| 109 | ||
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
110 | if (g_str_equal(force, "force24")) |
| 16865 | 111 | return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_utf8_strftime("%H:%M:%S", tm), parens ? ")" : ""); |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
112 | else if (g_str_equal(force, "force12")) { |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
113 | const char *hour = format_12hour_hour(tm); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
114 | char *remtime = g_strdup_printf("%s", purple_utf8_strftime(":%M:%S %p", tm)); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
115 | char *output = g_strdup_printf("%s%s%s%s", parens ? "(" : "", hour, remtime, parens ? ")" : ""); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
116 | |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
117 | g_free(remtime); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
118 | |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
119 | return output; |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15562
diff
changeset
|
120 | } |
| 12737 | 121 | |
| 122 | return NULL; | |
| 123 | } | |
| 124 | ||
| 15884 | 125 | static char *conversation_timestamp_cb(PurpleConversation *conv, |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15562
diff
changeset
|
126 | time_t t, gboolean show_date, gpointer data) |
| 12737 | 127 | { |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
128 | const char *force = purple_prefs_get_string( |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
129 | "/plugins/gtk/timestamp_format/force"); |
| 15884 | 130 | const char *dates = purple_prefs_get_string( |
| 12737 | 131 | "/plugins/gtk/timestamp_format/use_dates/conversation"); |
|
13054
6d323387986e
[gaim-migrate @ 15416]
Richard Laager <rlaager@pidgin.im>
parents:
12851
diff
changeset
|
132 | |
|
6d323387986e
[gaim-migrate @ 15416]
Richard Laager <rlaager@pidgin.im>
parents:
12851
diff
changeset
|
133 | g_return_val_if_fail(conv != NULL, NULL); |
|
6d323387986e
[gaim-migrate @ 15416]
Richard Laager <rlaager@pidgin.im>
parents:
12851
diff
changeset
|
134 | |
| 16865 | 135 | return timestamp_cb_common(conv, t, show_date, force, dates, TRUE); |
| 12737 | 136 | } |
| 137 | ||
| 15884 | 138 | static char *log_timestamp_cb(PurpleLog *log, time_t t, gboolean show_date, gpointer data) |
| 12737 | 139 | { |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
140 | const char *force = purple_prefs_get_string( |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
141 | "/plugins/gtk/timestamp_format/force"); |
| 15884 | 142 | const char *dates = purple_prefs_get_string( |
| 12737 | 143 | "/plugins/gtk/timestamp_format/use_dates/log"); |
| 144 | ||
|
13054
6d323387986e
[gaim-migrate @ 15416]
Richard Laager <rlaager@pidgin.im>
parents:
12851
diff
changeset
|
145 | g_return_val_if_fail(log != NULL, NULL); |
|
6d323387986e
[gaim-migrate @ 15416]
Richard Laager <rlaager@pidgin.im>
parents:
12851
diff
changeset
|
146 | |
| 16865 | 147 | return timestamp_cb_common(log->conv, t, show_date, force, dates, FALSE); |
| 12737 | 148 | } |
| 149 | ||
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
150 | static void |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
151 | menu_cb(GtkWidget *item, gpointer data) |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
152 | { |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
153 | PurplePlugin *plugin = data; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
154 | GtkWidget *frame = pidgin_plugin_get_config_frame(plugin), *dialog; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
155 | if (!frame) |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
156 | return; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
157 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
158 | dialog = gtk_dialog_new_with_buttons(PIDGIN_ALERT_TITLE, NULL, |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
159 | GTK_DIALOG_DESTROY_WITH_PARENT, |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
160 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
161 | NULL); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
162 | g_signal_connect_after(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), dialog); |
|
30010
2b3e5bbd0492
Prepare Pidgin plugins for GTK+3.0. They're almost GSeal-compliant, except
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30000
diff
changeset
|
163 | gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), frame); |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
164 | gtk_window_set_role(GTK_WINDOW(dialog), "plugin_config"); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
165 | gtk_window_set_title(GTK_WINDOW(dialog), _(purple_plugin_get_name(plugin))); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
166 | gtk_widget_show_all(dialog); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
167 | } |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
168 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
169 | static gboolean |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
170 | textview_emission_hook(GSignalInvocationHint *hint, guint n_params, |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
171 | const GValue *pvalues, gpointer data) |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
172 | { |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
173 | GtkTextView *view = GTK_TEXT_VIEW(g_value_get_object(pvalues)); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
174 | GtkWidget *menu, *item; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
175 | GtkTextBuffer *buffer; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
176 | GtkTextIter cursor; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
177 | int cx, cy, bx, by; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
178 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
179 | if (!GTK_IS_IMHTML(view)) |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
180 | return TRUE; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
181 | |
|
30010
2b3e5bbd0492
Prepare Pidgin plugins for GTK+3.0. They're almost GSeal-compliant, except
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30000
diff
changeset
|
182 | if (!gdk_window_get_pointer(gtk_widget_get_window(GTK_WIDGET(view)), &cx, &cy, NULL)) |
|
2b3e5bbd0492
Prepare Pidgin plugins for GTK+3.0. They're almost GSeal-compliant, except
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30000
diff
changeset
|
183 | return TRUE; |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
184 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
185 | buffer = gtk_text_view_get_buffer(view); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
186 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
187 | gtk_text_view_window_to_buffer_coords(view, GTK_TEXT_WINDOW_TEXT, cx, cy, &bx, &by); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
188 | gtk_text_view_get_iter_at_location(view, &cursor, bx, by); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
189 | if (!gtk_text_iter_has_tag(&cursor, |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
190 | gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buffer), "comment"))) |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
191 | return TRUE; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
192 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
193 | menu = g_value_get_object(&pvalues[1]); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
194 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
195 | item = gtk_menu_item_new_with_label(_("Timestamp Format Options")); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
196 | gtk_widget_show_all(item); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
197 | g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(menu_cb), data); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
198 | gtk_menu_shell_insert(GTK_MENU_SHELL(menu), item, 0); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
199 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
200 | item = gtk_separator_menu_item_new(); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
201 | gtk_widget_show(item); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
202 | gtk_menu_shell_insert(GTK_MENU_SHELL(menu), item, 1); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
203 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
204 | return TRUE; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
205 | } |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
206 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
207 | static guint signal_id; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
208 | static gulong hook_id; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
209 | |
| 12737 | 210 | static gboolean |
| 15884 | 211 | plugin_load(PurplePlugin *plugin) |
| 12737 | 212 | { |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
213 | gpointer klass = NULL; |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
214 | |
| 15884 | 215 | purple_signal_connect(pidgin_conversations_get_handle(), "conversation-timestamp", |
| 216 | plugin, PURPLE_CALLBACK(conversation_timestamp_cb), NULL); | |
| 217 | purple_signal_connect(purple_log_get_handle(), "log-timestamp", | |
| 218 | plugin, PURPLE_CALLBACK(log_timestamp_cb), NULL); | |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
219 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
220 | klass = g_type_class_ref(GTK_TYPE_TEXT_VIEW); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
221 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
222 | /* In 3.0.0, use purple_g_signal_connect_flags */ |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
223 | g_signal_parse_name("populate_popup", GTK_TYPE_TEXT_VIEW, &signal_id, NULL, FALSE); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
224 | hook_id = g_signal_add_emission_hook(signal_id, 0, textview_emission_hook, |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
225 | plugin, NULL); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
226 | |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
227 | g_type_class_unref(klass); |
|
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
228 | |
| 12737 | 229 | return TRUE; |
| 230 | } | |
| 231 | ||
| 232 | static gboolean | |
| 15884 | 233 | plugin_unload(PurplePlugin *plugin) |
| 12737 | 234 | { |
|
30000
a6ceec33f2c1
Add a context option for the timestamps in the conversation log.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20288
diff
changeset
|
235 | g_signal_remove_emission_hook(signal_id, hook_id); |
| 12737 | 236 | return TRUE; |
| 237 | } | |
| 238 | ||
| 15884 | 239 | static PurplePluginUiInfo prefs_info = { |
| 12737 | 240 | get_plugin_pref_frame, |
| 241 | 0, /* page num (Reserved) */ | |
|
16749
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
242 | NULL,/* frame (Reserved) */ |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
243 | |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
244 | /* padding */ |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
245 | NULL, |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
246 | NULL, |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
247 | NULL, |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
248 | NULL |
| 12737 | 249 | }; |
| 250 | ||
| 15884 | 251 | static PurplePluginInfo info = |
| 12737 | 252 | { |
| 15884 | 253 | PURPLE_PLUGIN_MAGIC, |
| 254 | PURPLE_MAJOR_VERSION, | |
| 255 | PURPLE_MINOR_VERSION, | |
|
15939
efc69ea48720
The Message Timestamp Formats plugin lacked an ID before.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
256 | PURPLE_PLUGIN_STANDARD, /**< type */ |
|
15575
bd1e13b63e4b
In Pidgin, display a full date on the timestamp of the first message to
Richard Laager <rlaager@pidgin.im>
parents:
15562
diff
changeset
|
257 | PIDGIN_PLUGIN_TYPE, /**< ui_requirement */ |
| 12737 | 258 | 0, /**< flags */ |
| 259 | NULL, /**< dependencies */ | |
|
15939
efc69ea48720
The Message Timestamp Formats plugin lacked an ID before.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
260 | PURPLE_PRIORITY_DEFAULT, /**< priority */ |
| 12737 | 261 | |
|
15939
efc69ea48720
The Message Timestamp Formats plugin lacked an ID before.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
262 | "core-timestamp_format", /**< id */ |
| 12737 | 263 | N_("Message Timestamp Formats"), /**< name */ |
|
20288
5ca925a094e2
applied changes from 03b709ec2a153e7e82719df0ba4635108bb1d3c6
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
16976
diff
changeset
|
264 | DISPLAY_VERSION, /**< version */ |
| 12737 | 265 | /** summary */ |
| 266 | N_("Customizes the message timestamp formats."), | |
| 267 | /** description */ | |
| 268 | N_("This plugin allows the user to customize " | |
| 269 | "conversation and logging message timestamp " | |
| 270 | "formats."), | |
|
15629
a2261cb315e2
Switching to my pidgin.im e-mail address, which I think fits nicely and seems professional.
Richard Laager <rlaager@pidgin.im>
parents:
15626
diff
changeset
|
271 | "Richard Laager <rlaager@pidgin.im>", /**< author */ |
|
15939
efc69ea48720
The Message Timestamp Formats plugin lacked an ID before.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
272 | PURPLE_WEBSITE, /**< homepage */ |
| 12737 | 273 | |
| 274 | plugin_load, /**< load */ | |
| 275 | plugin_unload, /**< unload */ | |
| 276 | NULL, /**< destroy */ | |
| 277 | ||
| 278 | NULL, /**< ui_info */ | |
| 279 | NULL, /**< extra_info */ | |
| 280 | &prefs_info, /**< prefs_info */ | |
|
16749
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
281 | NULL, /**< actions */ |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
282 | |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
283 | /* padding */ |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
284 | NULL, |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
285 | NULL, |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
286 | NULL, |
|
14a3fdc0aed7
Default plugins are done, for the release i'm not that concerned about plugins that do _NOT_ compile by default
Gary Kramlich <grim@reaperworld.com>
parents:
16073
diff
changeset
|
287 | NULL |
| 12737 | 288 | }; |
| 289 | ||
| 290 | static void | |
| 15884 | 291 | init_plugin(PurplePlugin *plugin) |
| 12737 | 292 | { |
| 15884 | 293 | purple_prefs_add_none("/plugins/gtk"); |
| 294 | purple_prefs_add_none("/plugins/gtk/timestamp_format"); | |
| 12737 | 295 | |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
296 | if (!purple_prefs_exists("/plugins/gtk/timestamp_format/force") && |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
297 | purple_prefs_exists("/plugins/gtk/timestamp_format/force_24hr")) |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
298 | { |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
299 | if (purple_prefs_get_bool( |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
300 | "/plugins/gtk/timestamp_format/force_24hr")) |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
301 | purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "force24"); |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
302 | else |
|
30062
0ede207843b0
timestamp formats: Default to the 'default' ones (as pointed out by Jonathan)
Paul Aurich <darkrain42@pidgin.im>
parents:
30061
diff
changeset
|
303 | purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "default"); |
|
30061
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
304 | } |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
305 | else |
|
0b85fd231104
timestamp formats: Allow forcing 12-hour time formats. Closes #11667.
Jonathan Maltz <jemaltz@gmail.com>
parents:
30010
diff
changeset
|
306 | purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "default"); |
| 12737 | 307 | |
| 15884 | 308 | purple_prefs_add_none("/plugins/gtk/timestamp_format/use_dates"); |
| 309 | purple_prefs_add_string("/plugins/gtk/timestamp_format/use_dates/conversation", "automatic"); | |
| 310 | purple_prefs_add_string("/plugins/gtk/timestamp_format/use_dates/log", "automatic"); | |
| 12737 | 311 | } |
| 312 | ||
| 15884 | 313 | PURPLE_INIT_PLUGIN(timestamp_format, init_plugin, info) |