Mercurial > pidgin.yaz
diff src/conversation.c @ 2231:8c4ff1a368bd
[gaim-migrate @ 2241]
blue:~/gaim/app/src/protocols $ ./gtk
icq: 0
irc: 0
jabber: 52
msn: 0
napster: 0
oscar: 7
toc: 17
yahoo: 0
zephyr: 1
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Fri, 07 Sep 2001 08:09:22 +0000 |
parents | a93a6fe22330 |
children | b7ff2ca1d653 |
line wrap: on
line diff
--- a/src/conversation.c Fri Sep 07 07:30:28 2001 +0000 +++ b/src/conversation.c Fri Sep 07 08:09:22 2001 +0000 @@ -78,6 +78,9 @@ static void update_icon(struct conversation *); static void remove_icon(struct conversation *); +static void update_checkbox(struct conversation *); +static void remove_checkbox(struct conversation *); + /*------------------------------------------------------------------------*/ /* Helpers */ /*------------------------------------------------------------------------*/ @@ -157,9 +160,8 @@ c->history = g_string_new(""); conversations = g_list_append(conversations, c); show_conv(c); - if (c->gc && c->gc->prpl && c->gc->prpl->insert_convo) - (*c->gc->prpl->insert_convo)(c->gc, c); update_icon(c); + update_checkbox(c); plugin_event(event_new_conversation, name, 0, 0, 0); return c; } @@ -413,9 +415,8 @@ gtkspell_detach(GTK_TEXT(c->entry)); if (!c->is_chat) { - if (c->gc && c->gc->prpl && c->gc->prpl->remove_convo) - (*c->gc->prpl->remove_convo)(c->gc, c); remove_icon(c); + remove_checkbox(c); if (display_options & OPT_DISP_ONE_WINDOW) { if (g_list_length(conversations) > 1) { gtk_notebook_remove_page(GTK_NOTEBOOK(convo_notebook), @@ -858,7 +859,10 @@ buffy = g_strdup(buf); plugin_event(event_im_displayed_sent, c->gc, c->name, &buffy, 0); if (buffy) { - err = serv_send_im(c->gc, c->name, buffy, 0); + int imflags = 0; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c->check))) + imflags = IM_FLAG_CHECKBOX; + err = serv_send_im(c->gc, c->name, buffy, imflags); g_free(buffy); } @@ -1783,16 +1787,12 @@ if (cnv->gc == c) return; - if (cnv->gc && cnv->gc->prpl && cnv->gc->prpl->remove_convo) - (*cnv->gc->prpl->remove_convo)(cnv->gc, cnv); - cnv->gc = c; update_buttons_by_protocol(cnv); - if (cnv->gc && cnv->gc->prpl && cnv->gc->prpl->insert_convo) - (*cnv->gc->prpl->insert_convo)(cnv->gc, cnv); update_icon(cnv); + update_checkbox(cnv); } void update_convo_add_button(struct conversation *c) @@ -1898,9 +1898,8 @@ C = (struct conversation *)c->data; c = c->next; - if (C->gc && C->gc->prpl && C->gc->prpl->remove_convo) - (*C->gc->prpl->remove_convo)(C->gc, C); remove_icon(C); + remove_checkbox(C); } } @@ -1909,9 +1908,6 @@ if (c->gc == gc) return; - if (c->gc && g_slist_find(connections, c->gc) && c->gc->prpl && c->gc->prpl->remove_convo) - (*c->gc->prpl->remove_convo)(c->gc, c); - c->gc = gc; if (gc) @@ -1919,9 +1915,8 @@ update_buttons_by_protocol(c); - if (c->gc && c->gc->prpl && c->gc->prpl->insert_convo) - (*c->gc->prpl->insert_convo)(c->gc, c); update_icon(c); + update_checkbox(c); } void update_buttons_by_protocol(struct conversation *c) @@ -2344,17 +2339,15 @@ imhtml = c->text; win = c->window; - if (c->gc && c->gc->prpl->remove_convo) - (*c->gc->prpl->remove_convo)(c->gc, c); remove_icon(c); + remove_checkbox(c); show_conv(c); gtk_widget_destroy(c->text); gtk_widget_reparent(imhtml, c->sw); c->text = imhtml; gtk_widget_destroy(win); - if (c->gc && c->gc->prpl->insert_convo) - (*c->gc->prpl->insert_convo)(c->gc, c); update_icon(c); + update_checkbox(c); x = x->next; } @@ -2367,16 +2360,14 @@ GtkWidget *imhtml; imhtml = c->text; - if (c->gc && c->gc->prpl->remove_convo) - (*c->gc->prpl->remove_convo)(c->gc, c); remove_icon(c); + remove_checkbox(c); show_conv(c); gtk_widget_destroy(c->text); gtk_widget_reparent(imhtml, c->sw); c->text = imhtml; - if (c->gc && c->gc->prpl->insert_convo) - (*c->gc->prpl->insert_convo)(c->gc, c); update_icon(c); + update_checkbox(c); x = x->next; } @@ -2602,11 +2593,11 @@ if (!c) return; + remove_icon(c); + if (!c->gc) return; - remove_icon(c); - data = get_icon_data(c->gc, normalize(c->name), &len); if (!data) return; @@ -2661,3 +2652,28 @@ if (c->gc == gc) update_icon(c); } + +static void remove_checkbox(struct conversation *c) +{ + if (c->check) + gtk_container_remove(GTK_CONTAINER(c->lbox), c->check); + c->check = NULL; +} + +static void update_checkbox(struct conversation *c) +{ + if (!c) + return; + + remove_checkbox(c); + + if (!c->gc) + return; + + if (!c->gc->prpl->checkbox) + return; + + c->check = gtk_check_button_new_with_label(c->gc->prpl->checkbox); + gtk_box_pack_start(GTK_BOX(c->lbox), c->check, FALSE, FALSE, 5); + gtk_widget_show(c->check); +}