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