Mercurial > pidgin.yaz
diff src/gtkrequest.c @ 8697:725413cc9fb9
[gaim-migrate @ 9450]
WYSIWYG info editing from Jon Oberheide
We need separate gc flags for conversation HTML and
user info HTML, or something. It seems like there
should be a better way to do that...
Hint hint wink wink nudge nudge
I kick your foot, under the table
You kick me back, I can't say I'm able
To stand for you, or fall for you
Ever again
I wish for, a perfect setting
Wishing that I'm letting you take me
Where you want me, all over again
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 18 Apr 2004 06:22:42 +0000 |
parents | 253eb32e344c |
children | 5a2b5e4abf3a |
line wrap: on
line diff
--- a/src/gtkrequest.c Sun Apr 18 05:47:16 2004 +0000 +++ b/src/gtkrequest.c Sun Apr 18 06:22:42 2004 +0000 @@ -30,6 +30,8 @@ #include "gtkutils.h" #include "stock.h" #include "ui.h" +#include "gtkimhtml.h" +#include "gtkimhtmltoolbar.h" #include <gdk/gdkkeysyms.h> @@ -56,6 +58,7 @@ GtkWidget *entry; gboolean multiline; + gchar *hint; } input; @@ -93,8 +96,12 @@ gtk_text_buffer_get_start_iter(buffer, &start_iter); gtk_text_buffer_get_end_iter(buffer, &end_iter); - multiline_value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, + if ((data->u.input.hint != NULL) && (!strcmp(data->u.input.hint, "html"))) + multiline_value = gtk_imhtml_get_markup(GTK_IMHTML(data->u.input.entry)); + else + multiline_value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, FALSE); + value = multiline_value; } else @@ -241,7 +248,7 @@ static void * gaim_gtk_request_input(const char *title, const char *primary, const char *secondary, const char *default_value, - gboolean multiline, gboolean masked, + gboolean multiline, gboolean masked, gchar *hint, const char *ok_text, GCallback ok_cb, const char *cancel_text, GCallback cancel_cb, void *user_data) @@ -317,8 +324,9 @@ /* Entry field. */ data->u.input.multiline = multiline; + data->u.input.hint = (hint == NULL ? NULL : g_strdup(hint)); - if (multiline) { + if ((data->u.input.hint != NULL) && (!strcmp(data->u.input.hint, "html"))) { GtkWidget *sw; sw = gtk_scrolled_window_new(NULL, NULL); @@ -329,36 +337,76 @@ gtk_widget_set_size_request(sw, 320, 130); - gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); + /* Toolbar */ + GtkWidget *toolbar; + toolbar = gtk_imhtmltoolbar_new(); + gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); + + /* GtkIMHtml */ + entry = gtk_imhtml_new(NULL, NULL); + gtk_imhtml_set_editable(GTK_IMHTML(entry), TRUE); - entry = gtk_text_view_new(); - gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); + gtk_imhtml_smiley_shortcuts(GTK_IMHTML(entry), gaim_prefs_get_bool("/gaim/gtk/conversations/smiley_shortcuts")); + gtk_imhtml_html_shortcuts(GTK_IMHTML(entry), gaim_prefs_get_bool("/gaim/gtk/conversations/html_shortcuts")); + gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), entry); + + if (default_value != NULL) + gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL); + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); + gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); + if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); gtk_container_add(GTK_CONTAINER(sw), entry); - - if (default_value != NULL) { - GtkTextBuffer *buffer; - - buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); - gtk_text_buffer_set_text(buffer, default_value, -1); - } } else { - entry = gtk_entry_new(); + if (multiline) { + GtkWidget *sw; + + sw = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), + GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), + GTK_SHADOW_IN); + + gtk_widget_set_size_request(sw, 320, 130); - gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + /* GtkTextView */ + entry = gtk_text_view_new(); + gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); - gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); + if (default_value != NULL) { + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); + gtk_text_buffer_set_text(buffer, default_value, -1); + } - if (default_value != NULL) - gtk_entry_set_text(GTK_ENTRY(entry), default_value); + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); + + gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); + + if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) + gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); - if (masked) - gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); + gtk_container_add(GTK_CONTAINER(sw), entry); + } + else { + entry = gtk_entry_new(); + + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + + gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); + + if (default_value != NULL) + gtk_entry_set_text(GTK_ENTRY(entry), default_value); + + if (masked) + gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); + } } gaim_set_accessible_label (entry, label);