pidgin/gtkdialogs.c

changeset 32710
e07993a28f20
parent 32709
0edad3ff7243
child 32712
b0fbaebd28a2
equal deleted inserted replaced
32056:5ecbc7cf4ee1 32710:e07993a28f20
37 #include "util.h" 37 #include "util.h"
38 #include "core.h" 38 #include "core.h"
39 39
40 #include "gtkblist.h" 40 #include "gtkblist.h"
41 #include "gtkdialogs.h" 41 #include "gtkdialogs.h"
42 #include "gtkimhtml.h"
43 #include "gtkimhtmltoolbar.h"
44 #include "gtklog.h" 42 #include "gtklog.h"
45 #include "gtkutils.h" 43 #include "gtkutils.h"
44 #include "gtkwebview.h"
46 #include "pidginstock.h" 45 #include "pidginstock.h"
47 46
48 static GList *dialogwindows = NULL; 47 static GList *dialogwindows = NULL;
49 48
50 struct _PidginGroupMergeObject { 49 struct _PidginGroupMergeObject {
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),

mercurial