Mercurial > pidgin-twitter
comparison main.c @ 300:42cdddf0f747
added preliminary support for friendfeed.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 25 May 2009 22:47:44 +0900 |
parents | d68ed289ef69 |
children | e17b74fdf86a |
comparison
equal
deleted
inserted
replaced
299:d68ed289ef69 | 300:42cdddf0f747 |
---|---|
168 format = RECIPIENT_FORMAT_IDENTICA; | 168 format = RECIPIENT_FORMAT_IDENTICA; |
169 break; | 169 break; |
170 case jisko_service: | 170 case jisko_service: |
171 format = RECIPIENT_FORMAT_JISKO; | 171 format = RECIPIENT_FORMAT_JISKO; |
172 break; | 172 break; |
173 case ffeed_service: | |
174 format = RECIPIENT_FORMAT_FFEED; | |
175 break; | |
173 default: | 176 default: |
174 twitter_debug("unknown service\n"); | 177 twitter_debug("unknown service\n"); |
175 break; | 178 break; |
176 } | 179 } |
177 g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); | 180 g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); |
178 g_free(match1); | 181 g_free(match1); |
179 g_free(match2); | 182 g_free(match2); |
180 } | 183 } |
181 else if(which == SENDER) { | 184 else if(which == SENDER) { |
182 gchar *match1 = g_match_info_fetch(match_info, 1); /*preceding CR|LF*/ | 185 gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding CR|LF */ |
183 gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */ | 186 gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */ |
184 const gchar *format = NULL; | 187 const gchar *format = NULL; |
185 | 188 |
186 switch(service) { | 189 switch(service) { |
187 case twitter_service: | 190 case twitter_service: |
199 default: | 202 default: |
200 twitter_debug("unknown service\n"); | 203 twitter_debug("unknown service\n"); |
201 break; | 204 break; |
202 } | 205 } |
203 | 206 |
207 g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); | |
208 | |
209 g_free(match1); | |
210 g_free(match2); | |
211 } | |
212 else if(which == SENDER_FFEED) { | |
213 gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding CR|LF */ | |
214 gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */ | |
215 const gchar *format = NULL; | |
216 | |
217 format = SENDER_FORMAT_FFEED; | |
204 g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); | 218 g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2); |
205 | 219 |
206 g_free(match1); | 220 g_free(match1); |
207 g_free(match2); | 221 g_free(match2); |
208 } | 222 } |
242 g_free(match); | 256 g_free(match); |
243 g_free(link); | 257 g_free(link); |
244 } | 258 } |
245 else if(which == EXCESS_LF) { | 259 else if(which == EXCESS_LF) { |
246 g_snprintf(sub, SUBST_BUF_SIZE, "%s", "\n"); | 260 g_snprintf(sub, SUBST_BUF_SIZE, "%s", "\n"); |
261 } | |
262 else if(which == TRAIL_HASH) { | |
263 g_snprintf(sub, SUBST_BUF_SIZE, "%s", ""); /* xxx --yaz */ | |
247 } | 264 } |
248 | 265 |
249 g_string_append(result, sub); | 266 g_string_append(result, sub); |
250 twitter_debug("sub = %s\n", sub); | 267 twitter_debug("sub = %s\n", sub); |
251 | 268 |
350 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); | 367 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); |
351 break; | 368 break; |
352 case jisko_service: | 369 case jisko_service: |
353 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); | 370 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); |
354 break; | 371 break; |
372 case ffeed_service: | |
373 screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_FFEED); | |
374 break; | |
355 } | 375 } |
356 | 376 |
357 if (screen_name) { | 377 if (screen_name) { |
358 m = g_strdup_printf("%s: %s", screen_name, *buffer); | 378 m = g_strdup_printf("%s: %s", screen_name, *buffer); |
359 g_free(*buffer); | 379 g_free(*buffer); |
372 playsound(buffer, RECIPIENT); | 392 playsound(buffer, RECIPIENT); |
373 } | 393 } |
374 | 394 |
375 /* translate */ | 395 /* translate */ |
376 if(purple_prefs_get_bool(OPT_TRANSLATE_SENDER)) { | 396 if(purple_prefs_get_bool(OPT_TRANSLATE_SENDER)) { |
377 translate(buffer, SENDER, service); | 397 if(service == ffeed_service) |
398 translate(buffer, SENDER_FFEED, service); | |
399 else | |
400 translate(buffer, SENDER, service); | |
378 } | 401 } |
379 if(purple_prefs_get_bool(OPT_TRANSLATE_RECIPIENT)) { | 402 if(purple_prefs_get_bool(OPT_TRANSLATE_RECIPIENT)) { |
380 translate(buffer, RECIPIENT, service); | 403 translate(buffer, RECIPIENT, service); |
381 } | 404 } |
382 if(service == wassr_service && | 405 if(service == wassr_service && |
404 | 427 |
405 if(purple_prefs_get_bool(OPT_STRIP_EXCESS_LF)) { | 428 if(purple_prefs_get_bool(OPT_STRIP_EXCESS_LF)) { |
406 translate(buffer, EXCESS_LF, service); | 429 translate(buffer, EXCESS_LF, service); |
407 } | 430 } |
408 | 431 |
432 if(service == ffeed_service) { | |
433 translate(buffer, TRAIL_HASH, service); | |
434 } | |
435 | |
409 return FALSE; | 436 return FALSE; |
410 } | 437 } |
411 | 438 |
412 static void | 439 static void |
413 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, | 440 insert_text_cb(GtkTextBuffer *textbuffer, GtkTextIter *position, |
425 | 452 |
426 switch(service) { | 453 switch(service) { |
427 case twitter_service: | 454 case twitter_service: |
428 case identica_service: | 455 case identica_service: |
429 case jisko_service: | 456 case jisko_service: |
457 case ffeed_service: | |
430 count = gtk_text_buffer_get_char_count(textbuffer) + | 458 count = gtk_text_buffer_get_char_count(textbuffer) + |
431 (unsigned int)g_utf8_strlen(new_text, -1); | 459 (unsigned int)g_utf8_strlen(new_text, -1); |
432 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", | 460 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", |
433 count <= 140 ? "black" : "red", count); | 461 count <= 140 ? "black" : "red", count); |
434 break; | 462 break; |
466 | 494 |
467 switch(service) { | 495 switch(service) { |
468 case twitter_service: | 496 case twitter_service: |
469 case identica_service: | 497 case identica_service: |
470 case jisko_service: | 498 case jisko_service: |
499 case ffeed_service: | |
471 count= gtk_text_buffer_get_char_count(textbuffer) - | 500 count= gtk_text_buffer_get_char_count(textbuffer) - |
472 (gtk_text_iter_get_offset(end_pos) - | 501 (gtk_text_iter_get_offset(end_pos) - |
473 gtk_text_iter_get_offset(start_pos)); | 502 gtk_text_iter_get_offset(start_pos)); |
474 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", | 503 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", |
475 count <= 140 ? "black" : "red", count); | 504 count <= 140 ? "black" : "red", count); |
508 switch(service) { | 537 switch(service) { |
509 case twitter_service: | 538 case twitter_service: |
510 case wassr_service: | 539 case wassr_service: |
511 case identica_service: | 540 case identica_service: |
512 case jisko_service: | 541 case jisko_service: |
542 case ffeed_service: | |
513 detach_from_conv(conv, NULL); | 543 detach_from_conv(conv, NULL); |
514 break; | 544 break; |
515 default: | 545 default: |
516 twitter_debug("unknown service\n"); | 546 twitter_debug("unknown service\n"); |
517 break; | 547 break; |
626 switch(service) { | 656 switch(service) { |
627 case twitter_service: | 657 case twitter_service: |
628 case wassr_service: | 658 case wassr_service: |
629 case identica_service: | 659 case identica_service: |
630 case jisko_service: | 660 case jisko_service: |
661 case ffeed_service: | |
631 attach_to_conv(conv, NULL); | 662 attach_to_conv(conv, NULL); |
632 break; | 663 break; |
633 default: | 664 default: |
634 twitter_debug("unknown service\n"); | 665 twitter_debug("unknown service\n"); |
635 break; | 666 break; |
718 attach_to_conv(conv, NULL); | 749 attach_to_conv(conv, NULL); |
719 break; | 750 break; |
720 case wassr_service: | 751 case wassr_service: |
721 case identica_service: | 752 case identica_service: |
722 case jisko_service: | 753 case jisko_service: |
754 case ffeed_service: | |
723 attach_to_conv(conv, NULL); | 755 attach_to_conv(conv, NULL); |
724 break; | 756 break; |
725 default: | 757 default: |
726 twitter_debug("unknown service\n"); | 758 twitter_debug("unknown service\n"); |
727 break; | 759 break; |
751 hash = icon_hash[service]; | 783 hash = icon_hash[service]; |
752 break; | 784 break; |
753 case wassr_service: | 785 case wassr_service: |
754 case identica_service: | 786 case identica_service: |
755 case jisko_service: | 787 case jisko_service: |
788 case ffeed_service: | |
756 hash = icon_hash[service]; | 789 hash = icon_hash[service]; |
757 break; | 790 break; |
758 default: | 791 default: |
759 twitter_debug("unknown service\n"); | 792 twitter_debug("unknown service\n"); |
760 break; | 793 break; |
792 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA)); | 825 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA)); |
793 break; | 826 break; |
794 case jisko_service: | 827 case jisko_service: |
795 list = purple_prefs_get_string(OPT_FILTER_JISKO); | 828 list = purple_prefs_get_string(OPT_FILTER_JISKO); |
796 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_JISKO)); | 829 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_JISKO)); |
830 case ffeed_service: | |
831 list = purple_prefs_get_string(OPT_FILTER_FFEED); | |
832 screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_FFEED)); | |
797 break; | 833 break; |
798 } | 834 } |
799 g_return_if_fail(list != NULL); | 835 g_return_if_fail(list != NULL); |
800 if(strstr(list, DEFAULT_LIST)) | 836 if(strstr(list, DEFAULT_LIST)) |
801 return; | 837 return; |
1035 switch(service) { | 1071 switch(service) { |
1036 case twitter_service: | 1072 case twitter_service: |
1037 case wassr_service: | 1073 case wassr_service: |
1038 case identica_service: | 1074 case identica_service: |
1039 case jisko_service: | 1075 case jisko_service: |
1076 case ffeed_service: | |
1040 hash = icon_hash[service]; | 1077 hash = icon_hash[service]; |
1041 break; | 1078 break; |
1042 default: | 1079 default: |
1043 twitter_debug("unknown service\n"); | 1080 twitter_debug("unknown service\n"); |
1044 break; | 1081 break; |
1121 | 1158 |
1122 | 1159 |
1123 /* compile regex */ | 1160 /* compile regex */ |
1124 regp[RECIPIENT] = g_regex_new(P_RECIPIENT, 0, 0, NULL); | 1161 regp[RECIPIENT] = g_regex_new(P_RECIPIENT, 0, 0, NULL); |
1125 regp[SENDER] = g_regex_new(P_SENDER, 0, 0, NULL); | 1162 regp[SENDER] = g_regex_new(P_SENDER, 0, 0, NULL); |
1163 regp[SENDER_FFEED] = g_regex_new(P_SENDER_FFEED, 0, 0, NULL); | |
1126 regp[COMMAND] = g_regex_new(P_COMMAND, G_REGEX_RAW, 0, NULL); | 1164 regp[COMMAND] = g_regex_new(P_COMMAND, G_REGEX_RAW, 0, NULL); |
1127 regp[PSEUDO] = g_regex_new(P_PSEUDO, G_REGEX_RAW, 0, NULL); | 1165 regp[PSEUDO] = g_regex_new(P_PSEUDO, G_REGEX_RAW, 0, NULL); |
1128 regp[USER] = g_regex_new(P_USER, 0, 0, NULL); | 1166 regp[USER] = g_regex_new(P_USER, 0, 0, NULL); |
1129 regp[CHANNEL_WASSR] = g_regex_new(P_CHANNEL, 0, 0, NULL); | 1167 regp[CHANNEL_WASSR] = g_regex_new(P_CHANNEL, 0, 0, NULL); |
1130 regp[TAG_TWITTER] = g_regex_new(P_TAG_TWITTER, 0, 0, NULL); | 1168 regp[TAG_TWITTER] = g_regex_new(P_TAG_TWITTER, 0, 0, NULL); |
1132 regp[GROUP_IDENTICA] = g_regex_new(P_GROUP_IDENTICA, 0, 0, NULL); | 1170 regp[GROUP_IDENTICA] = g_regex_new(P_GROUP_IDENTICA, 0, 0, NULL); |
1133 regp[IMAGE_TWITTER] = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL); | 1171 regp[IMAGE_TWITTER] = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL); |
1134 regp[IMAGE_WASSR] = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL); | 1172 regp[IMAGE_WASSR] = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL); |
1135 regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL); | 1173 regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL); |
1136 regp[IMAGE_JISKO] = g_regex_new(P_IMAGE_JISKO, 0, 0, NULL); | 1174 regp[IMAGE_JISKO] = g_regex_new(P_IMAGE_JISKO, 0, 0, NULL); |
1175 regp[IMAGE_FFEED] = g_regex_new(P_IMAGE_FFEED, 0, 0, NULL); | |
1137 regp[SIZE_128_WASSR] = g_regex_new(P_SIZE_128_WASSR, 0, 0, NULL); | 1176 regp[SIZE_128_WASSR] = g_regex_new(P_SIZE_128_WASSR, 0, 0, NULL); |
1138 regp[EXCESS_LF] = g_regex_new(P_EXCESS_LF, 0, 0, NULL); | 1177 regp[EXCESS_LF] = g_regex_new(P_EXCESS_LF, 0, 0, NULL); |
1178 regp[TRAIL_HASH] = g_regex_new(P_TRAIL_HASH, 0, 0, NULL); | |
1139 | 1179 |
1140 for(i = twitter_service; i < NUM_SERVICES; i++) { | 1180 for(i = twitter_service; i < NUM_SERVICES; i++) { |
1141 icon_hash[i] = g_hash_table_new_full(g_str_hash, g_str_equal, | 1181 icon_hash[i] = g_hash_table_new_full(g_str_hash, g_str_equal, |
1142 g_free, NULL); | 1182 g_free, NULL); |
1143 } | 1183 } |
1337 purple_prefs_add_string(OPT_SCREEN_NAME_TWITTER, EMPTY); | 1377 purple_prefs_add_string(OPT_SCREEN_NAME_TWITTER, EMPTY); |
1338 purple_prefs_add_string(OPT_PASSWORD_TWITTER, EMPTY); | 1378 purple_prefs_add_string(OPT_PASSWORD_TWITTER, EMPTY); |
1339 purple_prefs_add_string(OPT_SCREEN_NAME_WASSR, EMPTY); | 1379 purple_prefs_add_string(OPT_SCREEN_NAME_WASSR, EMPTY); |
1340 purple_prefs_add_string(OPT_SCREEN_NAME_IDENTICA, EMPTY); | 1380 purple_prefs_add_string(OPT_SCREEN_NAME_IDENTICA, EMPTY); |
1341 purple_prefs_add_string(OPT_SCREEN_NAME_JISKO, EMPTY); | 1381 purple_prefs_add_string(OPT_SCREEN_NAME_JISKO, EMPTY); |
1382 purple_prefs_add_string(OPT_SCREEN_NAME_FFEED, EMPTY); | |
1342 | 1383 |
1343 purple_prefs_add_bool(OPT_SHOW_ICON, TRUE); | 1384 purple_prefs_add_bool(OPT_SHOW_ICON, TRUE); |
1344 purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE); | 1385 purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE); |
1345 purple_prefs_add_bool(OPT_UPDATE_ICON, TRUE); | 1386 purple_prefs_add_bool(OPT_UPDATE_ICON, TRUE); |
1346 purple_prefs_add_int(OPT_ICON_MAX_COUNT, DEFAULT_ICON_MAX_COUNT); | 1387 purple_prefs_add_int(OPT_ICON_MAX_COUNT, DEFAULT_ICON_MAX_COUNT); |
1351 purple_prefs_add_bool(OPT_FILTER_EXCLUDE_REPLY, TRUE); | 1392 purple_prefs_add_bool(OPT_FILTER_EXCLUDE_REPLY, TRUE); |
1352 purple_prefs_add_string(OPT_FILTER_TWITTER, DEFAULT_LIST); | 1393 purple_prefs_add_string(OPT_FILTER_TWITTER, DEFAULT_LIST); |
1353 purple_prefs_add_string(OPT_FILTER_WASSR, DEFAULT_LIST); | 1394 purple_prefs_add_string(OPT_FILTER_WASSR, DEFAULT_LIST); |
1354 purple_prefs_add_string(OPT_FILTER_IDENTICA, DEFAULT_LIST); | 1395 purple_prefs_add_string(OPT_FILTER_IDENTICA, DEFAULT_LIST); |
1355 purple_prefs_add_string(OPT_FILTER_JISKO, DEFAULT_LIST); | 1396 purple_prefs_add_string(OPT_FILTER_JISKO, DEFAULT_LIST); |
1397 purple_prefs_add_string(OPT_FILTER_FFEED, DEFAULT_LIST); | |
1356 } | 1398 } |
1357 | 1399 |
1358 PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info) | 1400 PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info) |