Mercurial > pidgin.yaz
comparison src/gtkconv.c @ 7928:dca50d465b7d
[gaim-migrate @ 8599]
Fixes the add/remove button. Whoops. I might end up changing this
soonish...
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 25 Dec 2003 17:52:44 +0000 |
parents | 1441648fe974 |
children | 94a90bf90f32 |
comparison
equal
deleted
inserted
replaced
7927:1441648fe974 | 7928:dca50d465b7d |
---|---|
457 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); | 457 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry)); |
458 default_formatize(conv); | 458 default_formatize(conv); |
459 } | 459 } |
460 | 460 |
461 static void | 461 static void |
462 add_cb(GtkWidget *widget, GaimConversation *conv) | 462 add_remove_cb(GtkWidget *widget, GaimConversation *conv) |
463 { | 463 { |
464 GaimAccount *account; | 464 GaimAccount *account; |
465 const char *name; | 465 const char *name; |
466 | 466 |
467 account = gaim_conversation_get_account(conv); | 467 account = gaim_conversation_get_account(conv); |
943 GaimConvWindow *win = (GaimConvWindow *)data; | 943 GaimConvWindow *win = (GaimConvWindow *)data; |
944 GaimConversation *conv; | 944 GaimConversation *conv; |
945 | 945 |
946 conv = gaim_conv_window_get_active_conversation(win); | 946 conv = gaim_conv_window_get_active_conversation(win); |
947 | 947 |
948 add_cb(NULL, conv); | 948 add_remove_cb(NULL, conv); |
949 } | 949 } |
950 | 950 |
951 static void | 951 static void |
952 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) | 952 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
953 { | 953 { |
1170 prpl_info->get_cb_away(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); | 1170 prpl_info->get_cb_away(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)), who); |
1171 } | 1171 } |
1172 } | 1172 } |
1173 | 1173 |
1174 static void | 1174 static void |
1175 menu_chat_add_cb(GtkWidget *w, GaimConversation *conv) | 1175 menu_chat_add_remove_cb(GtkWidget *w, GaimConversation *conv) |
1176 { | 1176 { |
1177 GaimAccount *account; | 1177 GaimAccount *account; |
1178 GaimBuddy *b; | 1178 GaimBuddy *b; |
1179 char *name; | 1179 char *name; |
1180 | 1180 |
1290 button = gtk_menu_item_new_with_label(_("Remove")); | 1290 button = gtk_menu_item_new_with_label(_("Remove")); |
1291 else | 1291 else |
1292 button = gtk_menu_item_new_with_label(_("Add")); | 1292 button = gtk_menu_item_new_with_label(_("Add")); |
1293 | 1293 |
1294 g_signal_connect(G_OBJECT(button), "activate", | 1294 g_signal_connect(G_OBJECT(button), "activate", |
1295 G_CALLBACK(menu_chat_add_cb), conv); | 1295 G_CALLBACK(menu_chat_add_remove_cb), conv); |
1296 | 1296 |
1297 g_object_set_data(G_OBJECT(button), "user_data", who); | 1297 g_object_set_data(G_OBJECT(button), "user_data", who); |
1298 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); | 1298 gtk_menu_shell_append(GTK_MENU_SHELL(menu), button); |
1299 gtk_widget_show(button); | 1299 gtk_widget_show(button); |
1300 } | 1300 } |
2275 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); | 2275 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
2276 g_object_unref(G_OBJECT(window_icon)); | 2276 g_object_unref(G_OBJECT(window_icon)); |
2277 } | 2277 } |
2278 | 2278 |
2279 static void | 2279 static void |
2280 update_convo_add_button(GaimConversation *conv) | |
2281 { | |
2282 GaimPluginProtocolInfo *prpl_info = NULL; | |
2283 GaimConvWindow *win; | |
2284 GaimGtkWindow *gtkwin; | |
2285 GaimGtkConversation *gtkconv; | |
2286 GaimConnection *gc; | |
2287 GaimConversationType type; | |
2288 GtkWidget *parent; | |
2289 | |
2290 gc = gaim_conversation_get_gc(conv); | |
2291 win = gaim_conversation_get_window(conv); | |
2292 type = gaim_conversation_get_type(conv); | |
2293 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
2294 gtkwin = GAIM_GTK_WINDOW(win); | |
2295 parent = gtk_widget_get_parent(gtkconv->u.im->add); | |
2296 | |
2297 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
2298 | |
2299 if (gaim_find_buddy(gc->account, gaim_conversation_get_name(conv))) { | |
2300 gtkconv->u.im->add = | |
2301 gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add, | |
2302 GTK_STOCK_REMOVE, type); | |
2303 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, | |
2304 _("Remove the user from your buddy list"), NULL); | |
2305 | |
2306 gtk_widget_set_sensitive(gtkconv->u.im->add, | |
2307 (gc != NULL && prpl_info->remove_buddy != NULL)); | |
2308 | |
2309 if (gaim_conv_window_get_active_conversation(win) == conv) { | |
2310 gtk_widget_show(gtkwin->menu.remove); | |
2311 gtk_widget_hide(gtkwin->menu.add); | |
2312 } | |
2313 } | |
2314 else { | |
2315 gtkconv->u.im->add = | |
2316 gaim_gtk_change_text(_("Add"), gtkconv->u.im->add, | |
2317 GTK_STOCK_ADD, type); | |
2318 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, | |
2319 _("Add the user to your buddy list"), NULL); | |
2320 | |
2321 gtk_widget_set_sensitive(gtkconv->u.im->add, | |
2322 (gc != NULL && prpl_info->add_buddy != NULL)); | |
2323 | |
2324 if (gaim_conv_window_get_active_conversation(win) == conv) { | |
2325 gtk_widget_show(gtkwin->menu.add); | |
2326 gtk_widget_hide(gtkwin->menu.remove); | |
2327 } | |
2328 } | |
2329 | |
2330 g_signal_connect(G_OBJECT(gtkconv->u.im->add), "clicked", | |
2331 G_CALLBACK(add_remove_cb), conv); | |
2332 | |
2333 gtk_box_pack_start(GTK_BOX(parent), gtkconv->u.im->add, | |
2334 FALSE, FALSE, 0); | |
2335 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->u.im->add, 3); | |
2336 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.im->add), GTK_RELIEF_NONE); | |
2337 gtk_size_group_add_widget(gtkconv->sg, gtkconv->u.im->add); | |
2338 } | |
2339 | |
2340 static void | |
2280 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, | 2341 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num, |
2281 gpointer user_data) | 2342 gpointer user_data) |
2282 { | 2343 { |
2283 GaimConvWindow *win; | 2344 GaimConvWindow *win; |
2284 GaimConversation *conv; | 2345 GaimConversation *conv; |
3275 G_CALLBACK(info_cb), conv); | 3336 G_CALLBACK(info_cb), conv); |
3276 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", | 3337 g_signal_connect(G_OBJECT(gtkim->warn), "clicked", |
3277 G_CALLBACK(warn_cb), conv); | 3338 G_CALLBACK(warn_cb), conv); |
3278 g_signal_connect(G_OBJECT(gtkim->block), "clicked", | 3339 g_signal_connect(G_OBJECT(gtkim->block), "clicked", |
3279 G_CALLBACK(block_cb), conv); | 3340 G_CALLBACK(block_cb), conv); |
3341 | |
3342 /* The add or remove button */ | |
3343 update_convo_add_button(conv); | |
3280 } | 3344 } |
3281 | 3345 |
3282 static void | 3346 static void |
3283 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) | 3347 setup_chat_buttons(GaimConversation *conv, GtkWidget *parent) |
3284 { | 3348 { |
4379 gaim_gtk_add_conversation, | 4443 gaim_gtk_add_conversation, |
4380 gaim_gtk_remove_conversation, | 4444 gaim_gtk_remove_conversation, |
4381 gaim_gtk_move_conversation, | 4445 gaim_gtk_move_conversation, |
4382 gaim_gtk_get_active_index | 4446 gaim_gtk_get_active_index |
4383 }; | 4447 }; |
4384 | |
4385 static void | |
4386 update_convo_add_button(GaimConversation *conv) | |
4387 { | |
4388 GaimPluginProtocolInfo *prpl_info = NULL; | |
4389 GaimConvWindow *win; | |
4390 GaimGtkWindow *gtkwin; | |
4391 GaimGtkConversation *gtkconv; | |
4392 GaimConnection *gc; | |
4393 GaimConversationType type; | |
4394 GtkWidget *parent; | |
4395 | |
4396 gc = gaim_conversation_get_gc(conv); | |
4397 win = gaim_conversation_get_window(conv); | |
4398 type = gaim_conversation_get_type(conv); | |
4399 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
4400 gtkwin = GAIM_GTK_WINDOW(win); | |
4401 parent = gtk_widget_get_parent(gtkconv->u.im->add); | |
4402 | |
4403 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
4404 | |
4405 if (gaim_find_buddy(gc->account, gaim_conversation_get_name(conv))) { | |
4406 gtkconv->u.im->add = | |
4407 gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add, | |
4408 GTK_STOCK_REMOVE, type); | |
4409 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, | |
4410 _("Remove the user from your buddy list"), NULL); | |
4411 | |
4412 gtk_widget_set_sensitive(gtkconv->u.im->add, | |
4413 (gc != NULL && prpl_info->remove_buddy != NULL)); | |
4414 | |
4415 if (gaim_conv_window_get_active_conversation(win) == conv) { | |
4416 gtk_widget_show(gtkwin->menu.remove); | |
4417 gtk_widget_hide(gtkwin->menu.add); | |
4418 } | |
4419 } | |
4420 else { | |
4421 gtkconv->u.im->add = | |
4422 gaim_gtk_change_text(_("Add"), gtkconv->u.im->add, | |
4423 GTK_STOCK_ADD, type); | |
4424 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->u.im->add, | |
4425 _("Add the user to your buddy list"), NULL); | |
4426 | |
4427 gtk_widget_set_sensitive(gtkconv->u.im->add, | |
4428 (gc != NULL && prpl_info->add_buddy != NULL)); | |
4429 | |
4430 if (gaim_conv_window_get_active_conversation(win) == conv) { | |
4431 gtk_widget_show(gtkwin->menu.add); | |
4432 gtk_widget_hide(gtkwin->menu.remove); | |
4433 } | |
4434 } | |
4435 | |
4436 g_signal_connect(G_OBJECT(gtkconv->u.im->add), "clicked", | |
4437 G_CALLBACK(add_cb), conv); | |
4438 | |
4439 gtk_box_pack_start(GTK_BOX(parent), gtkconv->u.im->add, | |
4440 FALSE, FALSE, 0); | |
4441 gtk_box_reorder_child(GTK_BOX(parent), gtkconv->u.im->add, 3); | |
4442 gtk_button_set_relief(GTK_BUTTON(gtkconv->u.im->add), GTK_RELIEF_NONE); | |
4443 gtk_size_group_add_widget(gtkconv->sg, gtkconv->u.im->add); | |
4444 } | |
4445 | 4448 |
4446 GaimConvWindowUiOps * | 4449 GaimConvWindowUiOps * |
4447 gaim_gtk_conversations_get_win_ui_ops(void) | 4450 gaim_gtk_conversations_get_win_ui_ops(void) |
4448 { | 4451 { |
4449 return &window_ui_ops; | 4452 return &window_ui_ops; |