Mercurial > pidgin.yaz
comparison src/gtkconv.c @ 10175:53410b84336f
[gaim-migrate @ 11290]
I wrote a helper function that creates the imhtml and toolbar and
puts them in a widget and what not. And I changed some places
to use this. And I removed some whitespace from log.c. And I
changed the conversation colors back to normal. And I'm not
committing everything in my tree, so let me know if this doesn't
compile. And that's all.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 14 Nov 2004 01:52:25 +0000 |
parents | 3f71f7282dbf |
children | e67ecadcbe0f |
comparison
equal
deleted
inserted
replaced
10174:8dd4535dd359 | 10175:53410b84336f |
---|---|
64 /* XXX */ | 64 /* XXX */ |
65 #include "gaim.h" | 65 #include "gaim.h" |
66 | 66 |
67 #define AUTO_RESPONSE "<AUTO-REPLY> : " | 67 #define AUTO_RESPONSE "<AUTO-REPLY> : " |
68 | 68 |
69 #define SEND_COLOR "#0d005d" | 69 #define SEND_COLOR "#16569E" |
70 #define RECV_COLOR "#fd4100" | 70 #define RECV_COLOR "#A82F2F" |
71 | 71 |
72 #define LUMINANCE(c) (float)((0.3*(c.red))+(0.59*(c.green))+(0.11*(c.blue))) | 72 #define LUMINANCE(c) (float)((0.3*(c.red))+(0.59*(c.green))+(0.11*(c.blue))) |
73 | 73 |
74 /* These colors come from the default GNOME palette */ | 74 /* These colors come from the default GNOME palette */ |
75 static GdkColor nick_colors[] = { | 75 static GdkColor nick_colors[] = { |
168 * will fit, but then I don't want new windows taking up the entire screen. I check to see if there is only one | 168 * will fit, but then I don't want new windows taking up the entire screen. I check to see if there is only one |
169 * conversation in the window. This way we'll be setting new windows to the size of the last resized new window. */ | 169 * conversation in the window. This way we'll be setting new windows to the size of the last resized new window. */ |
170 | 170 |
171 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | 171 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
172 { | 172 { |
173 if (w == gtkconv->sw && (gaim_conv_window_get_conversation_count(win) == 1)) | 173 if (w == gtkconv->imhtml && (gaim_conv_window_get_conversation_count(win) == 1)) |
174 { | 174 { |
175 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_width", allocation->width); | 175 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_width", allocation->width); |
176 if (saveheight) | 176 if (saveheight) |
177 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_height", allocation->height); | 177 gaim_prefs_set_int("/gaim/gtk/conversations/im/default_height", allocation->height); |
178 } | 178 } |
179 if (w == gtkconv->entry) | 179 if (w == gtkconv->entry) |
180 gaim_prefs_set_int("/gaim/gtk/conversations/im/entry_height", allocation->height); | 180 gaim_prefs_set_int("/gaim/gtk/conversations/im/entry_height", allocation->height); |
181 } | 181 } |
182 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) | 182 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) |
183 { | 183 { |
184 if (w == gtkconv->sw && (gaim_conv_window_get_conversation_count(win) == 1)) | 184 if (w == gtkconv->imhtml && (gaim_conv_window_get_conversation_count(win) == 1)) |
185 { | 185 { |
186 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_width", allocation->width); | 186 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_width", allocation->width); |
187 if (saveheight) | 187 if (saveheight) |
188 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_height", allocation->height); | 188 gaim_prefs_set_int("/gaim/gtk/conversations/chat/default_height", allocation->height); |
189 } | 189 } |
3970 GaimPluginProtocolInfo *prpl_info = NULL; | 3970 GaimPluginProtocolInfo *prpl_info = NULL; |
3971 GaimGtkConversation *gtkconv; | 3971 GaimGtkConversation *gtkconv; |
3972 GaimGtkChatPane *gtkchat; | 3972 GaimGtkChatPane *gtkchat; |
3973 GaimConnection *gc; | 3973 GaimConnection *gc; |
3974 GtkWidget *vpaned, *hpaned; | 3974 GtkWidget *vpaned, *hpaned; |
3975 GtkWidget *vbox, *hbox, *frame, *vbox2, *sep; | 3975 GtkWidget *vbox, *hbox, *frame; |
3976 GtkWidget *lbox, *bbox; | 3976 GtkWidget *lbox, *bbox; |
3977 GtkWidget *label; | 3977 GtkWidget *label; |
3978 GtkWidget *list; | 3978 GtkWidget *list; |
3979 GtkWidget *button; | 3979 GtkWidget *button; |
3980 GtkWidget *sw; | 3980 GtkWidget *sw; |
4025 /* Setup the horizontal pane. */ | 4025 /* Setup the horizontal pane. */ |
4026 hpaned = gtk_hpaned_new(); | 4026 hpaned = gtk_hpaned_new(); |
4027 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); | 4027 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); |
4028 gtk_widget_show(hpaned); | 4028 gtk_widget_show(hpaned); |
4029 | 4029 |
4030 /* Setup the scrolled window to put gtkimhtml in. */ | 4030 /* Setup gtkihmtml. */ |
4031 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | 4031 frame = gaim_gtk_create_imhtml(FALSE, >kconv->imhtml, NULL); |
4032 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | 4032 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); |
4033 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); | 4033 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), |
4034 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), | 4034 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
4035 GTK_SHADOW_IN); | 4035 gtk_paned_pack1(GTK_PANED(hpaned), frame, TRUE, TRUE); |
4036 gtk_paned_pack1(GTK_PANED(hpaned), gtkconv->sw, TRUE, TRUE); | 4036 gtk_widget_show(frame); |
4037 | 4037 |
4038 gtk_widget_set_size_request(gtkconv->sw, | 4038 gtk_widget_set_size_request(gtkconv->imhtml, |
4039 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), | 4039 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), |
4040 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); | 4040 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); |
4041 | 4041 g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate", |
4042 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate", | |
4043 G_CALLBACK(size_allocate_cb), conv); | 4042 G_CALLBACK(size_allocate_cb), conv); |
4044 | |
4045 gtk_widget_show(gtkconv->sw); | |
4046 | |
4047 /* Setup gtkihmtml. */ | |
4048 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
4049 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); | |
4050 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
4051 | |
4052 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | |
4053 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); | |
4054 | 4043 |
4055 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | 4044 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", |
4056 G_CALLBACK(entry_stop_rclick_cb), NULL); | 4045 G_CALLBACK(entry_stop_rclick_cb), NULL); |
4057 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", | 4046 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
4058 G_CALLBACK(refocus_entry_cb), gtkconv); | 4047 G_CALLBACK(refocus_entry_cb), gtkconv); |
4059 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", | 4048 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
4060 G_CALLBACK(refocus_entry_cb), gtkconv); | 4049 G_CALLBACK(refocus_entry_cb), gtkconv); |
4061 | |
4062 gaim_setup_imhtml(gtkconv->imhtml); | |
4063 gtk_widget_show(gtkconv->imhtml); | |
4064 | 4050 |
4065 /* Build the right pane. */ | 4051 /* Build the right pane. */ |
4066 lbox = gtk_vbox_new(FALSE, 6); | 4052 lbox = gtk_vbox_new(FALSE, 6); |
4067 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); | 4053 gtk_paned_pack2(GTK_PANED(hpaned), lbox, FALSE, TRUE); |
4068 gtk_widget_show(lbox); | 4054 gtk_widget_show(lbox); |
4158 | 4144 |
4159 gtk_widget_show(button); | 4145 gtk_widget_show(button); |
4160 | 4146 |
4161 gtkconv->info = button; | 4147 gtkconv->info = button; |
4162 | 4148 |
4163 /* Build the toolbar. */ | 4149 /* Setup the bottom half of the conversation window */ |
4164 frame = gtk_frame_new(NULL); | |
4165 | |
4166 vbox = gtk_vbox_new(FALSE, 6); | 4150 vbox = gtk_vbox_new(FALSE, 6); |
4167 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, TRUE); | 4151 gtk_paned_pack2(GTK_PANED(vpaned), vbox, FALSE, TRUE); |
4168 gtk_widget_show(vbox); | 4152 gtk_widget_show(vbox); |
4169 | 4153 |
4170 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6); | 4154 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6); |
4173 | 4157 |
4174 vbox = gtk_vbox_new(FALSE, 6); | 4158 vbox = gtk_vbox_new(FALSE, 6); |
4175 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0); | 4159 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0); |
4176 gtk_widget_show(vbox); | 4160 gtk_widget_show(vbox); |
4177 | 4161 |
4178 frame = gtk_frame_new(NULL); | 4162 /* Setup the toolbar, entry widget and all signals */ |
4163 frame = gaim_gtk_create_imhtml(TRUE, >kconv->entry, >kconv->toolbar); | |
4179 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); | 4164 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
4180 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); | 4165 gtk_widget_show(frame); |
4181 vbox2 = gtk_vbox_new(FALSE, 0); | 4166 |
4182 gtk_container_add(GTK_CONTAINER(frame), vbox2); | |
4183 gtk_widget_show_all(frame); | |
4184 | |
4185 gtkconv->toolbar = gtk_imhtmltoolbar_new(); | |
4186 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->toolbar, FALSE, FALSE, 0); | |
4187 | |
4188 sep = gtk_hseparator_new(); | |
4189 gtk_box_pack_start(GTK_BOX(vbox2), sep, FALSE, FALSE, 0); | |
4190 gtk_widget_show(sep); | |
4191 | |
4192 /* Setup the entry widget. | |
4193 * We never show the horizontal scrollbar because it was causing weird | |
4194 * lockups when typing text just as you type the character that would | |
4195 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
4196 */ | |
4197 sw = gtk_scrolled_window_new(NULL, NULL); | |
4198 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
4199 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
4200 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), | |
4201 GTK_SHADOW_NONE); | |
4202 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0); | |
4203 gtk_widget_show(sw); | |
4204 | |
4205 gtkconv->entry = gtk_imhtml_new(NULL, NULL); | |
4206 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry"); | 4167 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry"); |
4207 | |
4208 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | 4168 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), |
4209 gaim_account_get_protocol_name(conv->account)); | 4169 gaim_account_get_protocol_name(conv->account)); |
4170 gtk_widget_set_size_request(gtkconv->entry, -1, | |
4171 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); | |
4210 gtkconv->entry_buffer = | 4172 gtkconv->entry_buffer = |
4211 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | 4173 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
4212 gaim_setup_imhtml(gtkconv->entry); | |
4213 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
4214 default_formatize(conv); | |
4215 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), | |
4216 GTK_WRAP_WORD_CHAR); | |
4217 gtk_widget_set_size_request(gtkconv->entry, -1, | |
4218 gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height")); | |
4219 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); | 4174 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
4220 | 4175 |
4221 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | 4176 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
4222 G_CALLBACK(entry_key_press_cb), conv); | 4177 G_CALLBACK(entry_key_press_cb), conv); |
4223 g_signal_connect(G_OBJECT(gtkconv->entry), "message_send", | 4178 g_signal_connect(G_OBJECT(gtkconv->entry), "message_send", |
4225 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", | 4180 g_signal_connect_after(G_OBJECT(gtkconv->entry), "button_press_event", |
4226 G_CALLBACK(entry_stop_rclick_cb), NULL); | 4181 G_CALLBACK(entry_stop_rclick_cb), NULL); |
4227 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", | 4182 g_signal_connect(G_OBJECT(gtkconv->entry), "size-allocate", |
4228 G_CALLBACK(size_allocate_cb), conv); | 4183 G_CALLBACK(size_allocate_cb), conv); |
4229 | 4184 |
4230 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) | 4185 default_formatize(conv); |
4231 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); | |
4232 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), | |
4233 gtkconv->entry); | |
4234 | |
4235 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); | |
4236 gtk_widget_show(gtkconv->entry); | |
4237 | 4186 |
4238 /* Setup the bottom button box. */ | 4187 /* Setup the bottom button box. */ |
4239 gtkconv->bbox = gtk_hbox_new(FALSE, 6); | 4188 gtkconv->bbox = gtk_hbox_new(FALSE, 6); |
4240 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); | 4189 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->bbox, FALSE, FALSE, 0); |
4241 setup_chat_buttons(conv, gtkconv->bbox); | 4190 setup_chat_buttons(conv, gtkconv->bbox); |
4255 static GtkWidget * | 4204 static GtkWidget * |
4256 setup_im_pane(GaimConversation *conv) | 4205 setup_im_pane(GaimConversation *conv) |
4257 { | 4206 { |
4258 GaimGtkConversation *gtkconv; | 4207 GaimGtkConversation *gtkconv; |
4259 GaimGtkImPane *gtkim; | 4208 GaimGtkImPane *gtkim; |
4209 GtkWidget *frame; | |
4260 GtkWidget *paned; | 4210 GtkWidget *paned; |
4261 GtkWidget *vbox, *sep; | 4211 GtkWidget *vbox; |
4262 GtkWidget *vbox2, *vbox3, *frame; | 4212 GtkWidget *vbox2; |
4263 GtkWidget *sw; | |
4264 GList *focus_chain = NULL; | 4213 GList *focus_chain = NULL; |
4265 | 4214 |
4266 gtkconv = GAIM_GTK_CONVERSATION(conv); | 4215 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4267 gtkim = gtkconv->u.im; | 4216 gtkim = gtkconv->u.im; |
4268 | 4217 |
4269 /* Setup the outer pane. */ | 4218 /* Setup the outer pane */ |
4270 paned = gtk_vpaned_new(); | 4219 paned = gtk_vpaned_new(); |
4271 gtk_widget_show(paned); | 4220 gtk_widget_show(paned); |
4272 | 4221 |
4273 /* Setup the top part of the pane. */ | 4222 /* Setup the top part of the pane */ |
4274 vbox = gtk_vbox_new(FALSE, 6); | 4223 vbox = gtk_vbox_new(FALSE, 6); |
4275 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); | 4224 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); |
4276 gtk_widget_show(vbox); | 4225 gtk_widget_show(vbox); |
4277 | 4226 |
4278 /* Setup the gtkimhtml widget. */ | 4227 /* Setup the gtkimhtml widget */ |
4279 gtkconv->sw = gtk_scrolled_window_new(NULL, NULL); | 4228 frame = gaim_gtk_create_imhtml(FALSE, >kconv->imhtml, NULL); |
4280 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(gtkconv->sw), | 4229 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); |
4281 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); | 4230 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), |
4282 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(gtkconv->sw), | 4231 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); |
4283 GTK_SHADOW_IN); | 4232 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
4284 gtk_box_pack_start(GTK_BOX(vbox), gtkconv->sw, TRUE, TRUE, 0); | 4233 gtk_widget_show(frame); |
4285 | 4234 |
4286 gtk_widget_set_size_request(gtkconv->sw, | 4235 gtk_widget_set_size_request(gtkconv->imhtml, |
4287 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), | 4236 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), |
4288 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); | 4237 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); |
4289 g_signal_connect(G_OBJECT(gtkconv->sw), "size-allocate", | 4238 g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate", |
4290 G_CALLBACK(size_allocate_cb), conv); | 4239 G_CALLBACK(size_allocate_cb), conv); |
4291 gtk_widget_show(gtkconv->sw); | |
4292 | |
4293 gtkconv->imhtml = gtk_imhtml_new(NULL, NULL); | |
4294 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); | |
4295 gtk_container_add(GTK_CONTAINER(gtkconv->sw), gtkconv->imhtml); | |
4296 | 4240 |
4297 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", | 4241 g_signal_connect_after(G_OBJECT(gtkconv->imhtml), "button_press_event", |
4298 G_CALLBACK(entry_stop_rclick_cb), NULL); | 4242 G_CALLBACK(entry_stop_rclick_cb), NULL); |
4299 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", | 4243 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_press_event", |
4300 G_CALLBACK(refocus_entry_cb), gtkconv); | 4244 G_CALLBACK(refocus_entry_cb), gtkconv); |
4301 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", | 4245 g_signal_connect(G_OBJECT(gtkconv->imhtml), "key_release_event", |
4302 G_CALLBACK(refocus_entry_cb), gtkconv); | 4246 G_CALLBACK(refocus_entry_cb), gtkconv); |
4303 | 4247 |
4304 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), | 4248 /* Setup the bottom half of the conversation window */ |
4305 gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps")); | |
4306 gaim_setup_imhtml(gtkconv->imhtml); | |
4307 gtk_widget_show(gtkconv->imhtml); | |
4308 vbox2 = gtk_vbox_new(FALSE, 6); | 4249 vbox2 = gtk_vbox_new(FALSE, 6); |
4309 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, TRUE); | 4250 gtk_paned_pack2(GTK_PANED(paned), vbox2, FALSE, TRUE); |
4310 gtk_widget_show(vbox2); | 4251 gtk_widget_show(vbox2); |
4311 | 4252 |
4312 /* Setup the entry widget. | |
4313 * We never show the horizontal scrollbar because it was causing weird | |
4314 * lockups when typing text just as you type the character that would | |
4315 * cause both scrollbars to appear. Definitely seems like a gtk bug. | |
4316 */ | |
4317 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6); | 4253 gtkconv->lower_hbox = gtk_hbox_new(FALSE, 6); |
4318 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->lower_hbox, TRUE, TRUE, 0); | 4254 gtk_box_pack_start(GTK_BOX(vbox2), gtkconv->lower_hbox, TRUE, TRUE, 0); |
4319 gtk_widget_show(gtkconv->lower_hbox); | 4255 gtk_widget_show(gtkconv->lower_hbox); |
4320 | 4256 |
4321 vbox2 = gtk_vbox_new(FALSE, 6); | 4257 vbox2 = gtk_vbox_new(FALSE, 6); |
4322 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0); | 4258 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0); |
4323 gtk_widget_show(vbox2); | 4259 gtk_widget_show(vbox2); |
4324 | 4260 |
4325 frame = gtk_frame_new(NULL); | 4261 /* Setup the toolbar, entry widget and all signals */ |
4326 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); | 4262 frame = gaim_gtk_create_imhtml(TRUE, >kconv->entry, >kconv->toolbar); |
4327 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); | 4263 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); |
4328 vbox3 = gtk_vbox_new(FALSE, 0); | 4264 gtk_widget_show(frame); |
4329 gtk_container_add(GTK_CONTAINER(frame), vbox3); | 4265 |
4330 gtk_widget_show_all(frame); | |
4331 | |
4332 /* Build the toolbar. */ | |
4333 gtkconv->toolbar = gtk_imhtmltoolbar_new(); | |
4334 gtk_box_pack_start(GTK_BOX(vbox3), gtkconv->toolbar, FALSE, FALSE, 0); | |
4335 | |
4336 sep = gtk_hseparator_new(); | |
4337 gtk_box_pack_start(GTK_BOX(vbox3), sep, FALSE, FALSE, 0); | |
4338 gtk_widget_show(sep); | |
4339 | |
4340 sw = gtk_scrolled_window_new(NULL, NULL); | |
4341 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
4342 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
4343 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), | |
4344 GTK_SHADOW_NONE); | |
4345 gtk_box_pack_start(GTK_BOX(vbox3), sw, TRUE, TRUE, 0); | |
4346 gtk_widget_show(sw); | |
4347 | |
4348 gtkconv->entry = gtk_imhtml_new(NULL, NULL); | |
4349 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry"); | 4266 gtk_widget_set_name(gtkconv->entry, "gaim_gtkconv_entry"); |
4350 | |
4351 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), | 4267 gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->entry), |
4352 gaim_account_get_protocol_name(conv->account)); | 4268 gaim_account_get_protocol_name(conv->account)); |
4269 gtk_widget_set_size_request(gtkconv->entry, -1, | |
4270 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); | |
4353 gtkconv->entry_buffer = | 4271 gtkconv->entry_buffer = |
4354 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | 4272 gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
4355 gaim_setup_imhtml(gtkconv->entry); | |
4356 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE); | |
4357 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), | |
4358 GTK_WRAP_WORD_CHAR); | |
4359 gtk_widget_set_size_request(gtkconv->entry, -1, | |
4360 gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height")); | |
4361 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); | 4273 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); |
4362 | 4274 |
4363 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", | 4275 g_signal_connect(G_OBJECT(gtkconv->entry), "key_press_event", |
4364 G_CALLBACK(entry_key_press_cb), conv); | 4276 G_CALLBACK(entry_key_press_cb), conv); |
4365 g_signal_connect(G_OBJECT(gtkconv->entry), "message_send", G_CALLBACK(send_cb), conv); | 4277 g_signal_connect(G_OBJECT(gtkconv->entry), "message_send", G_CALLBACK(send_cb), conv); |
4371 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", | 4283 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "insert_text", |
4372 G_CALLBACK(insert_text_cb), conv); | 4284 G_CALLBACK(insert_text_cb), conv); |
4373 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", | 4285 g_signal_connect(G_OBJECT(gtkconv->entry_buffer), "delete_range", |
4374 G_CALLBACK(delete_text_cb), conv); | 4286 G_CALLBACK(delete_text_cb), conv); |
4375 | 4287 |
4376 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) | |
4377 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(gtkconv->entry)); | |
4378 | |
4379 gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(gtkconv->entry)); | |
4380 gtk_widget_show(gtkconv->entry); | |
4381 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), | |
4382 gtkconv->entry); | |
4383 /* had to move this after the imtoolbar is attached so that the | 4288 /* had to move this after the imtoolbar is attached so that the |
4384 * signals get fired to toggle the buttons on the toolbar as well. | 4289 * signals get fired to toggle the buttons on the toolbar as well. |
4385 */ | 4290 */ |
4386 default_formatize(conv); | 4291 default_formatize(conv); |
4387 | 4292 |
5730 g_return_if_fail(conv != NULL); | 5635 g_return_if_fail(conv != NULL); |
5731 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); | 5636 g_return_if_fail(GAIM_IS_GTK_CONVERSATION(conv)); |
5732 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); | 5637 g_return_if_fail(gaim_conversation_get_type(conv) == GAIM_CONV_IM); |
5733 | 5638 |
5734 gtkconv = GAIM_GTK_CONVERSATION(conv); | 5639 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5735 | 5640 |
5736 if (!gtkconv->u.im->show_icon) | 5641 if (!gtkconv->u.im->show_icon) |
5737 return; | 5642 return; |
5738 | 5643 |
5739 account = gaim_conversation_get_account(conv); | 5644 account = gaim_conversation_get_account(conv); |
5740 if(account && account->gc) | 5645 if(account && account->gc) |