| 239 } |
246 } |
| 240 |
247 |
| 241 static void * |
248 static void * |
| 242 gaim_gtk_request_input(const char *title, const char *primary, |
249 gaim_gtk_request_input(const char *title, const char *primary, |
| 243 const char *secondary, const char *default_value, |
250 const char *secondary, const char *default_value, |
| 244 gboolean multiline, gboolean masked, |
251 gboolean multiline, gboolean masked, gchar *hint, |
| 245 const char *ok_text, GCallback ok_cb, |
252 const char *ok_text, GCallback ok_cb, |
| 246 const char *cancel_text, GCallback cancel_cb, |
253 const char *cancel_text, GCallback cancel_cb, |
| 247 void *user_data) |
254 void *user_data) |
| 248 { |
255 { |
| 249 GaimGtkRequestData *data; |
256 GaimGtkRequestData *data; |
| 315 |
322 |
| 316 g_free(label_text); |
323 g_free(label_text); |
| 317 |
324 |
| 318 /* Entry field. */ |
325 /* Entry field. */ |
| 319 data->u.input.multiline = multiline; |
326 data->u.input.multiline = multiline; |
| 320 |
327 data->u.input.hint = (hint == NULL ? NULL : g_strdup(hint)); |
| 321 if (multiline) { |
328 |
| |
329 if ((data->u.input.hint != NULL) && (!strcmp(data->u.input.hint, "html"))) { |
| 322 GtkWidget *sw; |
330 GtkWidget *sw; |
| 323 |
331 |
| 324 sw = gtk_scrolled_window_new(NULL, NULL); |
332 sw = gtk_scrolled_window_new(NULL, NULL); |
| 325 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
333 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
| 326 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
334 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
| 327 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
335 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 328 GTK_SHADOW_IN); |
336 GTK_SHADOW_IN); |
| 329 |
337 |
| 330 gtk_widget_set_size_request(sw, 320, 130); |
338 gtk_widget_set_size_request(sw, 320, 130); |
| 331 |
339 |
| |
340 /* Toolbar */ |
| |
341 GtkWidget *toolbar; |
| |
342 toolbar = gtk_imhtmltoolbar_new(); |
| |
343 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); |
| |
344 |
| |
345 /* GtkIMHtml */ |
| |
346 entry = gtk_imhtml_new(NULL, NULL); |
| |
347 gtk_imhtml_set_editable(GTK_IMHTML(entry), TRUE); |
| |
348 |
| |
349 gtk_imhtml_smiley_shortcuts(GTK_IMHTML(entry), gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); |
| |
350 gtk_imhtml_html_shortcuts(GTK_IMHTML(entry), gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); |
| |
351 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), entry); |
| |
352 |
| |
353 if (default_value != NULL) |
| |
354 gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL); |
| |
355 |
| |
356 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); |
| |
357 |
| 332 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
358 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
| 333 |
|
| 334 entry = gtk_text_view_new(); |
|
| 335 gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); |
|
| 336 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); |
|
| 337 |
359 |
| 338 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
360 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
| 339 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); |
361 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); |
| 340 |
362 |
| 341 gtk_container_add(GTK_CONTAINER(sw), entry); |
363 gtk_container_add(GTK_CONTAINER(sw), entry); |
| 342 |
|
| 343 if (default_value != NULL) { |
|
| 344 GtkTextBuffer *buffer; |
|
| 345 |
|
| 346 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); |
|
| 347 gtk_text_buffer_set_text(buffer, default_value, -1); |
|
| 348 } |
|
| 349 } |
364 } |
| 350 else { |
365 else { |
| 351 entry = gtk_entry_new(); |
366 if (multiline) { |
| 352 |
367 GtkWidget *sw; |
| 353 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
368 |
| 354 |
369 sw = gtk_scrolled_window_new(NULL, NULL); |
| 355 gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); |
370 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
| 356 |
371 GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
| 357 if (default_value != NULL) |
372 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 358 gtk_entry_set_text(GTK_ENTRY(entry), default_value); |
373 GTK_SHADOW_IN); |
| 359 |
374 |
| 360 if (masked) |
375 gtk_widget_set_size_request(sw, 320, 130); |
| 361 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
376 |
| |
377 /* GtkTextView */ |
| |
378 entry = gtk_text_view_new(); |
| |
379 gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); |
| |
380 |
| |
381 if (default_value != NULL) { |
| |
382 GtkTextBuffer *buffer; |
| |
383 |
| |
384 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); |
| |
385 gtk_text_buffer_set_text(buffer, default_value, -1); |
| |
386 } |
| |
387 |
| |
388 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); |
| |
389 |
| |
390 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
| |
391 |
| |
392 if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
| |
393 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); |
| |
394 |
| |
395 gtk_container_add(GTK_CONTAINER(sw), entry); |
| |
396 } |
| |
397 else { |
| |
398 entry = gtk_entry_new(); |
| |
399 |
| |
400 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
| |
401 |
| |
402 gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); |
| |
403 |
| |
404 if (default_value != NULL) |
| |
405 gtk_entry_set_text(GTK_ENTRY(entry), default_value); |
| |
406 |
| |
407 if (masked) |
| |
408 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
| |
409 } |
| 362 } |
410 } |
| 363 |
411 |
| 364 gaim_set_accessible_label (entry, label); |
412 gaim_set_accessible_label (entry, label); |
| 365 data->u.input.entry = entry; |
413 data->u.input.entry = entry; |
| 366 |
414 |