Mercurial > pidgin
diff src/conversation.c @ 3671:0f468c22c702
[gaim-migrate @ 3801]
Starting to redo the conversation window; if things dont work right then deal
with it. I'll work on it more after this...
committer: Tailor Script <tailor@pidgin.im>
author | Rob Flynn <gaim@robflynn.com> |
---|---|
date | Mon, 14 Oct 2002 03:05:24 +0000 |
parents | e2391338c394 |
children | 7571943d6851 |
line wrap: on
line diff
--- a/src/conversation.c Mon Oct 14 00:13:38 2002 +0000 +++ b/src/conversation.c Mon Oct 14 03:05:24 2002 +0000 @@ -310,13 +310,12 @@ while (cnv) { c = (struct conversation *)cnv->data; - if (c->log_button) { if (c->is_chat) - gtk_widget_set_sensitive(c->log_button, + gtk_widget_set_sensitive(GTK_WIDGET(c->log_button), ((logging_options & OPT_LOG_CHATS)) ? FALSE : TRUE); else - gtk_widget_set_sensitive(c->log_button, + gtk_widget_set_sensitive(GTK_WIDGET(c->log_button), ((logging_options & OPT_LOG_CONVOS)) ? FALSE : TRUE); } @@ -328,14 +327,13 @@ bcs = g->buddy_chats; while (bcs) { c = (struct conversation *)bcs->data; - if (c->log_button) { if (c->is_chat) - gtk_widget_set_sensitive(c->log_button, + gtk_widget_set_sensitive(GTK_WIDGET(c->log_button), ((logging_options & OPT_LOG_CHATS)) ? FALSE : TRUE); else - gtk_widget_set_sensitive(c->log_button, + gtk_widget_set_sensitive(GTK_WIDGET(c->log_button), ((logging_options & OPT_LOG_CONVOS)) ? FALSE : TRUE); } @@ -366,10 +364,6 @@ gtk_widget_set_sensitive(c->underline, ((font_options & OPT_FONT_UNDERLINE)) ? FALSE : TRUE); - if (c->strike) - gtk_widget_set_sensitive(c->strike, - ((font_options & OPT_FONT_STRIKE)) ? FALSE : TRUE); - cnv = cnv->next; } } @@ -406,7 +400,7 @@ if (find_log_info(c->name)) rm_log(find_log_info(c->name)); - else if (GTK_TOGGLE_BUTTON(loggle)->active) + else if (GTK_CHECK_MENU_ITEM(c->log_button)->active) show_log_dialog(c); else cancel_log(NULL, c); @@ -414,16 +408,7 @@ void toggle_sound(GtkWidget *widget, struct conversation *c) { - GdkPixmap *pm; - GdkBitmap *bm; - c->makesound = !c->makesound; - - pm = gdk_pixmap_create_from_xpm_d(c->window->window, &bm, &c->window->style->white, - c->makesound ? speaker_xpm : speaker_mute_xpm); - gtk_pixmap_set(GTK_PIXMAP(c->speaker_p), pm, bm); - gdk_pixmap_unref(pm); - gdk_bitmap_unref(bm); } static void do_save_convo(GtkObject *obj, GtkWidget *wid) @@ -522,11 +507,14 @@ { if (state_lock) return; + if (GTK_TOGGLE_BUTTON(smiley)->active) show_smiley_dialog(c, smiley); else if (c->smiley_dialog) close_smiley_dialog(smiley, c); + gtk_widget_grab_focus(c->entry); + return; } @@ -954,14 +942,6 @@ do_bold(c->bold, c->entry); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); break; - case 's': - case 'S': - quiet_set(c->strike, - !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->strike))); - do_strike(c->strike, c->entry); - gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); - break; - case '-': do_small(NULL, c->entry); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); @@ -1217,7 +1197,6 @@ } quiet_set(c->bold, FALSE); - quiet_set(c->strike, FALSE); quiet_set(c->italic, FALSE); quiet_set(c->underline, FALSE); quiet_set(c->font, FALSE); @@ -1650,16 +1629,25 @@ advance_past(c->entry, "<FONT FACE>", "</FONT>"); } +void insert_link_cb(GtkWidget *w, struct conversation *c) +{ + show_add_link(c->link, c); +} + void toggle_link(GtkWidget *linky, struct conversation *c) { if (state_lock) return; - if (GTK_TOGGLE_BUTTON(linky)->active) - show_add_link(linky, c); + + if (GTK_TOGGLE_BUTTON(c->link)->active) + show_add_link(c->link, c); + else if (c->link_dialog) - cancel_link(linky, c); + cancel_link(c->link, c); else advance_past(c->entry, "<A HREF>", "</A>"); + + gtk_widget_grab_focus(c->entry); } void do_strike(GtkWidget *strike, GtkWidget *entry) @@ -1682,6 +1670,8 @@ surround(entry, "<B>", "</B>"); else advance_past(entry, "<B>", "</B>"); + + gtk_widget_grab_focus(entry); } void do_underline(GtkWidget *underline, GtkWidget *entry) @@ -1692,6 +1682,8 @@ surround(entry, "<U>", "</U>"); else advance_past(entry, "<U>", "</U>"); + + gtk_widget_grab_focus(entry); } void do_italic(GtkWidget *italic, GtkWidget *entry) @@ -1702,6 +1694,8 @@ surround(entry, "<I>", "</I>"); else advance_past(entry, "<I>", "</I>"); + + gtk_widget_grab_focus(entry); } /* html code to modify font sizes must all be the same length, */ @@ -1711,21 +1705,30 @@ { if (state_lock) return; + surround(entry, "<FONT SIZE=\"1\">", "</FONT>"); + + gtk_widget_grab_focus(entry); } void do_normal(GtkWidget *normal, GtkWidget *entry) { if (state_lock) return; + surround(entry, "<FONT SIZE=\"3\">", "</FONT>"); + + gtk_widget_grab_focus(entry); } void do_big(GtkWidget *big, GtkWidget *entry) { if (state_lock) return; + surround(entry, "<FONT SIZE=\"5\">", "</FONT>"); + + gtk_widget_grab_focus(entry); } void check_everything(GtkWidget *entry) @@ -1782,13 +1785,6 @@ quiet_set(c->underline, TRUE); else quiet_set(c->underline, FALSE); - - if (invert_tags(entry, "<STRIKE>", "</STRIKE>", 0)) - quiet_set(c->strike, TRUE); - else if (count_tag(entry, "<STRIKE>", "</STRIKE>")) - quiet_set(c->strike, TRUE); - else - quiet_set(c->strike, FALSE); } @@ -2161,6 +2157,208 @@ gtk_progress_set_percentage(GTK_PROGRESS(c->progress), percent); } +GtkWidget *build_conv_menubar(struct conversation *c) +{ + GtkWidget *menubar; + GtkWidget *menu; + GtkWidget *menuitem; + + menubar = gtk_menu_bar_new(); + + menu = gtk_menu_new(); + + /* The file menu */ + menuitem = gaim_new_item(NULL, _("File")); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); + gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); + + gaim_new_item_from_stock(menu, _("_Save Conversation"), "gtk-save-as", GTK_SIGNAL_FUNC(save_convo), c, 0, 0, NULL); + + gaim_new_item_from_stock(menu, _("View _History"), NULL, GTK_SIGNAL_FUNC(conv_show_log), GINT_TO_POINTER(c->name), 0, 0, NULL); + + menuitem = gtk_menu_item_new(); + gtk_menu_append(GTK_MENU(menu), menuitem); +/* + c->sendfile_btn = gaim_new_item_from_pixbuf(menu, _("Send File"), "send-file-small.png", NULL, NULL, 0, 0, NULL); */ + + gaim_new_item_from_pixbuf(menu, _("Insert URL"), NULL, GTK_SIGNAL_FUNC(insert_link_cb), c, 0, 0, NULL); + c->image_menubtn = gaim_new_item_from_pixbuf(menu, _("Insert Image"), "insert-image-small.png", GTK_SIGNAL_FUNC(insert_image), c, 0, 0, NULL); + + menuitem = gtk_menu_item_new(); + gtk_menu_append(GTK_MENU(menu), menuitem); + + gaim_new_item_from_stock(menu, _("_Close"), "gtk-close", GTK_SIGNAL_FUNC(close_callback), c, 0, 0, NULL); + + /* The Options menu */ + menu = gtk_menu_new(); + + menuitem = gaim_new_item(NULL, _("Options")); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); + gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); + + /* Logging */ + menuitem = gtk_check_menu_item_new_with_mnemonic(_("Enable _Logging")); + c->log_button = menuitem; /* We should save this */ + + state_lock = 1; + if (find_log_info(c->name)) + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(menuitem), TRUE); + else + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(menuitem), FALSE); + state_lock = 0; + + gtk_signal_connect(GTK_OBJECT(menuitem), "toggled", GTK_SIGNAL_FUNC(toggle_loggle), c); + + /* Sounds */ + + gtk_menu_append(GTK_MENU(menu), menuitem); + + menuitem = gtk_check_menu_item_new_with_mnemonic(_("Enable _Sounds")); + c->makesound = 1; + gtk_signal_connect(GTK_OBJECT(menuitem), "toggled", GTK_SIGNAL_FUNC(toggle_sound), c); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE); + gtk_menu_append(GTK_MENU(menu), menuitem); + + + + /* Now set the current values or something */ + gtk_widget_set_sensitive(GTK_WIDGET(c->log_button), (logging_options & OPT_LOG_CONVOS) ? FALSE : TRUE); + + gtk_widget_show_all(menubar); + + return menubar; + +} + +GtkWidget *build_conv_toolbar2(struct conversation *c) +{ + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *button; + GtkWidget *sep; + GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); + /* + c->toolbar = toolbar; + c->bold = bold; + c->strike = strike; + c->italic = italic; + c->underline = underline; + c->log_button = wood; + c->viewer_button = viewer; + c->fgcolorbtn = fgcolorbtn; + c->bgcolorbtn = bgcolorbtn; + c->link = link; + c->wood = wood; + c->font = font; + c->smiley = smiley; + c->imagebtn = image; + c->speaker = speaker; + c->speaker_p = speaker_p; + */ + + vbox = gtk_vbox_new(FALSE, 0); + sep = gtk_hseparator_new(); + gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + + /* Bold */ + button = gaim_pixbuf_toolbar_button_from_stock("gtk-bold"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_bold), c->entry); + c->bold = button; /* We should remember this */ + + /* Italic */ + button = gaim_pixbuf_toolbar_button_from_stock("gtk-italic"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_italic), c->entry); + c->italic = button; /* We should remember this */ + + /* Underline */ + button = gaim_pixbuf_toolbar_button_from_stock("gtk-underline"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_underline), c->entry); + c->underline = button; /* We should remember this */ + + /* Sep */ + sep = gtk_vseparator_new(); + gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); + + /* Increase font size */ + button = gaim_pixbuf_toolbar_button_from_file("text_bigger.png"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_big), c->entry); + + /* Normal Font Size */ + button = gaim_pixbuf_toolbar_button_from_file("text_normal.png"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_normal), c->entry); + c->font = button; /* We should remember this */ + + /* Decrease font size */ + button = gaim_pixbuf_toolbar_button_from_file("text_smaller.png"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_small), c->entry); + + /* Sep */ + sep = gtk_vseparator_new(); + gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); + + /* Font Color */ + button = gaim_pixbuf_toolbar_button_from_stock("gtk-select-color"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_fg_color), c); + c->fgcolorbtn = button; /* We should remember this */ + + /* Font Color */ + button = gaim_pixbuf_toolbar_button_from_stock("gtk-select-color"); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_bg_color), c); + c->bgcolorbtn = button; /* We should remember this */ + + + /* Sep */ + sep = gtk_vseparator_new(); + gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); + + /* Insert IM Image */ + button = gaim_pixbuf_toolbar_button_from_file("insert-image-small.png"); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(insert_image), c); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + c->imagebtn = button; + + /* Insert Link */ + button = gaim_pixbuf_toolbar_button_from_file("insert-link-small.png"); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_link), c); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + c->link = button; + + /* Insert Smiley */ + button = gaim_pixbuf_toolbar_button_from_file("insert-smiley-small.png"); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(insert_smiley), c); + gtk_size_group_add_widget(sg, button); + gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); + c->smiley = button; + + sep = gtk_hseparator_new(); + gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); + + gtk_widget_show_all(vbox); + + return vbox; +} + GtkWidget *build_conv_toolbar(struct conversation *c) { GdkPixmap *strike_i, *small_i, *normal_i, *big_i, *bold_i, *italic_i, *underline_i, *speaker_i, @@ -2488,7 +2686,7 @@ if (find_buddy(c->gc, c->name)) { if (!gtk_object_get_user_data(GTK_OBJECT(c->add))) { gtk_widget_destroy(c->add); - c->add = picture_button2(c->window, _("Remove"), gnome_remove_xpm, dispstyle); + c->add = gaim_pixbuf_button_from_stock(_("Remove"), "gtk-remove", GAIM_BUTTON_VERTICAL); rebuild = TRUE; } if (c->gc) { @@ -2502,7 +2700,7 @@ } else { if (gtk_object_get_user_data(GTK_OBJECT(c->add))) { gtk_widget_destroy(c->add); - c->add = picture_button2(c->window, _("Add"), gnome_add_xpm, dispstyle); + c->add = gaim_pixbuf_button_from_stock(_("Add"), "gtk-add", GAIM_BUTTON_VERTICAL); rebuild = TRUE; } if (c->gc) { @@ -2516,8 +2714,10 @@ if (rebuild) { gtk_signal_connect(GTK_OBJECT(c->add), "clicked", GTK_SIGNAL_FUNC(add_callback), c); - gtk_box_pack_end(GTK_BOX(parent), c->add, dispstyle, dispstyle, 0); - gtk_box_reorder_child(GTK_BOX(parent), c->add, 2); + gtk_box_pack_start(GTK_BOX(parent), c->add, FALSE, FALSE, 0); + gtk_box_reorder_child(GTK_BOX(parent), c->add, 3); + gtk_button_set_relief(GTK_BUTTON(c->add), GTK_RELIEF_NONE); + gtk_size_group_add_widget(c->sg, c->add); gtk_widget_show(c->add); } } @@ -2630,22 +2830,33 @@ gtk_widget_set_sensitive(c->info, FALSE); else if (c->info) gtk_widget_set_sensitive(c->info, TRUE); - +/* + if (!c->is_chat && c->gc->prpl->file_transfer_out) + gtk_widget_set_sensitive(c->sendfile_btn, TRUE); + else + gtk_widget_set_sensitive(c->sendfile_btn, FALSE); +*/ if (c->is_chat) { if (c->gc->prpl->chat_send == NULL && c->send) gtk_widget_set_sensitive(c->send, FALSE); else gtk_widget_set_sensitive(c->send, TRUE); + gtk_widget_set_sensitive(c->imagebtn, FALSE); + gtk_widget_set_sensitive(c->image_menubtn, FALSE); } else { if (c->gc->prpl->send_im == NULL && c->send) gtk_widget_set_sensitive(c->send, FALSE); else gtk_widget_set_sensitive(c->send, TRUE); - if (c->gc->prpl->options & OPT_PROTO_IM_IMAGE) + if (c->gc->prpl->options & OPT_PROTO_IM_IMAGE) { gtk_widget_set_sensitive(c->imagebtn, TRUE); - else + gtk_widget_set_sensitive(c->image_menubtn, TRUE); + } + else { + gtk_widget_set_sensitive(c->image_menubtn, FALSE); gtk_widget_set_sensitive(c->imagebtn, FALSE); + } } if (c->gc->prpl->warn == NULL && c->warn) @@ -2813,7 +3024,9 @@ GtkWidget *toolbar; GtkWidget *hbox; GtkWidget *label; - int dispstyle = set_dispstyle(0); + GtkWidget *menubar; + + c->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); c->font_dialog = NULL; c->fg_color_dialog = NULL; @@ -2882,7 +3095,7 @@ gtk_object_set_user_data(GTK_OBJECT(win), c); gtk_window_set_wmclass(GTK_WINDOW(win), "conversation", "Gaim"); gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, TRUE); - gtk_container_border_width(GTK_CONTAINER(win), 10); + gtk_container_border_width(GTK_CONTAINER(win), 0); gtk_widget_realize(win); gtk_signal_connect(GTK_OBJECT(win), "delete_event", GTK_SIGNAL_FUNC(delete_event_convo), c); @@ -2898,6 +3111,9 @@ gtk_paned_pack1(GTK_PANED(paned), vbox, FALSE, TRUE); gtk_widget_show(vbox); + menubar = build_conv_menubar(c); + gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); + sw = gtk_scrolled_window_new(NULL, NULL); c->sw = sw; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); @@ -2942,7 +3158,7 @@ if (!(im_options & OPT_IM_ONE_WINDOW)) gtk_window_set_focus(GTK_WINDOW(c->window), c->entry); - toolbar = build_conv_toolbar(c); + toolbar = build_conv_toolbar2(c); gtk_box_pack_start(GTK_BOX(vbox2), toolbar, FALSE, FALSE, 0); gtk_object_set_user_data(GTK_OBJECT(entry), c); @@ -2964,57 +3180,88 @@ gtk_box_pack_start(GTK_BOX(vbox2), bbox, FALSE, FALSE, 0); gtk_widget_show(bbox); +/* I'm leaving this here just incase we want to bring this back. I'd rather not have the close + * button any more. If we do, though, it needs to be on the left side. I might bring it back and put + * it on that side. */ + +/* close = picture_button2(win, _("Close"), cancel_xpm, dispstyle); c->close = close; gtk_object_set_user_data(GTK_OBJECT(close), c); gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(close_callback), c); gtk_box_pack_end(GTK_BOX(bbox), close, dispstyle, dispstyle, 0); gtk_widget_show(close); - + c->sep1 = gtk_vseparator_new(); gtk_box_pack_end(GTK_BOX(bbox), c->sep1, dispstyle, dispstyle, 0); gtk_widget_show(c->sep1); +*/ + + /* Put the send button on the right */ + send = gaim_pixbuf_button_from_stock(_("Send"), "gtk-convert", GAIM_BUTTON_VERTICAL); + c->send = send; + gtk_signal_connect(GTK_OBJECT(send), "clicked", GTK_SIGNAL_FUNC(send_callback), c); + gtk_box_pack_end(GTK_BOX(bbox), send, FALSE, FALSE, 0); + gtk_widget_show(send); + + c->sep2 = gtk_vseparator_new(); + gtk_box_pack_end(GTK_BOX(bbox), c->sep2, FALSE, TRUE, 0); + gtk_widget_show(c->sep2); + + /* And put the other buttons on the left */ if (c->gc && find_buddy(c->gc, c->name) != NULL) { - add = picture_button2(win, _("Remove"), gnome_remove_xpm, dispstyle); + add = gaim_pixbuf_button_from_stock(_("Remove"), "gtk-remove", GAIM_BUTTON_VERTICAL); gtk_object_set_user_data(GTK_OBJECT(add), c); } else - add = picture_button2(win, _("Add"), gnome_add_xpm, dispstyle); + add = gaim_pixbuf_button_from_stock(_("Add"), "gtk-add", GAIM_BUTTON_VERTICAL); + c->add = add; gtk_signal_connect(GTK_OBJECT(add), "clicked", GTK_SIGNAL_FUNC(add_callback), c); - gtk_box_pack_end(GTK_BOX(bbox), add, dispstyle, dispstyle, 0); + gtk_box_pack_start(GTK_BOX(bbox), add, FALSE, FALSE, 0); gtk_widget_show(add); - block = picture_button2(win, _("Block"), block_xpm, dispstyle); - c->block = block; - gtk_signal_connect(GTK_OBJECT(block), "clicked", GTK_SIGNAL_FUNC(block_callback), c); - gtk_box_pack_end(GTK_BOX(bbox), block, dispstyle, dispstyle, 0); - gtk_widget_show(block); - - warn = picture_button2(win, _("Warn"), warn_xpm, dispstyle); + warn = gaim_pixbuf_button_from_stock(_("Warn"), "gtk-dialog-warning", GAIM_BUTTON_VERTICAL); c->warn = warn; gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(warn_callback), c); - gtk_box_pack_end(GTK_BOX(bbox), warn, dispstyle, dispstyle, 0); + gtk_box_pack_start(GTK_BOX(bbox), warn, FALSE, FALSE, 0); gtk_widget_show(warn); - info = picture_button2(win, _("Info"), tb_search_xpm, dispstyle); + info = gaim_pixbuf_button_from_stock(_("Info"), "gtk-find", GAIM_BUTTON_VERTICAL); c->info = info; - gtk_signal_connect(GTK_OBJECT(info), "clicked", GTK_SIGNAL_FUNC(info_callback), c); - gtk_box_pack_end(GTK_BOX(bbox), info, dispstyle, dispstyle, 0); + gtk_box_pack_start(GTK_BOX(bbox), info, FALSE, FALSE, 0); gtk_widget_show(info); - c->sep2 = gtk_vseparator_new(); - gtk_box_pack_end(GTK_BOX(bbox), c->sep2, dispstyle, dispstyle, 0); - gtk_widget_show(c->sep2); - - send = picture_button2(win, _("Send"), tmp_send_xpm, dispstyle); - c->send = send; - gtk_signal_connect(GTK_OBJECT(send), "clicked", GTK_SIGNAL_FUNC(send_callback), c); - gtk_box_pack_end(GTK_BOX(bbox), send, dispstyle, dispstyle, 0); - gtk_widget_show(send); + + block = gaim_pixbuf_button_from_stock(_("Block"), "gtk-stop", GAIM_BUTTON_VERTICAL); + c->block = block; + gtk_signal_connect(GTK_OBJECT(block), "clicked", GTK_SIGNAL_FUNC(block_callback), c); + gtk_box_pack_start(GTK_BOX(bbox), block, FALSE, FALSE, 0); + gtk_widget_show(block); + + /* I don't know if these should have borders. They look kind of dumb + * with borders. */ + gtk_button_set_relief(GTK_BUTTON(info), GTK_RELIEF_NONE); + gtk_button_set_relief(GTK_BUTTON(add), GTK_RELIEF_NONE); + gtk_button_set_relief(GTK_BUTTON(warn), GTK_RELIEF_NONE); + gtk_button_set_relief(GTK_BUTTON(send), GTK_RELIEF_NONE); + gtk_button_set_relief(GTK_BUTTON(block), GTK_RELIEF_NONE); + + gtk_size_group_add_widget(c->sg, info); + gtk_size_group_add_widget(c->sg, add); + gtk_size_group_add_widget(c->sg, warn); + gtk_size_group_add_widget(c->sg, send); + gtk_size_group_add_widget(c->sg, block); + + gtk_box_reorder_child(GTK_BOX(bbox), c->warn, 1); + gtk_box_reorder_child(GTK_BOX(bbox), c->block, 2); + gtk_box_reorder_child(GTK_BOX(bbox), c->add, 3); + gtk_box_reorder_child(GTK_BOX(bbox), c->info, 4); + update_buttons_by_protocol(c); + if (!(im_options & OPT_IM_ONE_WINDOW)) gtk_widget_grab_focus(c->entry); gtk_widget_show(win); @@ -3678,6 +3925,7 @@ frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), bm ? GTK_SHADOW_NONE : GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(c->bbox), frame, FALSE, FALSE, 5); + gtk_box_reorder_child(GTK_BOX(c->bbox), frame, 0); gtk_widget_show(frame); event = gtk_event_box_new();