Mercurial > pidgin
comparison src/conversation.c @ 2787:feea7103a235
[gaim-migrate @ 2800]
i wish i had a spine
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 21 Nov 2001 12:16:15 +0000 |
parents | a0fd8f91e294 |
children | 3bf63f1882c8 |
comparison
equal
deleted
inserted
replaced
2786:318f846120e2 | 2787:feea7103a235 |
---|---|
58 #include "pixmaps/oneeye.xpm" | 58 #include "pixmaps/oneeye.xpm" |
59 #include "pixmaps/crazy4.xpm" | 59 #include "pixmaps/crazy4.xpm" |
60 #include "pixmaps/mrt.xpm" | 60 #include "pixmaps/mrt.xpm" |
61 #include "pixmaps/download.xpm" | 61 #include "pixmaps/download.xpm" |
62 | 62 |
63 static GtkTooltips *tabtips = NULL; | |
64 | |
63 static gchar *ispell_cmd[] = { "ispell", "-a", NULL }; | 65 static gchar *ispell_cmd[] = { "ispell", "-a", NULL }; |
64 | 66 |
65 int state_lock = 0; | 67 int state_lock = 0; |
66 | 68 |
67 GdkPixmap *dark_icon_pm = NULL; | 69 GdkPixmap *dark_icon_pm = NULL; |
198 */ | 200 */ |
199 | 201 |
200 void rm_log(struct log_conversation *a) | 202 void rm_log(struct log_conversation *a) |
201 { | 203 { |
202 struct conversation *cnv = find_conversation(a->name); | 204 struct conversation *cnv = find_conversation(a->name); |
203 char buf[128]; | |
204 | 205 |
205 log_conversations = g_list_remove(log_conversations, a); | 206 log_conversations = g_list_remove(log_conversations, a); |
206 | 207 |
207 save_prefs(); | 208 save_prefs(); |
208 | 209 |
209 if (cnv) { | 210 if (cnv && !(im_options & OPT_IM_ONE_WINDOW)) |
210 if (!(logging_options & OPT_LOG_ALL)) | 211 set_convo_title(cnv); |
211 g_snprintf(buf, sizeof(buf), CONVERSATION_TITLE, cnv->name); | |
212 else | |
213 g_snprintf(buf, sizeof(buf), LOG_CONVERSATION_TITLE, cnv->name); | |
214 if (!(im_options & OPT_IM_ONE_WINDOW)) | |
215 gtk_window_set_title(GTK_WINDOW(cnv->window), buf); | |
216 } | |
217 } | 212 } |
218 | 213 |
219 struct log_conversation *find_log_info(char *name) | 214 struct log_conversation *find_log_info(char *name) |
220 { | 215 { |
221 char *pname = g_malloc(1024); | 216 char *pname = g_malloc(1024); |
1871 if (cnv->gc == c) | 1866 if (cnv->gc == c) |
1872 return; | 1867 return; |
1873 | 1868 |
1874 cnv->gc = c; | 1869 cnv->gc = c; |
1875 | 1870 |
1871 set_convo_title(cnv); | |
1872 | |
1876 update_buttons_by_protocol(cnv); | 1873 update_buttons_by_protocol(cnv); |
1877 | 1874 |
1878 update_icon(cnv); | 1875 update_icon(cnv); |
1879 update_checkbox(cnv); | 1876 update_checkbox(cnv); |
1880 } | 1877 } |
2027 if (c->gc == gc) | 2024 if (c->gc == gc) |
2028 return; | 2025 return; |
2029 | 2026 |
2030 c->gc = gc; | 2027 c->gc = gc; |
2031 | 2028 |
2029 set_convo_title(c); | |
2030 | |
2032 update_buttons_by_protocol(c); | 2031 update_buttons_by_protocol(c); |
2033 | 2032 |
2034 update_icon(c); | 2033 update_icon(c); |
2035 update_checkbox(c); | 2034 update_checkbox(c); |
2036 } | 2035 } |
2124 | 2123 |
2125 void show_conv(struct conversation *c) | 2124 void show_conv(struct conversation *c) |
2126 { | 2125 { |
2127 GtkWidget *win; | 2126 GtkWidget *win; |
2128 GtkWidget *cont; | 2127 GtkWidget *cont; |
2129 char buf[256]; | |
2130 GtkWidget *text; | 2128 GtkWidget *text; |
2131 GtkWidget *sw; | 2129 GtkWidget *sw; |
2132 GtkWidget *send; | 2130 GtkWidget *send; |
2133 GtkWidget *info; | 2131 GtkWidget *info; |
2134 GtkWidget *warn; | 2132 GtkWidget *warn; |
2158 c->hasbg = 0; | 2156 c->hasbg = 0; |
2159 c->fgcol = fgcolor; | 2157 c->fgcol = fgcolor; |
2160 c->hasfg = 0; | 2158 c->hasfg = 0; |
2161 | 2159 |
2162 if (im_options & OPT_IM_ONE_WINDOW) { | 2160 if (im_options & OPT_IM_ONE_WINDOW) { |
2161 GtkWidget *page; | |
2163 if (!all_convos) { | 2162 if (!all_convos) { |
2164 win = all_convos = c->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 2163 win = all_convos = c->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
2165 gtk_window_set_wmclass(GTK_WINDOW(win), "conversation", "Gaim"); | 2164 gtk_window_set_wmclass(GTK_WINDOW(win), "conversation", "Gaim"); |
2166 gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, FALSE); | 2165 gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, FALSE); |
2167 gtk_container_border_width(GTK_CONTAINER(win), 0); | 2166 gtk_container_border_width(GTK_CONTAINER(win), 0); |
2170 gtk_window_set_title(GTK_WINDOW(win), _("Gaim - Conversations")); | 2169 gtk_window_set_title(GTK_WINDOW(win), _("Gaim - Conversations")); |
2171 gtk_signal_connect(GTK_OBJECT(win), "delete_event", | 2170 gtk_signal_connect(GTK_OBJECT(win), "delete_event", |
2172 GTK_SIGNAL_FUNC(delete_all_convo), NULL); | 2171 GTK_SIGNAL_FUNC(delete_all_convo), NULL); |
2173 | 2172 |
2174 convo_notebook = gtk_notebook_new(); | 2173 convo_notebook = gtk_notebook_new(); |
2174 if (!tabtips) { | |
2175 tabtips = gtk_tooltips_new(); | |
2176 if (!(im_options & OPT_IM_ALIAS_TAB)) | |
2177 gtk_tooltips_disable(tabtips); | |
2178 } | |
2175 if (im_options & OPT_IM_SIDE_TAB) { | 2179 if (im_options & OPT_IM_SIDE_TAB) { |
2176 if (im_options & OPT_IM_BR_TAB) { | 2180 if (im_options & OPT_IM_BR_TAB) { |
2177 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(convo_notebook), | 2181 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(convo_notebook), |
2178 GTK_POS_RIGHT); | 2182 GTK_POS_RIGHT); |
2179 } else { | 2183 } else { |
2198 } else | 2202 } else |
2199 win = c->window = all_convos; | 2203 win = c->window = all_convos; |
2200 | 2204 |
2201 cont = gtk_vbox_new(FALSE, 5); | 2205 cont = gtk_vbox_new(FALSE, 5); |
2202 gtk_container_set_border_width(GTK_CONTAINER(cont), 5); | 2206 gtk_container_set_border_width(GTK_CONTAINER(cont), 5); |
2207 /* this doesn't actually matter since we're resetting it once we're out of the if/else */ | |
2203 gtk_notebook_append_page(GTK_NOTEBOOK(convo_notebook), cont, gtk_label_new(c->name)); | 2208 gtk_notebook_append_page(GTK_NOTEBOOK(convo_notebook), cont, gtk_label_new(c->name)); |
2204 gtk_widget_show(cont); | 2209 gtk_widget_show(cont); |
2210 | |
2211 page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(convo_notebook), | |
2212 g_list_index(conversations, c)); | |
2213 page = gtk_notebook_get_tab_label(GTK_NOTEBOOK(convo_notebook), page); | |
2214 gtk_tooltips_set_tip(tabtips, page->parent, c->name, c->name); | |
2205 } else { | 2215 } else { |
2206 cont = win = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 2216 cont = win = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
2207 c->window = win; | 2217 c->window = win; |
2208 gtk_object_set_user_data(GTK_OBJECT(win), c); | 2218 gtk_object_set_user_data(GTK_OBJECT(win), c); |
2209 gtk_window_set_wmclass(GTK_WINDOW(win), "conversation", "Gaim"); | 2219 gtk_window_set_wmclass(GTK_WINDOW(win), "conversation", "Gaim"); |
2210 gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, TRUE); | 2220 gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, TRUE); |
2211 gtk_container_border_width(GTK_CONTAINER(win), 10); | 2221 gtk_container_border_width(GTK_CONTAINER(win), 10); |
2212 gtk_widget_realize(win); | 2222 gtk_widget_realize(win); |
2213 aol_icon(win->window); | 2223 aol_icon(win->window); |
2214 if ((find_log_info(c->name)) || ((logging_options & OPT_LOG_ALL))) | |
2215 g_snprintf(buf, sizeof(buf), LOG_CONVERSATION_TITLE, c->name); | |
2216 else | |
2217 g_snprintf(buf, sizeof(buf), CONVERSATION_TITLE, c->name); | |
2218 gtk_window_set_title(GTK_WINDOW(win), buf); | |
2219 gtk_signal_connect(GTK_OBJECT(win), "delete_event", | 2224 gtk_signal_connect(GTK_OBJECT(win), "delete_event", |
2220 GTK_SIGNAL_FUNC(delete_event_convo), c); | 2225 GTK_SIGNAL_FUNC(delete_event_convo), c); |
2221 } | 2226 } |
2227 set_convo_title(c); | |
2222 | 2228 |
2223 paned = gtk_vpaned_new(); | 2229 paned = gtk_vpaned_new(); |
2224 gtk_paned_set_gutter_size(GTK_PANED(paned), 15); | 2230 gtk_paned_set_gutter_size(GTK_PANED(paned), 15); |
2225 gtk_container_add(GTK_CONTAINER(cont), paned); | 2231 gtk_container_add(GTK_CONTAINER(cont), paned); |
2226 gtk_widget_show(paned); | 2232 gtk_widget_show(paned); |
2501 convo_notebook = NULL; | 2507 convo_notebook = NULL; |
2502 conversations = m; | 2508 conversations = m; |
2503 } | 2509 } |
2504 } | 2510 } |
2505 | 2511 |
2506 void set_convo_tab_label(struct conversation *c, char *text) | 2512 void set_convo_title(struct conversation *c) |
2507 { | 2513 { |
2508 gtk_label_set_text(GTK_LABEL(gtk_notebook_get_tab_label(GTK_NOTEBOOK(convo_notebook), | 2514 struct buddy *b; |
2509 gtk_notebook_get_nth_page(GTK_NOTEBOOK | 2515 char *text; |
2510 (convo_notebook), | 2516 int index; |
2511 g_list_index | 2517 GtkNotebook *nb; |
2512 (conversations, | 2518 |
2513 c)))), text); | 2519 if (!convo_notebook) { |
2520 char buf[256]; | |
2521 if ((find_log_info(c->name)) || (logging_options & OPT_LOG_ALL)) | |
2522 g_snprintf(buf, sizeof(buf), LOG_CONVERSATION_TITLE, c->name); | |
2523 else | |
2524 g_snprintf(buf, sizeof(buf), CONVERSATION_TITLE, c->name); | |
2525 gtk_window_set_title(GTK_WINDOW(c->window), buf); | |
2526 return; | |
2527 } | |
2528 | |
2529 if ((im_options & OPT_IM_ALIAS_TAB) && c->gc && ((b = find_buddy(c->gc, c->name)) != NULL)) | |
2530 text = b->show; | |
2531 else | |
2532 text = c->name; | |
2533 | |
2534 nb = GTK_NOTEBOOK(convo_notebook); | |
2535 index = g_list_index(conversations, c); | |
2536 gtk_notebook_set_tab_label_text(nb, gtk_notebook_get_nth_page(nb, index), text); | |
2537 } | |
2538 | |
2539 void set_convo_titles() | |
2540 { | |
2541 GList *c = conversations; | |
2542 while (c) { | |
2543 set_convo_title(c->data); | |
2544 c = c->next; | |
2545 } | |
2514 } | 2546 } |
2515 | 2547 |
2516 void raise_convo_tab(struct conversation *c) | 2548 void raise_convo_tab(struct conversation *c) |
2517 { | 2549 { |
2518 gtk_notebook_set_page(GTK_NOTEBOOK(convo_notebook), g_list_index(conversations, c)); | 2550 gtk_notebook_set_page(GTK_NOTEBOOK(convo_notebook), g_list_index(conversations, c)); |