| 149 {N_("Afrikaans"), "af", "Friedel Wolff", "friedel@translate.org.za"}, |
148 {N_("Afrikaans"), "af", "Friedel Wolff", "friedel@translate.org.za"}, |
| 150 {N_("Arabic"), "ar", "Khaled Hosny", "khaledhosny@eglug.org"}, |
149 {N_("Arabic"), "ar", "Khaled Hosny", "khaledhosny@eglug.org"}, |
| 151 {N_("Assamese"), "as", "Amitakhya Phukan", "aphukan@fedoraproject.org"}, |
150 {N_("Assamese"), "as", "Amitakhya Phukan", "aphukan@fedoraproject.org"}, |
| 152 {N_("Belarusian Latin"), "be@latin", "Ihar Hrachyshka", "ihar.hrachyshka@gmail.com"}, |
151 {N_("Belarusian Latin"), "be@latin", "Ihar Hrachyshka", "ihar.hrachyshka@gmail.com"}, |
| 153 {N_("Bulgarian"), "bg", "Vladimira Girginova", "missing@here.is"}, |
152 {N_("Bulgarian"), "bg", "Vladimira Girginova", "missing@here.is"}, |
| 154 {N_("Bulgarian"), "bg", "Vladimir (Kaladan) Petkov", "vpetkov@i-space.org"}, |
153 {N_("Bulgarian"), "bg", "Vladimir (Kaladan) Petkov", "kaladan@gmail.com"}, |
| 155 {N_("Bengali"), "bn", "Israt Jahan", "israt@ankur.org.bd"}, |
154 {N_("Bengali"), "bn", "Israt Jahan", "israt@ankur.org.bd"}, |
| 156 {N_("Bengali"), "bn", "Jamil Ahmed", "jamil@bengalinux.org"}, |
155 {N_("Bengali"), "bn", "Jamil Ahmed", "jamil@bengalinux.org"}, |
| 157 {N_("Bengali"), "bn", "Samia Nimatullah", "mailsamia2001@yahoo.com"}, |
156 {N_("Bengali"), "bn", "Samia Nimatullah", "mailsamia2001@yahoo.com"}, |
| 158 {N_("Bengali-India"), "bn_IN", "Runa Bhattacharjee", "runab@fedoraproject.org"}, |
157 {N_("Bengali-India"), "bn_IN", "Runa Bhattacharjee", "runab@fedoraproject.org"}, |
| 159 {N_("Bosnian"), "bs", "Lejla Hadzialic", "lejlah@gmail.com"}, |
158 {N_("Bosnian"), "bs", "Lejla Hadzialic", "lejlah@gmail.com"}, |
| 220 {N_("Norwegian Nynorsk"), "nn", "Yngve Spjeld Landro", "l10n@landro.net"}, |
219 {N_("Norwegian Nynorsk"), "nn", "Yngve Spjeld Landro", "l10n@landro.net"}, |
| 221 {N_("Occitan"), "oc", "Yannig Marchegay", "yannig@marchegay.org"}, |
220 {N_("Occitan"), "oc", "Yannig Marchegay", "yannig@marchegay.org"}, |
| 222 {N_("Oriya"), "or", "Manoj Kumar Giri", "giri.manojkr@gmail.com"}, |
221 {N_("Oriya"), "or", "Manoj Kumar Giri", "giri.manojkr@gmail.com"}, |
| 223 {N_("Punjabi"), "pa", "Amanpreet Singh Alam", "aalam@users.sf.net"}, |
222 {N_("Punjabi"), "pa", "Amanpreet Singh Alam", "aalam@users.sf.net"}, |
| 224 {N_("Polish"), "pl", "Piotr Drąg", "piotrdrag@gmail.com"}, |
223 {N_("Polish"), "pl", "Piotr Drąg", "piotrdrag@gmail.com"}, |
| 225 {N_("Polish"), "pl", "Piotr Makowski", "pmakowski@aviary.pl"}, |
|
| 226 {N_("Portuguese"), "pt", "Duarte Henriques", "duarte_henriques@myrealbox.com"}, |
224 {N_("Portuguese"), "pt", "Duarte Henriques", "duarte_henriques@myrealbox.com"}, |
| 227 {N_("Portuguese-Brazil"), "pt_BR", "Rodrigo Luiz Marques Flores", "rodrigomarquesflores@gmail.com"}, |
225 {N_("Portuguese-Brazil"), "pt_BR", "Rodrigo Luiz Marques Flores", "rodrigomarquesflores@gmail.com"}, |
| 228 {N_("Pashto"), "ps", "Kashif Masood", "masudmails@yahoo.com"}, |
226 {N_("Pashto"), "ps", "Kashif Masood", "masudmails@yahoo.com"}, |
| 229 {N_("Romanian"), "ro", "Mișu Moldovan", "dumol@gnome.org"}, |
227 {N_("Romanian"), "ro", "Mișu Moldovan", "dumol@gnome.org"}, |
| 230 {N_("Romanian"), "ro", "Andrei Popescu", "andreimpopescu@gmail.com"}, |
228 {N_("Romanian"), "ro", "Andrei Popescu", "andreimpopescu@gmail.com"}, |
| 302 {N_("Bokmål Norwegian"), "nb", "Espen Stefansen", "espenas@gmail.com"}, |
300 {N_("Bokmål Norwegian"), "nb", "Espen Stefansen", "espenas@gmail.com"}, |
| 303 {N_("Dutch, Flemish"), "nl", "Vincent van Adrighem", "V.vanAdrighem@dirck.mine.nu"}, |
301 {N_("Dutch, Flemish"), "nl", "Vincent van Adrighem", "V.vanAdrighem@dirck.mine.nu"}, |
| 304 {N_("Polish"), "pl", "Emil Nowak", "emil5@go2.pl"}, |
302 {N_("Polish"), "pl", "Emil Nowak", "emil5@go2.pl"}, |
| 305 {N_("Polish"), "pl", "Paweł Godlewski", "pawel@bajk.pl"}, |
303 {N_("Polish"), "pl", "Paweł Godlewski", "pawel@bajk.pl"}, |
| 306 {N_("Polish"), "pl", "Krzysztof Foltman", "krzysztof@foltman.com"}, |
304 {N_("Polish"), "pl", "Krzysztof Foltman", "krzysztof@foltman.com"}, |
| |
305 {N_("Polish"), "pl", "Piotr Makowski", NULL}, |
| 307 {N_("Polish"), "pl", "Przemysław Sułek", NULL}, |
306 {N_("Polish"), "pl", "Przemysław Sułek", NULL}, |
| 308 {N_("Portuguese-Brazil"), "pt_BR", "Maurício de Lemos Rodrigues Collares Neto", "mauricioc@gmail.com"}, |
307 {N_("Portuguese-Brazil"), "pt_BR", "Maurício de Lemos Rodrigues Collares Neto", "mauricioc@gmail.com"}, |
| 309 {N_("Russian"), "ru", "Dmitry Beloglazov", "dmaa@users.sf.net"}, |
308 {N_("Russian"), "ru", "Dmitry Beloglazov", "dmaa@users.sf.net"}, |
| 310 {N_("Russian"), "ru", "Alexandre Prokoudine", NULL}, |
309 {N_("Russian"), "ru", "Alexandre Prokoudine", NULL}, |
| 311 {N_("Russian"), "ru", "Sergey Volozhanin", NULL}, |
310 {N_("Russian"), "ru", "Sergey Volozhanin", NULL}, |
| 420 |
419 |
| 421 /* Note: Frees 'string' */ |
420 /* Note: Frees 'string' */ |
| 422 static GtkWidget * |
421 static GtkWidget * |
| 423 pidgin_build_help_dialog(const char *title, const char *role, GString *string) |
422 pidgin_build_help_dialog(const char *title, const char *role, GString *string) |
| 424 { |
423 { |
| 425 GtkWidget *win, *vbox, *frame, *logo, *imhtml, *button; |
424 GtkWidget *win, *vbox, *frame, *logo, *webview, *button; |
| 426 GdkPixbuf *pixbuf; |
425 GdkPixbuf *pixbuf; |
| 427 GtkTextIter iter; |
|
| 428 AtkObject *obj; |
426 AtkObject *obj; |
| 429 char *filename, *tmp; |
427 char *filename, *tmp; |
| 430 |
428 |
| 431 win = pidgin_create_dialog(title, PIDGIN_HIG_BORDER, role, TRUE); |
429 win = pidgin_create_dialog(title, PIDGIN_HIG_BORDER, role, TRUE); |
| 432 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER); |
430 vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER); |
| 449 tmp = g_strconcat(PIDGIN_NAME, " " DISPLAY_VERSION, NULL); |
447 tmp = g_strconcat(PIDGIN_NAME, " " DISPLAY_VERSION, NULL); |
| 450 atk_object_set_description(obj, tmp); |
448 atk_object_set_description(obj, tmp); |
| 451 g_free(tmp); |
449 g_free(tmp); |
| 452 gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0); |
450 gtk_box_pack_start(GTK_BOX(vbox), logo, FALSE, FALSE, 0); |
| 453 |
451 |
| 454 frame = pidgin_create_imhtml(FALSE, &imhtml, NULL, NULL); |
452 frame = pidgin_create_webview(FALSE, &webview, NULL, NULL); |
| |
453 /* TODO WEBKIT: Compile now and fix it later when we have a proper replacement for this function |
| 455 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_SMILEY); |
454 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_SMILEY); |
| |
455 */ |
| 456 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
456 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
| 457 |
457 |
| 458 gtk_imhtml_append_text(GTK_IMHTML(imhtml), string->str, GTK_IMHTML_NO_SCROLL); |
458 gtk_webview_append_html(GTK_WEBVIEW(webview), string->str); |
| 459 gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(imhtml)), &iter); |
459 /* TODO WEBKIT: This doesn't seem to stay at the top. */ |
| 460 gtk_text_buffer_place_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(imhtml)), &iter); |
460 webkit_web_view_move_cursor(WEBKIT_WEB_VIEW(webview), GTK_MOVEMENT_BUFFER_ENDS, -1); |
| 461 |
461 |
| 462 button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CLOSE, |
462 button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CLOSE, |
| 463 G_CALLBACK(destroy_win), win); |
463 G_CALLBACK(destroy_win), win); |
| 464 |
464 |
| 465 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
465 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
| 1112 NULL, NULL, NULL, |
1112 NULL, NULL, NULL, |
| 1113 NULL); |
1113 NULL); |
| 1114 } |
1114 } |
| 1115 |
1115 |
| 1116 static void |
1116 static void |
| 1117 pidgin_dialogs_alias_contact_cb(PurpleContact *contact, const char *new_alias) |
|
| 1118 { |
|
| 1119 purple_blist_alias_contact(contact, new_alias); |
|
| 1120 } |
|
| 1121 |
|
| 1122 void |
|
| 1123 pidgin_dialogs_alias_contact(PurpleContact *contact) |
|
| 1124 { |
|
| 1125 g_return_if_fail(contact != NULL); |
|
| 1126 |
|
| 1127 purple_request_input(NULL, _("Alias Contact"), NULL, |
|
| 1128 _("Enter an alias for this contact."), |
|
| 1129 contact->alias, FALSE, FALSE, NULL, |
|
| 1130 _("Alias"), G_CALLBACK(pidgin_dialogs_alias_contact_cb), |
|
| 1131 _("Cancel"), NULL, |
|
| 1132 NULL, purple_contact_get_alias(contact), NULL, |
|
| 1133 contact); |
|
| 1134 } |
|
| 1135 |
|
| 1136 static void |
|
| 1137 pidgin_dialogs_alias_buddy_cb(PurpleBuddy *buddy, const char *new_alias) |
1117 pidgin_dialogs_alias_buddy_cb(PurpleBuddy *buddy, const char *new_alias) |
| 1138 { |
1118 { |
| 1139 purple_blist_alias_buddy(buddy, new_alias); |
1119 purple_blist_alias_buddy(buddy, new_alias); |
| 1140 serv_alias_buddy(buddy); |
1120 serv_alias_buddy(buddy); |
| 1141 } |
1121 } |
| 1145 { |
1125 { |
| 1146 gchar *secondary; |
1126 gchar *secondary; |
| 1147 |
1127 |
| 1148 g_return_if_fail(buddy != NULL); |
1128 g_return_if_fail(buddy != NULL); |
| 1149 |
1129 |
| 1150 secondary = g_strdup_printf(_("Enter an alias for %s."), buddy->name); |
1130 secondary = g_strdup_printf(_("Enter an alias for %s."), purple_buddy_get_name(buddy)); |
| 1151 |
1131 |
| 1152 purple_request_input(NULL, _("Alias Buddy"), NULL, |
1132 purple_request_input(NULL, _("Alias Buddy"), NULL, |
| 1153 secondary, buddy->alias, FALSE, FALSE, NULL, |
1133 secondary, purple_buddy_get_local_buddy_alias(buddy), FALSE, FALSE, NULL, |
| 1154 _("Alias"), G_CALLBACK(pidgin_dialogs_alias_buddy_cb), |
1134 _("Alias"), G_CALLBACK(pidgin_dialogs_alias_buddy_cb), |
| 1155 _("Cancel"), NULL, |
1135 _("Cancel"), NULL, |
| 1156 purple_buddy_get_account(buddy), purple_buddy_get_name(buddy), NULL, |
1136 purple_buddy_get_account(buddy), purple_buddy_get_name(buddy), NULL, |
| 1157 buddy); |
1137 buddy); |
| 1158 |
1138 |
| 1187 |
1167 |
| 1188 cnode = (PurpleBlistNode *)contact; |
1168 cnode = (PurpleBlistNode *)contact; |
| 1189 group = (PurpleGroup*)cnode->parent; |
1169 group = (PurpleGroup*)cnode->parent; |
| 1190 for (bnode = cnode->child; bnode; bnode = bnode->next) { |
1170 for (bnode = cnode->child; bnode; bnode = bnode->next) { |
| 1191 PurpleBuddy *buddy = (PurpleBuddy*)bnode; |
1171 PurpleBuddy *buddy = (PurpleBuddy*)bnode; |
| 1192 if (purple_account_is_connected(buddy->account)) |
1172 if (purple_account_is_connected(purple_buddy_get_account(buddy))) |
| 1193 purple_account_remove_buddy(buddy->account, buddy, group); |
1173 purple_account_remove_buddy(purple_buddy_get_account(buddy), buddy, group); |
| 1194 } |
1174 } |
| 1195 purple_blist_remove_contact(contact); |
1175 purple_blist_remove_contact(contact); |
| 1196 } |
1176 } |
| 1197 |
1177 |
| 1198 void |
1178 void |
| 1214 "and %d other buddy from your buddy list. Do you " |
1194 "and %d other buddy from your buddy list. Do you " |
| 1215 "want to continue?", |
1195 "want to continue?", |
| 1216 "You are about to remove the contact containing %s " |
1196 "You are about to remove the contact containing %s " |
| 1217 "and %d other buddies from your buddy list. Do you " |
1197 "and %d other buddies from your buddy list. Do you " |
| 1218 "want to continue?", contact->totalsize - 1), |
1198 "want to continue?", contact->totalsize - 1), |
| 1219 buddy->name, contact->totalsize - 1); |
1199 purple_buddy_get_name(buddy), contact->totalsize - 1); |
| 1220 |
1200 |
| 1221 purple_request_action(contact, NULL, _("Remove Contact"), text, 0, |
1201 purple_request_action(contact, NULL, _("Remove Contact"), text, 0, |
| 1222 NULL, purple_contact_get_alias(contact), NULL, |
1202 NULL, purple_contact_get_alias(contact), NULL, |
| 1223 contact, 2, |
1203 contact, 2, |
| 1224 _("_Remove Contact"), G_CALLBACK(pidgin_dialogs_remove_contact_cb), |
1204 _("_Remove Contact"), G_CALLBACK(pidgin_dialogs_remove_contact_cb), |
| 1282 while (bnode) { |
1262 while (bnode) { |
| 1283 PurpleBuddy *buddy; |
1263 PurpleBuddy *buddy; |
| 1284 if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) { |
1264 if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) { |
| 1285 buddy = (PurpleBuddy*)bnode; |
1265 buddy = (PurpleBuddy*)bnode; |
| 1286 bnode = bnode->next; |
1266 bnode = bnode->next; |
| 1287 if (purple_account_is_connected(buddy->account)) { |
1267 if (purple_account_is_connected(purple_buddy_get_account(buddy))) { |
| 1288 purple_account_remove_buddy(buddy->account, buddy, group); |
1268 purple_account_remove_buddy(purple_buddy_get_account(buddy), buddy, group); |
| 1289 purple_blist_remove_buddy(buddy); |
1269 purple_blist_remove_buddy(buddy); |
| 1290 } |
1270 } |
| 1291 } else { |
1271 } else { |
| 1292 bnode = bnode->next; |
1272 bnode = bnode->next; |
| 1293 } |
1273 } |
| 1331 PurpleGroup *group; |
1311 PurpleGroup *group; |
| 1332 gchar *name; |
1312 gchar *name; |
| 1333 PurpleAccount *account; |
1313 PurpleAccount *account; |
| 1334 |
1314 |
| 1335 group = purple_buddy_get_group(buddy); |
1315 group = purple_buddy_get_group(buddy); |
| 1336 name = g_strdup(buddy->name); /* b->name is a crasher after remove_buddy */ |
1316 name = g_strdup(purple_buddy_get_name(buddy)); /* purple_buddy_get_name() is a crasher after remove_buddy */ |
| 1337 account = buddy->account; |
1317 account = purple_buddy_get_account(buddy); |
| 1338 |
1318 |
| 1339 purple_debug_info("blist", "Removing '%s' from buddy list.\n", buddy->name); |
1319 purple_debug_info("blist", "Removing '%s' from buddy list.\n", purple_buddy_get_name(buddy)); |
| 1340 /* TODO - Should remove from blist first... then call purple_account_remove_buddy()? */ |
1320 /* TODO - Should remove from blist first... then call purple_account_remove_buddy()? */ |
| 1341 purple_account_remove_buddy(account, buddy, group); |
1321 purple_account_remove_buddy(account, buddy, group); |
| 1342 purple_blist_remove_buddy(buddy); |
1322 purple_blist_remove_buddy(buddy); |
| 1343 |
1323 |
| 1344 g_free(name); |
1324 g_free(name); |
| 1350 gchar *text; |
1330 gchar *text; |
| 1351 |
1331 |
| 1352 g_return_if_fail(buddy != NULL); |
1332 g_return_if_fail(buddy != NULL); |
| 1353 |
1333 |
| 1354 text = g_strdup_printf(_("You are about to remove %s from your buddy list. Do you want to continue?"), |
1334 text = g_strdup_printf(_("You are about to remove %s from your buddy list. Do you want to continue?"), |
| 1355 buddy->name); |
1335 purple_buddy_get_name(buddy)); |
| 1356 |
1336 |
| 1357 purple_request_action(buddy, NULL, _("Remove Buddy"), text, 0, |
1337 purple_request_action(buddy, NULL, _("Remove Buddy"), text, 0, |
| 1358 purple_buddy_get_account(buddy), purple_buddy_get_name(buddy), NULL, |
1338 purple_buddy_get_account(buddy), purple_buddy_get_name(buddy), NULL, |
| 1359 buddy, 2, |
1339 buddy, 2, |
| 1360 _("_Remove Buddy"), G_CALLBACK(pidgin_dialogs_remove_buddy_cb), |
1340 _("_Remove Buddy"), G_CALLBACK(pidgin_dialogs_remove_buddy_cb), |