| 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); |
| 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)); |