# HG changeset patch # User Yoshiki Yazawa # Date 1223365442 -32400 # Node ID 405f8b880142ebb7a61001cfd5388c13d851987d # Parent e3a24c98772dc70e77397ebbb458849876211cf9 restored jisko support. diff -r e3a24c98772d -r 405f8b880142 pidgin-twitter.c --- a/pidgin-twitter.c Tue Oct 07 14:51:22 2008 +0900 +++ b/pidgin-twitter.c Tue Oct 07 16:44:02 2008 +0900 @@ -24,8 +24,8 @@ /***********/ /* globals */ /***********/ -#define NUM_REGPS 12 -#define NUM_SERVICES 3 /* twitter, wassr, identica. */ +#define NUM_REGPS 13 +#define NUM_SERVICES 4 /* twitter, wassr, identica, jisko. */ static GRegex *regp[NUM_REGPS]; static gboolean suppress_oops = FALSE; static GHashTable *icon_hash[NUM_SERVICES]; @@ -909,6 +909,9 @@ case identica_service: format = RECIPIENT_FORMAT_IDENTICA; break; + case jisko_service: + format = RECIPIENT_FORMAT_JISKO; + break; default: twitter_debug("unknown service\n"); break; @@ -932,6 +935,9 @@ case identica_service: format = SENDER_FORMAT_IDENTICA; break; + case jisko_service: + format = SENDER_FORMAT_JISKO; + break; default: twitter_debug("unknown service\n"); break; @@ -1069,6 +1075,9 @@ case identica_service: screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA); break; + case jisko_service: + screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); + break; } if (screen_name) { @@ -1135,6 +1144,7 @@ switch(service) { case twitter_service: case identica_service: + case jisko_service: count = gtk_text_buffer_get_char_count(textbuffer) + (unsigned int)g_utf8_strlen(new_text, -1); markup = g_markup_printf_escaped("%u", @@ -1175,6 +1185,7 @@ switch(service) { case twitter_service: case identica_service: + case jisko_service: count= gtk_text_buffer_get_char_count(textbuffer) - (gtk_text_iter_get_offset(end_pos) - gtk_text_iter_get_offset(start_pos)); @@ -1216,6 +1227,7 @@ case twitter_service: case wassr_service: case identica_service: + case jisko_service: detach_from_conv(conv, NULL); break; default: @@ -1333,6 +1345,7 @@ case twitter_service: case wassr_service: case identica_service: + case jisko_service: attach_to_conv(conv, NULL); break; default: @@ -1474,6 +1487,30 @@ return is_identica_account(account, name); } +static gboolean +is_jisko_account(PurpleAccount *account, const char *name) +{ + const gchar *proto = purple_account_get_protocol_id(account); + + if(g_strstr_len(name, 16, "bot@jisko.net") && + g_strstr_len(proto, 11, "prpl-jabber")) { + return TRUE; + } + + return FALSE; +} + +static gboolean +is_jisko_conv(PurpleConversation *conv) +{ + g_return_val_if_fail(conv != NULL, FALSE); + + const char *name = purple_conversation_get_name(conv); + PurpleAccount *account = purple_conversation_get_account(conv); + + return is_jisko_account(account, name); +} + static gint get_service_type_by_account(PurpleAccount *account, const char *sender) { @@ -1488,6 +1525,8 @@ service = wassr_service; else if(is_identica_account(account, sender)) service = identica_service; + else if(is_jisko_account(account, sender)) + service = jisko_service; return service; } @@ -1505,6 +1544,8 @@ service = wassr_service; else if(is_identica_conv(conv)) service = identica_service; + else if(is_jisko_conv(conv)) + service = jisko_service; return service; } @@ -1531,6 +1572,7 @@ break; case wassr_service: case identica_service: + case jisko_service: attach_to_conv(conv, NULL); break; default: @@ -1567,6 +1609,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -1603,6 +1648,10 @@ list = purple_prefs_get_string(OPT_FILTER_IDENTICA); screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA)); break; + case jisko_service: + list = purple_prefs_get_string(OPT_FILTER_JISKO); + screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_JISKO)); + break; } g_return_if_fail(list != NULL); if(strstr(list, DEFAULT_LIST)) @@ -1829,6 +1878,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); } @@ -1875,6 +1927,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -1933,6 +1988,11 @@ icon_hash[identica_service], user_name); regp_id = IMAGE_IDENTICA; } + else if(service == jisko_service) { + data = (icon_data *)g_hash_table_lookup( + icon_hash[jisko_service], user_name); + regp_id = IMAGE_JISKO; + } if(!url_text) { if(data) { @@ -2100,6 +2160,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); } @@ -2171,6 +2234,9 @@ case identica_service: suffix = "identica"; break; + case jisko_service: + suffix = "jisko"; + break; default: twitter_debug("unknown service\n"); break; @@ -2235,6 +2301,10 @@ suffix = "identica"; hash = icon_hash[identica_service]; break; + case jisko_service: + suffix = "jisko"; + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -2324,6 +2394,9 @@ case identica_service: url = g_strdup_printf("http://identi.ca/%s", user_name); break; + case jisko_service: + url = g_strdup_printf("http://jisko.net/%s", user_name); + break; default: twitter_debug("unknown service\n"); break; @@ -2337,7 +2410,8 @@ /* gotdata will be released in got_icon_cb */ if(service == twitter_service || service == wassr_service || - service == identica_service) { + service == identica_service || + service == jisko_service) { data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE, got_page_cb, gotdata); } @@ -2369,6 +2443,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -2468,6 +2545,9 @@ case identica_service: hash = icon_hash[identica_service]; break; + case jisko_service: + hash = icon_hash[jisko_service]; + break; default: twitter_debug("unknown service\n"); break; @@ -2611,10 +2691,11 @@ regp[PSEUDO] = g_regex_new(P_PSEUDO, G_REGEX_RAW, 0, NULL); regp[USER] = g_regex_new(P_USER, 0, 0, NULL); regp[CHANNEL_WASSR] = g_regex_new(P_CHANNEL, 0, 0, NULL); + regp[TAG_IDENTICA] = g_regex_new(P_TAG_IDENTICA, 0, 0, NULL); regp[IMAGE_TWITTER] = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL); regp[IMAGE_WASSR] = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL); regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL); - regp[TAG_IDENTICA] = g_regex_new(P_TAG_IDENTICA, 0, 0, NULL); + regp[IMAGE_JISKO] = g_regex_new(P_IMAGE_JISKO, 0, 0, NULL); regp[SIZE_128_WASSR] = g_regex_new(P_SIZE_128_WASSR, 0, 0, NULL); regp[EXCESS_LF] = g_regex_new(P_EXCESS_LF, 0, 0, NULL); @@ -2913,6 +2994,13 @@ g_signal_connect(e, "changed", G_CALLBACK(text_changed_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "account_jisko")); + g_object_set_data(G_OBJECT(e), "pref", OPT_SCREEN_NAME_JISKO); + text = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO); + gtk_entry_set_text(GTK_ENTRY(e), text); + g_signal_connect(e, "changed", + G_CALLBACK(text_changed_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "account_api")); g_object_set_data(G_OBJECT(e), "pref", OPT_API_BASE_POST); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e), @@ -3025,6 +3113,13 @@ g_signal_connect(e, "changed", G_CALLBACK(text_changed_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_jisko")); + g_object_set_data(G_OBJECT(e), "pref", OPT_FILTER_JISKO); + text = purple_prefs_get_string(OPT_FILTER_JISKO); + gtk_entry_set_text(GTK_ENTRY(e), text); + g_signal_connect(e, "changed", + G_CALLBACK(text_changed_cb), &e); + /*************/ @@ -3238,7 +3333,7 @@ PURPLE_PRIORITY_DEFAULT, /**< priority */ PLUGIN_ID, /**< id */ "Pidgin-Twitter", /**< name */ - "0.8.0b1", /**< version */ + "0.8.0b2", /**< version */ "provides useful features for twitter", /** summary */ "provides useful features for twitter", /** desc */ "Yoshiki Yazawa, mikanbako, \nKonosuke Watanabe, IWATA Ray, \nmojin, umq, \nthe pidging-twitter team", /**< author */ @@ -3288,6 +3383,7 @@ purple_prefs_add_string(OPT_PASSWORD_TWITTER, EMPTY); purple_prefs_add_string(OPT_SCREEN_NAME_WASSR, EMPTY); purple_prefs_add_string(OPT_SCREEN_NAME_IDENTICA, EMPTY); + purple_prefs_add_string(OPT_SCREEN_NAME_JISKO, EMPTY); purple_prefs_add_bool(OPT_SHOW_ICON, TRUE); purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE); @@ -3301,6 +3397,7 @@ purple_prefs_add_string(OPT_FILTER_TWITTER, DEFAULT_LIST); purple_prefs_add_string(OPT_FILTER_WASSR, DEFAULT_LIST); purple_prefs_add_string(OPT_FILTER_IDENTICA, DEFAULT_LIST); + purple_prefs_add_string(OPT_FILTER_JISKO, DEFAULT_LIST); } PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info) diff -r e3a24c98772d -r 405f8b880142 pidgin-twitter.h --- a/pidgin-twitter.h Tue Oct 07 14:51:22 2008 +0900 +++ b/pidgin-twitter.h Tue Oct 07 16:44:02 2008 +0900 @@ -32,10 +32,11 @@ PSEUDO, USER, CHANNEL_WASSR, + TAG_IDENTICA, IMAGE_TWITTER, IMAGE_WASSR, IMAGE_IDENTICA, - TAG_IDENTICA, + IMAGE_JISKO, SIZE_128_WASSR, EXCESS_LF }; @@ -45,7 +46,8 @@ unknown_service = -1, twitter_service, wassr_service, - identica_service + identica_service, + jisko_service }; /* container to hold icon data */ @@ -112,6 +114,7 @@ #define OPT_SCREEN_NAME_TWITTER OPT_PIDGINTWITTER "/screen_name_twitter" #define OPT_SCREEN_NAME_WASSR OPT_PIDGINTWITTER "/screen_name_wassr" #define OPT_SCREEN_NAME_IDENTICA OPT_PIDGINTWITTER "/screen_name_identica" +#define OPT_SCREEN_NAME_JISKO OPT_PIDGINTWITTER "/screen_name_jisko" #define OPT_PASSWORD_TWITTER OPT_PIDGINTWITTER "/password_twitter" #define OPT_SHOW_ICON OPT_PIDGINTWITTER "/show_icon" #define OPT_ICON_SIZE OPT_PIDGINTWITTER "/icon_size" @@ -125,6 +128,7 @@ #define OPT_FILTER_TWITTER OPT_PIDGINTWITTER "/filter_twitter" #define OPT_FILTER_WASSR OPT_PIDGINTWITTER "/filter_wassr" #define OPT_FILTER_IDENTICA OPT_PIDGINTWITTER "/filter_identica" +#define OPT_FILTER_JISKO OPT_PIDGINTWITTER "/filter_jisko" #define OPT_STRIP_EXCESS_LF OPT_PIDGINTWITTER "/strip_excess_lf" #ifdef _WIN32 @@ -138,6 +142,8 @@ #define SENDER_FORMAT_WASSR "%s%s: " #define RECIPIENT_FORMAT_IDENTICA "%s@%s" #define SENDER_FORMAT_IDENTICA "%s%s: " +#define RECIPIENT_FORMAT_JISKO "@%s" +#define SENDER_FORMAT_JISKO "%s%s: " #define CHANNEL_FORMAT_WASSR "%s%s " #define CHANNEL_FORMAT_IDENTICA "%s%s " #define TAG_FORMAT_IDENTICA "#%s" @@ -153,11 +159,12 @@ #define P_PSEUDO "^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)" #define P_USER "^.*?(?:)?([-A-Za-z0-9_]+)(?:)?:" #define P_CHANNEL "^(.*?(?:)?[-A-Za-z0-9_]+(?:)?: \\r?\\n?#)([A-Za-z0-9_]+) " +#define P_TAG_IDENTICA "#([-A-Za-z0-9_]+)" #define P_IMAGE_TWITTER "" #define P_IMAGE_WASSR "
" +#define P_IMAGE_IDENTICA "\"[A-Za-z0-0_]+\"/" +#define P_IMAGE_JISKO "\"Avatar\"" #define P_SIZE_128_WASSR "\\.128\\." -#define P_IMAGE_IDENTICA "\"[A-Za-z0-0_]+\"/" -#define P_TAG_IDENTICA "#([-A-Za-z0-9_]+)" #define P_EXCESS_LF "([\\r|\\n]{3,})" /* twitter API specific macros */ @@ -212,6 +219,8 @@ static gboolean is_wassr_conv(PurpleConversation *conv); static gboolean is_identica_account(PurpleAccount *account, const char *name); static gboolean is_identica_conv(PurpleConversation *conv); +static gboolean is_jisko_account(PurpleAccount *account, const char *name); +static gboolean is_jisko_conv(PurpleConversation *conv); static void conv_created_cb(PurpleConversation *conv, gpointer null); static void deleting_conv_cb(PurpleConversation *conv); static gboolean receiving_im_cb(PurpleAccount *account, char **sender, char **buffer, PurpleConversation *conv, PurpleMessageFlags *flags, void *data); diff -r e3a24c98772d -r 405f8b880142 prefs.ui --- a/prefs.ui Tue Oct 07 14:51:22 2008 +0900 +++ b/prefs.ui Tue Oct 07 16:44:02 2008 +0900 @@ -188,6 +188,47 @@ + + True + + + True + 20 + + + True + 0 + jisko + 10 + + + + + + + True + 1 + 4 + + + True + True + 20 + + + + + False + False + 1 + + + + + 4 + + + True 8 @@ -204,7 +245,7 @@ - 4 + 5 @@ -223,7 +264,7 @@ - 5 + 6 @@ -267,7 +308,7 @@ - 6 + 7 @@ -336,7 +377,7 @@ False - 7 + 8 @@ -521,7 +562,7 @@ - + True 0 4 @@ -543,10 +584,10 @@ - + True - + True 20 @@ -673,6 +714,50 @@ 6 + + + True + + + True + 20 + + + True + 0 + jisko + 10 + + + + + + + True + 1 + 4 + + + True + True + 35 + + + + + False + False + 1 + + + + + False + False + 2 + 7 + + 2 @@ -680,7 +765,7 @@ - + True <b>Filter</b> True @@ -694,7 +779,7 @@ True - + True 12 4 @@ -774,7 +859,7 @@ - + True @@ -848,7 +933,7 @@ - + True 12 8 @@ -927,7 +1012,7 @@ - + True @@ -980,7 +1065,7 @@ True - + True times or @@ -1093,7 +1178,7 @@ - + True @@ -1137,7 +1222,7 @@ - + True @@ -1225,7 +1310,7 @@ - + True @@ -1269,7 +1354,7 @@ - + True @@ -1327,7 +1412,7 @@ - + True <b>Sound</b> True @@ -1341,7 +1426,7 @@ True - + True 8 4 @@ -1357,7 +1442,7 @@ - + True 20 @@ -1375,7 +1460,7 @@ - + True 8 4 @@ -1394,7 +1479,7 @@ - + True 20 @@ -1412,7 +1497,7 @@ - + True 20 @@ -1448,7 +1533,7 @@ - + True 20 @@ -1466,7 +1551,7 @@ - + True 8 4 @@ -1485,7 +1570,7 @@ - + True 10 20 @@ -1509,7 +1594,7 @@ - + True <b>Utility</b> True