annotate finch/plugins/gnttinyurl.c @ 29511:89a523641c64

This change is probably going to be unpopular, but I ask that people give it a chance before blindly reverting it. This shortens and changes a bunch of the text from the About box. I think it's better this way, as the text we had before was insanely long when this shorter text gets the same message across. This also reorganizes some of the help resources we listed (IRC channel, FAQ, etc). This should finish addressing the complaints that prompted me to start looking at this dialog and chopping stuff out of it.
author John Bailey <rekkanoryo@rekkanoryo.org>
date Sat, 03 Oct 2009 20:49:02 +0000
parents 7eaf2561b6dd
children 6b328370cad0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
1 /**
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
2 * @file gnttinyurl.c
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
3 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
4 * Copyright (C) 2009 Richard Nelson <wabz@whatsbeef.net>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
5 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
9 * (at your option) any later version.
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
10 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
14 * GNU General Public License for more details.
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
15 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
19 */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
20
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
21
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
22 #include "internal.h"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
23 #include <glib.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
24
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
25 #define PLUGIN_STATIC_NAME TinyURL
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
26 #define PREFS_BASE "/plugins/gnt/tinyurl"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
27 #define PREF_LENGTH PREFS_BASE "/length"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
28 #define PREF_URL PREFS_BASE "/url"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
29
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
30
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
31 #include <conversation.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
32 #include <signals.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
33
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
34 #include <glib.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
35
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
36 #include <plugin.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
37 #include <version.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
38 #include <debug.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
39 #include <notify.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
40
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
41 #include <gntconv.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
42
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
43 #include <gntplugin.h>
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
44
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
45 #include <gntlabel.h>
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
46 #include <gnttextview.h>
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
47 #include <gntwindow.h>
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
48
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
49 static int tag_num = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
50
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
51 typedef struct
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
52 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
53 PurpleConversation *conv;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
54 gchar *tag;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
55 int num;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
56 } CbInfo;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
57
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
58 static void process_urls(PurpleConversation *conv, GList *urls);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
59
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
60 /* 3 functions from util.c */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
61 static gboolean
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
62 badchar(char c)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
63 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
64 switch (c) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
65 case ' ':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
66 case ',':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
67 case '\0':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
68 case '\n':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
69 case '\r':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
70 case '<':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
71 case '>':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
72 case '"':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
73 case '\'':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
74 return TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
75 default:
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
76 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
77 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
78 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
79
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
80 static gboolean
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
81 badentity(const char *c)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
82 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
83 if (!g_ascii_strncasecmp(c, "&lt;", 4) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
84 !g_ascii_strncasecmp(c, "&gt;", 4) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
85 !g_ascii_strncasecmp(c, "&quot;", 6)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
86 return TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
87 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
88 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
89 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
90
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
91 static GList *extract_urls(const char *text)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
92 {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
93 const char *t, *c, *q = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
94 char *url_buf;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
95 GList *ret = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
96 gboolean inside_html = FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
97 int inside_paren = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
98 c = text;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
99 while (*c) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
100 if (*c == '(' && !inside_html) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
101 inside_paren++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
102 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
103 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
104 if (inside_html) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
105 if (*c == '>') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
106 inside_html = FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
107 } else if (!q && (*c == '\"' || *c == '\'')) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
108 q = c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
109 } else if(q) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
110 if(*c == *q)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
111 q = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
112 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
113 } else if (*c == '<') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
114 inside_html = TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
115 if (!g_ascii_strncasecmp(c, "<A", 2)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
116 while (1) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
117 if (*c == '>') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
118 inside_html = FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
119 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
120 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
121 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
122 if (!(*c))
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
123 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
124 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
125 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
126 } else if ((*c=='h') && (!g_ascii_strncasecmp(c, "http://", 7) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
127 (!g_ascii_strncasecmp(c, "https://", 8)))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
128 t = c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
129 while (1) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
130 if (badchar(*t) || badentity(t)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
131
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
132 if ((!g_ascii_strncasecmp(c, "http://", 7) && (t - c == 7)) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
133 (!g_ascii_strncasecmp(c, "https://", 8) && (t - c == 8))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
134 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
135 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
136
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
137 if (*(t) == ',' && (*(t + 1) != ' ')) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
138 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
139 continue;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
140 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
141
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
142 if (*(t - 1) == '.')
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
143 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
144 if ((*(t - 1) == ')' && (inside_paren > 0))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
145 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
146 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
147
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
148 url_buf = g_strndup(c, t - c);
26584
f9a923fde1e4 Remove usage of g_strcmp0 (which would bump the glib version requirement) where strcmp will do nicely
Richard Nelson <wabz@pidgin.im>
parents: 26582
diff changeset
149 if (!g_list_find_custom(ret, url_buf, (GCompareFunc)strcmp)) {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
150 purple_debug_info("TinyURL", "Added URL %s\n", url_buf);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
151 ret = g_list_append(ret, g_strdup(url_buf));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
152 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
153 c = t;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
154 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
155 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
156 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
157
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
158 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
159 } else if (!g_ascii_strncasecmp(c, "www.", 4) && (c == text || badchar(c[-1]) || badentity(c-1))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
160 if (c[4] != '.') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
161 t = c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
162 while (1) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
163 if (badchar(*t) || badentity(t)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
164 if (t - c == 4) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
165 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
166 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
167
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
168 if (*(t) == ',' && (*(t + 1) != ' ')) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
169 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
170 continue;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
171 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
172
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
173 if (*(t - 1) == '.')
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
174 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
175 if ((*(t - 1) == ')' && (inside_paren > 0))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
176 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
177 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
178 url_buf = g_strndup(c, t - c);
26584
f9a923fde1e4 Remove usage of g_strcmp0 (which would bump the glib version requirement) where strcmp will do nicely
Richard Nelson <wabz@pidgin.im>
parents: 26582
diff changeset
179 if (!g_list_find_custom(ret, url_buf, (GCompareFunc)strcmp)) {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
180 purple_debug_info("TinyURL", "Added URL %s\n", url_buf);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
181 ret = g_list_append(ret, url_buf);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
182 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
183 c = t;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
184 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
185 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
186 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
187 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
188 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
189 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
190 if (*c == ')' && !inside_html) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
191 inside_paren--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
192 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
193 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
194 if (*c == 0)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
195 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
196 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
197 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
198 return ret;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
199 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
200
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
201 static void url_fetched(PurpleUtilFetchUrlData *url_data, gpointer cb_data,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
202 const gchar *url_text, gsize len, const gchar *error_message)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
203 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
204 CbInfo *data = (CbInfo *)cb_data;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
205 PurpleConversation *conv = data->conv;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
206 GList *convs = purple_get_conversations();
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
207 /* ensure the conversation still exists */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
208 for (; convs; convs = convs->next) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
209 if ((PurpleConversation *)(convs->data) == conv) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
210 FinchConv *fconv = FINCH_CONV(conv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
211 gchar *str = g_strdup_printf("[%d] %s", data->num, url_text);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
212 GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
213 gnt_text_view_tag_change(tv, data->tag, str, FALSE);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
214 g_free(str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
215 g_free(data->tag);
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
216 g_free(data);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
217 return;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
218 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
219 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
220 g_free(data->tag);
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
221 g_free(data);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
222 purple_debug_info("TinyURL", "Conversation no longer exists... :(\n");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
223 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
224
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
225 static void free_urls(gpointer data, gpointer null)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
226 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
227 g_free(data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
228 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
229
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
230 static gboolean writing_msg(PurpleAccount *account, char *sender, char **message,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
231 PurpleConversation *conv, PurpleMessageFlags flags)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
232 {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
233 GString *t;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
234 GList *iter, *urls;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
235 int c = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
236
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
237 if ((flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_INVISIBLE)))
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
238 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
239
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
240 urls = purple_conversation_get_data(conv, "TinyURLs");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
241 if (urls != NULL) /* message was cancelled somewhere? Reset. */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
242 g_list_foreach(urls, free_urls, NULL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
243 g_list_free(urls);
27031
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
244 urls = extract_urls(*message);
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
245 if (!urls)
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
246 return FALSE;
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
247
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
248 t = g_string_new(*message);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
249 g_free(*message);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
250 for (iter = urls; iter; iter = iter->next) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
251 if (g_utf8_strlen((char *)iter->data, -1) >= purple_prefs_get_int(PREF_LENGTH)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
252 int pos, x = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
253 gchar *j, *s, *str, *orig;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
254 glong len = g_utf8_strlen(iter->data, -1);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
255 s = g_strdup(t->str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
256 orig = s;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
257 str = g_strdup_printf("[%d]", ++c);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
258 while ((j = strstr(s, iter->data))) { /* replace all occurrences */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
259 pos = j - orig + (x++ * 3);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
260 s = j + len;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
261 t = g_string_insert(t, pos + len, str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
262 if (*s == '\0') break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
263 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
264 g_free(orig);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
265 g_free(str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
266 continue;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
267 } else {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
268 if (iter->prev) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
269 iter = iter->prev;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
270 g_free(iter->next->data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
271 urls = g_list_delete_link(urls, iter->next);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
272 } else {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
273 g_free(iter->data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
274 g_list_free(urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
275 urls = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
276 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
277 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
278 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
279 *message = t->str;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
280 g_string_free(t, FALSE);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
281 if (conv == NULL)
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
282 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
283 purple_conversation_set_data(conv, "TinyURLs", urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
284 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
285 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
286
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
287 static void wrote_msg(PurpleAccount *account, char *sender, char *message,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
288 PurpleConversation *conv, PurpleMessageFlags flags)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
289 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
290 GList *urls;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
291
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
292 urls = purple_conversation_get_data(conv, "TinyURLs");
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
293 if ((flags & PURPLE_MESSAGE_SEND) || urls == NULL)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
294 return;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
295
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
296 process_urls(conv, urls);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
297 purple_conversation_set_data(conv, "TinyURLs", NULL);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
298 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
299
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
300 /* Frees 'urls' */
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
301 static void
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
302 process_urls(PurpleConversation *conv, GList *urls)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
303 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
304 GList *iter;
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
305 int c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
306 FinchConv *fconv = FINCH_CONV(conv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
307 GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
308
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
309 for (iter = urls, c = 0; iter; iter = iter->next) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
310 int i;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
311 CbInfo *cbdata;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
312 gchar *url, *str, *tmp;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
313 cbdata = g_new(CbInfo, 1);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
314 cbdata->num = ++c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
315 cbdata->tag = g_strdup_printf("%s%d", "tiny_", tag_num++);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
316 cbdata->conv = conv;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
317 tmp = purple_unescape_html((char *)iter->data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
318 if (g_ascii_strncasecmp(tmp, "http://", 7) && g_ascii_strncasecmp(tmp, "https://", 8)) {
26589
c5920a8cf83f encode urls passed to tinyurl
Richard Nelson <wabz@pidgin.im>
parents: 26584
diff changeset
319 url = g_strdup_printf("%shttp%%3A%%2F%%2F%s", purple_prefs_get_string(PREF_URL), purple_url_encode(tmp));
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
320 } else {
26589
c5920a8cf83f encode urls passed to tinyurl
Richard Nelson <wabz@pidgin.im>
parents: 26584
diff changeset
321 url = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL), purple_url_encode(tmp));
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
322 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
323 g_free(tmp);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
324 purple_util_fetch_url(url, TRUE, "finch", FALSE, url_fetched, cbdata);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
325 i = gnt_text_view_get_lines_below(tv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
326 str = g_strdup_printf(_("\nFetching TinyURL..."));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
327 gnt_text_view_append_text_with_tag((tv), str, GNT_TEXT_FLAG_DIM, cbdata->tag);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
328 g_free(str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
329 if (i == 0)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
330 gnt_text_view_scroll(tv, 0);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
331 g_free(iter->data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
332 g_free(url);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
333 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
334 g_list_free(urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
335 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
336
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
337 static void
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
338 free_conv_urls(PurpleConversation *conv)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
339 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
340 GList *urls = purple_conversation_get_data(conv, "TinyURLs");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
341 if (urls)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
342 g_list_foreach(urls, free_urls, NULL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
343 g_list_free(urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
344 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
345
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
346 static void tinyurl_notify_fetch_cb(PurpleUtilFetchUrlData *urldata, gpointer cbdata,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
347 const gchar *urltext, gsize len, const gchar *error)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
348 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
349 GntWidget *win = cbdata;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
350 GntWidget *label = g_object_get_data(G_OBJECT(win), "info-widget");
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
351 char *message;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
352
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
353 message = g_strdup_printf(_("TinyURL for above: %s"), urltext);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
354 gnt_label_set_text(GNT_LABEL(label), message);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
355 g_free(message);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
356
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
357 g_signal_handlers_disconnect_matched(G_OBJECT(win), G_SIGNAL_MATCH_FUNC,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
358 0, 0, NULL,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
359 G_CALLBACK(purple_util_fetch_url_cancel), NULL);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
360 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
361
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
362 static void *
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
363 tinyurl_notify_uri(const char *uri)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
364 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
365 char *fullurl = NULL;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
366 GntWidget *win;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
367 PurpleUtilFetchUrlData *urlcb;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
368
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
369 /* XXX: The following expects that finch_notify_message gets called. This
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
370 * may not always happen, e.g. when another plugin sets its own
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
371 * notify_message. So tread carefully. */
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
372 win = purple_notify_message(NULL, PURPLE_NOTIFY_URI, _("URI"), uri,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
373 _("Please wait while TinyURL fetches a shorter URL ..."), NULL, NULL);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
374 if (!GNT_IS_WINDOW(win) || !g_object_get_data(G_OBJECT(win), "info-widget"))
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
375 return win;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
376
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
377 if (g_ascii_strncasecmp(uri, "http://", 7) && g_ascii_strncasecmp(uri, "https://", 8)) {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
378 fullurl = g_strdup_printf("%shttp%%3A%%2F%%2F%s",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
379 purple_prefs_get_string(PREF_URL), purple_url_encode(uri));
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
380 } else {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
381 fullurl = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL),
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
382 purple_url_encode(uri));
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
383 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
384
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
385 /* Store the return value of _fetch_url and destroy that when win is
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
386 destroyed, so that the callback for _fetch_url does not try to molest a
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
387 non-existent window */
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
388 urlcb = purple_util_fetch_url(fullurl, TRUE, "finch", FALSE, tinyurl_notify_fetch_cb, win);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
389 g_free(fullurl);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
390 g_signal_connect_swapped(G_OBJECT(win), "destroy",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
391 G_CALLBACK(purple_util_fetch_url_cancel), urlcb);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
392
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
393 return win;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
394 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
395
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
396 static gboolean
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
397 plugin_load(PurplePlugin *plugin)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
398 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
399 PurpleNotifyUiOps *ops = purple_notify_get_ui_ops();
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
400 plugin->extra = ops->notify_uri;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
401 ops->notify_uri = tinyurl_notify_uri;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
402
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
403 purple_signal_connect(purple_conversations_get_handle(),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
404 "wrote-im-msg",
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
405 plugin, PURPLE_CALLBACK(wrote_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
406 purple_signal_connect(purple_conversations_get_handle(),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
407 "wrote-chat-msg",
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
408 plugin, PURPLE_CALLBACK(wrote_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
409 purple_signal_connect(purple_conversations_get_handle(),
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
410 "writing-im-msg",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
411 plugin, PURPLE_CALLBACK(writing_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
412 purple_signal_connect(purple_conversations_get_handle(),
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
413 "writing-chat-msg",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
414 plugin, PURPLE_CALLBACK(writing_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
415 purple_signal_connect(purple_conversations_get_handle(),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
416 "deleting-conversation",
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
417 plugin, PURPLE_CALLBACK(free_conv_urls), NULL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
418
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
419 return TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
420 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
421
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
422 static gboolean
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
423 plugin_unload(PurplePlugin *plugin)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
424 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
425 PurpleNotifyUiOps *ops = purple_notify_get_ui_ops();
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
426 if (ops->notify_uri == tinyurl_notify_uri)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
427 ops->notify_uri = plugin->extra;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
428 return TRUE;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
429 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
430
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
431 static PurplePluginPrefFrame *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
432 get_plugin_pref_frame(PurplePlugin *plugin) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
433
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
434 PurplePluginPrefFrame *frame;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
435 PurplePluginPref *pref;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
436
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
437 frame = purple_plugin_pref_frame_new();
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
438
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
439 pref = purple_plugin_pref_new_with_name(PREF_LENGTH);
28337
6aa8e64fdbb7 Capitalize the abbreviation "URL," as suggested by F Wolff on the
Mark Doliner <mark@kingant.net>
parents: 27031
diff changeset
440 purple_plugin_pref_set_label(pref, _("Only create TinyURL for URLs"
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
441 " of this length or greater"));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
442 purple_plugin_pref_frame_add(frame, pref);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
443 pref = purple_plugin_pref_new_with_name(PREF_URL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
444 purple_plugin_pref_set_label(pref, _("TinyURL (or other) address prefix"));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
445 purple_plugin_pref_frame_add(frame, pref);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
446
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
447 return frame;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
448 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
449
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
450 static PurplePluginUiInfo prefs_info = {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
451 get_plugin_pref_frame,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
452 0, /* page_num (Reserved) */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
453 NULL, /* frame (Reserved) */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
454
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
455 /* padding */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
456 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
457 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
458 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
459 NULL
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
460 };
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
461
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
462 static PurplePluginInfo info =
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
463 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
464 PURPLE_PLUGIN_MAGIC,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
465 PURPLE_MAJOR_VERSION,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
466 PURPLE_MINOR_VERSION,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
467 PURPLE_PLUGIN_STANDARD,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
468 FINCH_PLUGIN_TYPE,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
469 0,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
470 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
471 PURPLE_PRIORITY_DEFAULT,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
472 "TinyURL",
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
473 N_("TinyURL"),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
474 DISPLAY_VERSION,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
475 N_("TinyURL plugin"),
28338
4e7b8902da90 Add a verb to this sentence, as suggested by F Wolff on the translators
Mark Doliner <mark@kingant.net>
parents: 28337
diff changeset
476 N_("When receiving a message with URL(s), use TinyURL for easier copying"),
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
477 "Richard Nelson <wabz@whatsbeef.net>",
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
478 PURPLE_WEBSITE,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
479 plugin_load,
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
480 plugin_unload,
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
481 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
482 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
483 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
484 &prefs_info, /**< prefs_info */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
485 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
486
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
487 /* padding */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
488 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
489 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
490 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
491 NULL
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
492 };
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
493
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
494 static void
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
495 init_plugin(PurplePlugin *plugin) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
496 purple_prefs_add_none(PREFS_BASE);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
497 purple_prefs_add_int(PREF_LENGTH, 30);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
498 purple_prefs_add_string(PREF_URL, "http://tinyurl.com/api-create.php?url=");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
499 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
500
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
501 PURPLE_INIT_PLUGIN(PLUGIN_STATIC_NAME, init_plugin, info)