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;