Mercurial > pidgin
comparison src/dialogs.c @ 3367:3b00d97d59aa
[gaim-migrate @ 3386]
There'll be more tommorow! Thanks for coming to the party.
committer: Tailor Script <tailor@pidgin.im>
| author | Sean Egan <seanegan@gmail.com> |
|---|---|
| date | Fri, 02 Aug 2002 04:52:48 +0000 |
| parents | dd34e0b40fed |
| children | 3cd2fbddf95a |
comparison
equal
deleted
inserted
replaced
| 3366:120e08ea5aee | 3367:3b00d97d59aa |
|---|---|
| 52 #include "pixmaps/save.xpm" | 52 #include "pixmaps/save.xpm" |
| 53 #include "pixmaps/ok.xpm" | 53 #include "pixmaps/ok.xpm" |
| 54 #include "pixmaps/add.xpm" | 54 #include "pixmaps/add.xpm" |
| 55 #include "pixmaps/warn.xpm" | 55 #include "pixmaps/warn.xpm" |
| 56 #include "pixmaps/close.xpm" | 56 #include "pixmaps/close.xpm" |
| 57 #include "pixmaps/gnome_add.xpm" | |
| 58 #include "pixmaps/gnome_remove.xpm" | |
| 57 | 59 |
| 58 #include "pixmaps/angel.xpm" | 60 #include "pixmaps/angel.xpm" |
| 59 #include "pixmaps/bigsmile.xpm" | 61 #include "pixmaps/bigsmile.xpm" |
| 60 #include "pixmaps/burp.xpm" | 62 #include "pixmaps/burp.xpm" |
| 61 #include "pixmaps/crossedlips.xpm" | 63 #include "pixmaps/crossedlips.xpm" |
| 1118 gtk_widget_show_all(a->window); | 1120 gtk_widget_show_all(a->window); |
| 1119 if (group != NULL) | 1121 if (group != NULL) |
| 1120 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(a->combo)->entry), group); | 1122 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(a->combo)->entry), group); |
| 1121 } | 1123 } |
| 1122 | 1124 |
| 1125 | |
| 1126 /*------------------------------------------------------------------------* | |
| 1127 * Privacy Settings * | |
| 1128 *------------------------------------------------------------------------*/ | |
| 1129 static GtkWidget *deny_type = NULL; | |
| 1130 static GtkWidget *deny_conn_hbox = NULL; | |
| 1131 static GtkWidget *deny_opt_menu = NULL; | |
| 1132 static struct gaim_connection *current_deny_gc = NULL; | |
| 1133 static gboolean current_is_deny = FALSE; | |
| 1134 static GtkWidget *allow_list = NULL; | |
| 1135 static GtkWidget *block_list = NULL; | |
| 1136 | |
| 1137 static void set_deny_mode(GtkWidget *w, int data) | |
| 1138 { | |
| 1139 if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) | |
| 1140 return; | |
| 1141 debug_printf("setting deny mode %d\n", data); | |
| 1142 current_deny_gc->permdeny = data; | |
| 1143 serv_set_permit_deny(current_deny_gc); | |
| 1144 do_export(current_deny_gc); | |
| 1145 } | |
| 1146 | |
| 1147 static GtkWidget *deny_opt(char *label, int which, GtkWidget *box, GtkWidget *set) | |
| 1148 { | |
| 1149 GtkWidget *opt; | |
| 1150 | |
| 1151 if (!set) | |
| 1152 opt = gtk_radio_button_new_with_label(NULL, label); | |
| 1153 else | |
| 1154 opt = | |
| 1155 gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(set)), | |
| 1156 label); | |
| 1157 gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0); | |
| 1158 gtk_signal_connect(GTK_OBJECT(opt), "toggled", GTK_SIGNAL_FUNC(set_deny_mode), (void *)which); | |
| 1159 gtk_widget_show(opt); | |
| 1160 if (current_deny_gc->permdeny == which) | |
| 1161 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE); | |
| 1162 | |
| 1163 return opt; | |
| 1164 } | |
| 1165 | |
| 1166 static void des_deny_opt(GtkWidget *d, gpointer e) | |
| 1167 { | |
| 1168 gtk_widget_destroy(d); | |
| 1169 current_deny_gc = NULL; | |
| 1170 deny_conn_hbox = NULL; | |
| 1171 deny_type = NULL; | |
| 1172 deny_opt_menu = NULL; | |
| 1173 current_is_deny = FALSE; | |
| 1174 allow_list = NULL; | |
| 1175 block_list = NULL; | |
| 1176 } | |
| 1177 | |
| 1178 static void set_deny_type() | |
| 1179 { | |
| 1180 GSList *bg = gtk_radio_button_group(GTK_RADIO_BUTTON(deny_type)); | |
| 1181 | |
| 1182 switch (current_deny_gc->permdeny) { | |
| 1183 case 4: | |
| 1184 break; | |
| 1185 case 3: | |
| 1186 bg = bg->next->next; | |
| 1187 break; | |
| 1188 case 2: | |
| 1189 bg = bg->next; | |
| 1190 break; | |
| 1191 case 1: | |
| 1192 bg = bg->next->next->next; | |
| 1193 break; | |
| 1194 } | |
| 1195 | |
| 1196 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(bg->data), TRUE); | |
| 1197 } | |
| 1198 | |
| 1199 void build_allow_list() | |
| 1200 { | |
| 1201 GtkWidget *label; | |
| 1202 GtkWidget *list_item; | |
| 1203 GSList *p; | |
| 1204 | |
| 1205 if (!current_is_deny) | |
| 1206 return; | |
| 1207 | |
| 1208 p = current_deny_gc->permit; | |
| 1209 | |
| 1210 gtk_list_remove_items(GTK_LIST(allow_list), GTK_LIST(allow_list)->children); | |
| 1211 | |
| 1212 while (p) { | |
| 1213 label = gtk_label_new(p->data); | |
| 1214 list_item = gtk_list_item_new(); | |
| 1215 gtk_container_add(GTK_CONTAINER(list_item), label); | |
| 1216 gtk_object_set_user_data(GTK_OBJECT(list_item), p->data); | |
| 1217 gtk_widget_show(label); | |
| 1218 gtk_container_add(GTK_CONTAINER(allow_list), list_item); | |
| 1219 gtk_widget_show(list_item); | |
| 1220 p = p->next; | |
| 1221 } | |
| 1222 } | |
| 1223 | |
| 1224 void build_block_list() | |
| 1225 { | |
| 1226 GtkWidget *label; | |
| 1227 GtkWidget *list_item; | |
| 1228 GSList *d; | |
| 1229 | |
| 1230 if (!current_is_deny) | |
| 1231 return; | |
| 1232 | |
| 1233 d = current_deny_gc->deny; | |
| 1234 | |
| 1235 gtk_list_remove_items(GTK_LIST(block_list), GTK_LIST(block_list)->children); | |
| 1236 | |
| 1237 while (d) { | |
| 1238 label = gtk_label_new(d->data); | |
| 1239 list_item = gtk_list_item_new(); | |
| 1240 gtk_container_add(GTK_CONTAINER(list_item), label); | |
| 1241 gtk_object_set_user_data(GTK_OBJECT(list_item), d->data); | |
| 1242 gtk_widget_show(label); | |
| 1243 gtk_container_add(GTK_CONTAINER(block_list), list_item); | |
| 1244 gtk_widget_show(list_item); | |
| 1245 d = d->next; | |
| 1246 } | |
| 1247 } | |
| 1248 | |
| 1249 static void deny_gc_opt(GtkWidget *opt, struct gaim_connection *gc) | |
| 1250 { | |
| 1251 current_deny_gc = gc; | |
| 1252 set_deny_type(); | |
| 1253 build_allow_list(); | |
| 1254 build_block_list(); | |
| 1255 } | |
| 1256 | |
| 1257 static void build_deny_menu() | |
| 1258 { | |
| 1259 GtkWidget *menu; | |
| 1260 GtkWidget *opt; | |
| 1261 GSList *c = connections; | |
| 1262 struct gaim_connection *gc; | |
| 1263 int count = 0; | |
| 1264 gboolean found = FALSE; | |
| 1265 char buf[2048]; | |
| 1266 | |
| 1267 if (g_slist_length(connections) == 1) { | |
| 1268 gtk_widget_hide(deny_conn_hbox); | |
| 1269 return; | |
| 1270 } else | |
| 1271 gtk_widget_show(deny_conn_hbox); | |
| 1272 | |
| 1273 menu = gtk_menu_new(); | |
| 1274 | |
| 1275 while (c) { | |
| 1276 gc = (struct gaim_connection *)c->data; | |
| 1277 c = c->next; | |
| 1278 if (!gc->prpl->set_permit_deny) | |
| 1279 continue; | |
| 1280 g_snprintf(buf, sizeof buf, "%s (%s)", gc->username, gc->prpl->name()); | |
| 1281 opt = gtk_menu_item_new_with_label(buf); | |
| 1282 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(deny_gc_opt), gc); | |
| 1283 gtk_widget_show(opt); | |
| 1284 gtk_menu_append(GTK_MENU(menu), opt); | |
| 1285 if (gc == current_deny_gc) | |
| 1286 found = TRUE; | |
| 1287 else if (!found) | |
| 1288 count++; | |
| 1289 } | |
| 1290 | |
| 1291 if (!found) { | |
| 1292 current_deny_gc = connections->data; | |
| 1293 count = 0; | |
| 1294 } | |
| 1295 | |
| 1296 gtk_option_menu_remove_menu(GTK_OPTION_MENU(deny_opt_menu)); | |
| 1297 gtk_option_menu_set_menu(GTK_OPTION_MENU(deny_opt_menu), menu); | |
| 1298 gtk_option_menu_set_history(GTK_OPTION_MENU(deny_opt_menu), count); | |
| 1299 | |
| 1300 gtk_widget_show(menu); | |
| 1301 gtk_widget_show(deny_opt_menu); | |
| 1302 } | |
| 1303 | |
| 1304 static void pref_deny_add(GtkWidget *button, gboolean permit) | |
| 1305 { | |
| 1306 show_add_perm(current_deny_gc, NULL, permit); | |
| 1307 } | |
| 1308 | |
| 1309 static void pref_deny_rem(GtkWidget *button, gboolean permit) | |
| 1310 { | |
| 1311 GList *i; | |
| 1312 char *who; | |
| 1313 | |
| 1314 if (permit && !allow_list) | |
| 1315 return; | |
| 1316 if (!permit && !block_list) | |
| 1317 return; | |
| 1318 | |
| 1319 if (permit) | |
| 1320 i = GTK_LIST(allow_list)->selection; | |
| 1321 else | |
| 1322 i = GTK_LIST(block_list)->selection; | |
| 1323 | |
| 1324 if (!i) | |
| 1325 return; | |
| 1326 who = gtk_object_get_user_data(GTK_OBJECT(i->data)); | |
| 1327 if (permit) { | |
| 1328 current_deny_gc->permit = g_slist_remove(current_deny_gc->permit, who); | |
| 1329 serv_rem_permit(current_deny_gc, who); | |
| 1330 build_allow_list(); | |
| 1331 } else { | |
| 1332 current_deny_gc->deny = g_slist_remove(current_deny_gc->deny, who); | |
| 1333 serv_rem_deny(current_deny_gc, who); | |
| 1334 build_block_list(); | |
| 1335 } | |
| 1336 | |
| 1337 do_export(current_deny_gc); | |
| 1338 } | |
| 1339 | |
| 1340 GtkWidget *privacy_win; | |
| 1341 void update_privacy_connections() { /* This is a slightly better name */ | |
| 1342 gboolean needdeny = FALSE; | |
| 1343 GSList *c = connections; | |
| 1344 struct gaim_connection *gc = NULL; | |
| 1345 | |
| 1346 if (!privacy_win) | |
| 1347 return; | |
| 1348 | |
| 1349 while (c) { | |
| 1350 gc = c->data; | |
| 1351 if (gc->prpl->set_permit_deny) | |
| 1352 break; | |
| 1353 gc = NULL; | |
| 1354 c = c->next; | |
| 1355 } | |
| 1356 needdeny = (gc != NULL); | |
| 1357 | |
| 1358 | |
| 1359 if (needdeny) { | |
| 1360 gtk_widget_set_sensitive(privacy_win, TRUE); | |
| 1361 build_deny_menu(); | |
| 1362 build_allow_list(); | |
| 1363 build_block_list(); | |
| 1364 } else { | |
| 1365 gtk_widget_set_sensitive(privacy_win, FALSE); | |
| 1366 } | |
| 1367 } | |
| 1368 static void destroy_privacy() { | |
| 1369 current_deny_gc = NULL; | |
| 1370 privacy_win = NULL; | |
| 1371 } | |
| 1372 | |
| 1373 void show_privacy_options() | |
| 1374 { | |
| 1375 GtkWidget *pwin; | |
| 1376 GtkWidget *box; | |
| 1377 GtkWidget *hbox; | |
| 1378 GtkWidget *label; | |
| 1379 GtkWidget *vbox; | |
| 1380 GtkWidget *sw; | |
| 1381 GtkWidget *bbox; | |
| 1382 GtkWidget *button; | |
| 1383 GtkWidget *sep; | |
| 1384 GtkWidget *close_button; | |
| 1385 | |
| 1386 current_deny_gc = connections->data; /* this is safe because this screen will only be | |
| 1387 available when there are connections */ | |
| 1388 current_is_deny = TRUE; | |
| 1389 | |
| 1390 | |
| 1391 privacy_win = pwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 1392 gtk_window_set_policy(GTK_WINDOW(pwin), FALSE, TRUE, TRUE); | |
| 1393 gtk_window_set_wmclass(GTK_WINDOW(pwin), "privacy", "Gaim"); | |
| 1394 gtk_window_set_title(GTK_WINDOW(pwin), _("Gaim - Privacy")); | |
| 1395 gtk_signal_connect(GTK_OBJECT(pwin), "destroy", GTK_SIGNAL_FUNC(destroy_privacy), NULL); | |
| 1396 gtk_widget_realize(pwin); | |
| 1397 aol_icon(pwin->window); | |
| 1398 | |
| 1399 gtk_widget_set_usize(pwin, 0, 400); | |
| 1400 | |
| 1401 box = gtk_vbox_new(FALSE, 5); | |
| 1402 gtk_container_set_border_width(GTK_CONTAINER(box), 5); | |
| 1403 gtk_container_add(GTK_CONTAINER(pwin), box); | |
| 1404 gtk_widget_show(box); | |
| 1405 | |
| 1406 label = gtk_label_new(_("Privacy settings are affected immediately.")); | |
| 1407 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); | |
| 1408 gtk_widget_show(label); | |
| 1409 | |
| 1410 deny_conn_hbox = gtk_hbox_new(FALSE, 5); | |
| 1411 gtk_box_pack_start(GTK_BOX(box), deny_conn_hbox, FALSE, FALSE, 0); | |
| 1412 gtk_widget_show(deny_conn_hbox); | |
| 1413 | |
| 1414 label = gtk_label_new(_("Set privacy for:")); | |
| 1415 gtk_box_pack_start(GTK_BOX(deny_conn_hbox), label, FALSE, FALSE, 5); | |
| 1416 gtk_widget_show(label); | |
| 1417 | |
| 1418 deny_opt_menu = gtk_option_menu_new(); | |
| 1419 gtk_box_pack_start(GTK_BOX(deny_conn_hbox), deny_opt_menu, FALSE, FALSE, 5); | |
| 1420 gtk_signal_connect(GTK_OBJECT(deny_opt_menu), "destroy", GTK_SIGNAL_FUNC(des_deny_opt), NULL); | |
| 1421 gtk_widget_show(deny_opt_menu); | |
| 1422 | |
| 1423 build_deny_menu(); | |
| 1424 | |
| 1425 hbox = gtk_hbox_new(FALSE, 5); | |
| 1426 gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 5); | |
| 1427 gtk_widget_show(hbox); | |
| 1428 | |
| 1429 vbox = gtk_vbox_new(FALSE, 5); | |
| 1430 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5); | |
| 1431 gtk_widget_show(vbox); | |
| 1432 | |
| 1433 deny_type = deny_opt(_("Allow all users to contact me"), 1, vbox, NULL); | |
| 1434 deny_type = deny_opt(_("Allow only the users below"), 3, vbox, deny_type); | |
| 1435 | |
| 1436 label = gtk_label_new(_("Allow List")); | |
| 1437 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5); | |
| 1438 gtk_widget_show(label); | |
| 1439 | |
| 1440 sw = gtk_scrolled_window_new(NULL, NULL); | |
| 1441 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
| 1442 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 5); | |
| 1443 gtk_widget_show(sw); | |
| 1444 | |
| 1445 allow_list = gtk_list_new(); | |
| 1446 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), allow_list); | |
| 1447 gtk_widget_show(allow_list); | |
| 1448 | |
| 1449 build_allow_list(); | |
| 1450 | |
| 1451 bbox = gtk_hbox_new(TRUE, 5); | |
| 1452 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 5); | |
| 1453 gtk_widget_show(bbox); | |
| 1454 | |
| 1455 button = picture_button(pwin, _("Add"), gnome_add_xpm); | |
| 1456 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(pref_deny_add), (void *)TRUE); | |
| 1457 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5); | |
| 1458 | |
| 1459 button = picture_button(pwin, _("Remove"), gnome_remove_xpm); | |
| 1460 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(pref_deny_rem), (void *)TRUE); | |
| 1461 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5); | |
| 1462 | |
| 1463 vbox = gtk_vbox_new(FALSE, 5); | |
| 1464 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5); | |
| 1465 gtk_widget_show(vbox); | |
| 1466 | |
| 1467 deny_type = deny_opt(_("Deny all users"), 2, vbox, deny_type); | |
| 1468 deny_type = deny_opt(_("Block the users below"), 4, vbox, deny_type); | |
| 1469 | |
| 1470 label = gtk_label_new(_("Block List")); | |
| 1471 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5); | |
| 1472 gtk_widget_show(label); | |
| 1473 | |
| 1474 sw = gtk_scrolled_window_new(NULL, NULL); | |
| 1475 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
| 1476 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 5); | |
| 1477 gtk_widget_show(sw); | |
| 1478 | |
| 1479 block_list = gtk_list_new(); | |
| 1480 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), block_list); | |
| 1481 gtk_widget_show(block_list); | |
| 1482 | |
| 1483 build_block_list(); | |
| 1484 | |
| 1485 bbox = gtk_hbox_new(TRUE, 5); | |
| 1486 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 5); | |
| 1487 gtk_widget_show(bbox); | |
| 1488 | |
| 1489 button = picture_button(pwin, _("Add"), gnome_add_xpm); | |
| 1490 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(pref_deny_add), FALSE); | |
| 1491 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5); | |
| 1492 | |
| 1493 button = picture_button(pwin, _("Remove"), gnome_remove_xpm); | |
| 1494 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(pref_deny_rem), FALSE); | |
| 1495 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5); | |
| 1496 | |
| 1497 sep = gtk_hseparator_new(); | |
| 1498 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5); | |
| 1499 gtk_widget_show(sep); | |
| 1500 | |
| 1501 hbox = gtk_hbox_new(TRUE, 5); | |
| 1502 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); | |
| 1503 gtk_widget_show(hbox); | |
| 1504 close_button = picture_button(pwin, _("Close"), cancel_xpm); | |
| 1505 gtk_box_pack_end(GTK_BOX(hbox), close_button, FALSE, FALSE, 5); | |
| 1506 gtk_signal_connect_object(GTK_OBJECT(close_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), pwin); | |
| 1507 | |
| 1508 gtk_widget_show(pwin); | |
| 1509 } | |
| 1510 | |
| 1511 | |
| 1123 | 1512 |
| 1124 /*------------------------------------------------------------------------*/ | 1513 /*------------------------------------------------------------------------*/ |
| 1125 /* The dialog for new buddy pounces */ | 1514 /* The dialog for new buddy pounces */ |
| 1126 /*------------------------------------------------------------------------*/ | 1515 /*------------------------------------------------------------------------*/ |
| 1127 | 1516 |
| 2571 | 2960 |
| 2572 /*------------------------------------------------------*/ | 2961 /*------------------------------------------------------*/ |
| 2573 /* Color Selection Dialog */ | 2962 /* Color Selection Dialog */ |
| 2574 /*------------------------------------------------------*/ | 2963 /*------------------------------------------------------*/ |
| 2575 | 2964 |
| 2576 static GtkWidget *fgcseld = NULL; | 2965 GtkWidget *fgcseld = NULL; |
| 2577 static GtkWidget *bgcseld = NULL; | 2966 GtkWidget *bgcseld = NULL; |
| 2578 | 2967 |
| 2579 void cancel_fgcolor(GtkWidget *widget, struct conversation *c) | 2968 void cancel_fgcolor(GtkWidget *widget, struct conversation *c) |
| 2580 { | 2969 { |
| 2581 if (c->fgcolorbtn && widget) { | 2970 if (c->fgcolorbtn && widget) { |
| 2582 set_state_lock(1); | 2971 set_state_lock(1); |
| 2652 text_color.blue); | 3041 text_color.blue); |
| 2653 surround(c->entry, open_tag, "</BODY>"); | 3042 surround(c->entry, open_tag, "</BODY>"); |
| 2654 debug_printf("#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); | 3043 debug_printf("#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); |
| 2655 g_free(open_tag); | 3044 g_free(open_tag); |
| 2656 cancel_bgcolor(NULL, c); | 3045 cancel_bgcolor(NULL, c); |
| 2657 } | |
| 2658 | |
| 2659 static void destroy_colorsel(GtkWidget *w, gpointer d) | |
| 2660 { | |
| 2661 if (d) { | |
| 2662 gtk_widget_destroy(fgcseld); | |
| 2663 fgcseld = NULL; | |
| 2664 } else { | |
| 2665 gtk_widget_destroy(bgcseld); | |
| 2666 bgcseld = NULL; | |
| 2667 } | |
| 2668 } | |
| 2669 | |
| 2670 static void apply_color_dlg(GtkWidget *w, gpointer d) | |
| 2671 { | |
| 2672 gdouble color[3]; | |
| 2673 if ((int)d == 1) { | |
| 2674 gtk_color_selection_get_color(GTK_COLOR_SELECTION | |
| 2675 (GTK_COLOR_SELECTION_DIALOG(fgcseld)->colorsel), color); | |
| 2676 destroy_colorsel(NULL, (void *)1); | |
| 2677 | |
| 2678 fgcolor.red = ((guint16)(color[0] * 65535)) >> 8; | |
| 2679 fgcolor.green = ((guint16)(color[1] * 65535)) >> 8; | |
| 2680 fgcolor.blue = ((guint16)(color[2] * 65535)) >> 8; | |
| 2681 update_color(NULL, pref_fg_picture); | |
| 2682 update_convo_color(TRUE); | |
| 2683 } else { | |
| 2684 gtk_color_selection_get_color(GTK_COLOR_SELECTION | |
| 2685 (GTK_COLOR_SELECTION_DIALOG(bgcseld)->colorsel), color); | |
| 2686 destroy_colorsel(NULL, (void *)0); | |
| 2687 | |
| 2688 bgcolor.red = ((guint16)(color[0] * 65535)) >> 8; | |
| 2689 bgcolor.green = ((guint16)(color[1] * 65535)) >> 8; | |
| 2690 bgcolor.blue = ((guint16)(color[2] * 65535)) >> 8; | |
| 2691 update_color(NULL, pref_bg_picture); | |
| 2692 update_convo_color(FALSE); | |
| 2693 } | |
| 2694 } | 3046 } |
| 2695 | 3047 |
| 2696 void show_fgcolor_dialog(struct conversation *c, GtkWidget *color) | 3048 void show_fgcolor_dialog(struct conversation *c, GtkWidget *color) |
| 2697 { | 3049 { |
| 2698 GtkWidget *colorsel; | 3050 GtkWidget *colorsel; |
| 2851 | 3203 |
| 2852 void destroy_fontsel(GtkWidget *w, gpointer d) | 3204 void destroy_fontsel(GtkWidget *w, gpointer d) |
| 2853 { | 3205 { |
| 2854 gtk_widget_destroy(fontseld); | 3206 gtk_widget_destroy(fontseld); |
| 2855 fontseld = NULL; | 3207 fontseld = NULL; |
| 2856 } | |
| 2857 | |
| 2858 void apply_font_dlg(GtkWidget *w, GtkWidget *f) | |
| 2859 { | |
| 2860 int i, j = 0, k = 0; | |
| 2861 char *fontname; | |
| 2862 | |
| 2863 fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(fontseld)); | |
| 2864 destroy_fontsel(0, 0); | |
| 2865 for (i = 0; i < strlen(fontname); i++) { | |
| 2866 if (fontname[i] == '-') { | |
| 2867 if (++j > 2) | |
| 2868 break; | |
| 2869 } else if (j == 2) | |
| 2870 fontface[k++] = fontname[i]; | |
| 2871 } | |
| 2872 fontface[k] = '\0'; | |
| 2873 g_snprintf(fontxfld, sizeof(fontxfld), "%s", fontname); | |
| 2874 update_convo_font(); | |
| 2875 } | 3208 } |
| 2876 | 3209 |
| 2877 void show_font_dialog(struct conversation *c, GtkWidget *font) | 3210 void show_font_dialog(struct conversation *c, GtkWidget *font) |
| 2878 { | 3211 { |
| 2879 | 3212 |
| 4223 gdk_window_set_icon(w, NULL, icon_pm, icon_bm); | 4556 gdk_window_set_icon(w, NULL, icon_pm, icon_bm); |
| 4224 if (mainwindow) | 4557 if (mainwindow) |
| 4225 gdk_window_set_group(w, mainwindow->window); | 4558 gdk_window_set_group(w, mainwindow->window); |
| 4226 #endif | 4559 #endif |
| 4227 } | 4560 } |
| 4561 | |
| 4562 #if GTK_CHECK_VERSION(1,3,0) | |
| 4563 GtkWidget *pixbuf_button(char *text, char *iconfile) | |
| 4564 { | |
| 4565 GtkWidget *button, *image, *label, *bbox; | |
| 4566 button = gtk_button_new(); | |
| 4567 bbox = gtk_hbox_new(FALSE, 5); | |
| 4568 gtk_container_add (GTK_CONTAINER(button), bbox); | |
| 4569 if (iconfile) { | |
| 4570 char *filename; | |
| 4571 filename = g_build_filename (DATADIR, "pixmaps", "gaim", "buttons", iconfile, NULL); | |
| 4572 debug_printf("Loading: %s\n", filename); | |
| 4573 image = gtk_image_new_from_file(filename); | |
| 4574 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); | |
| 4575 g_free(filename); | |
| 4576 } | |
| 4577 if (text) { | |
| 4578 label = gtk_label_new(NULL); | |
| 4579 gtk_label_set_text_with_mnemonic(GTK_LABEL(label), text); | |
| 4580 gtk_label_set_mnemonic_widget(GTK_LABEL(label), button); | |
| 4581 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); | |
| 4582 } | |
| 4583 gtk_widget_show_all(bbox); | |
| 4584 return button; | |
| 4585 } | |
| 4586 #endif | |
| 4228 | 4587 |
| 4229 GtkWidget *picture_button(GtkWidget *window, char *text, char **xpm) | 4588 GtkWidget *picture_button(GtkWidget *window, char *text, char **xpm) |
| 4230 { | 4589 { |
| 4231 GtkWidget *button; | 4590 GtkWidget *button; |
| 4232 GtkWidget *button_box, *button_box_2, *button_box_3; | 4591 GtkWidget *button_box, *button_box_2, *button_box_3; |
