From: Mark D. <the...@us...> - 2004-04-18 06:22:51
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32211/src Modified Files: account.c connection.c dialogs.c gtkblist.c gtkprivacy.c gtkrequest.c request.c request.h Log Message: 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 Index: account.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/account.c,v retrieving revision 1.86 retrieving revision 1.87 diff -u -d -p -r1.86 -r1.87 --- account.c 14 Apr 2004 04:04:42 -0000 1.86 +++ account.c 18 Apr 2004 06:22:40 -0000 1.87 @@ -362,11 +362,14 @@ set_user_info_cb(GaimAccount *account, c void gaim_account_request_change_user_info(GaimAccount *account) { + GaimConnection *gc; char primary[256]; g_return_if_fail(account != NULL); g_return_if_fail(gaim_account_is_connected(account)); + gc = gaim_account_get_connection(account); + g_snprintf(primary, sizeof(primary), _("Change user information for %s"), gaim_account_get_username(account)); @@ -374,7 +377,8 @@ gaim_account_request_change_user_info(Ga gaim_request_input(gaim_account_get_connection(account), NULL, primary, NULL, gaim_account_get_user_info(account), - TRUE, FALSE, + TRUE, FALSE, ((gc != NULL) && + (gc->flags & GAIM_CONNECTION_HTML) ? "html" : NULL), _("Save"), G_CALLBACK(set_user_info_cb), _("Cancel"), NULL, account); } Index: connection.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/connection.c,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -p -r1.59 -r1.60 --- connection.c 3 Apr 2004 18:34:28 -0000 1.59 +++ connection.c 18 Apr 2004 06:22:40 -0000 1.60 @@ -194,7 +194,7 @@ gaim_connection_connect(GaimConnection * gaim_connection_destroy(gc); escaped = g_markup_escape_text(username, strlen(username)); primary = g_strdup_printf(_("Enter password for %s"), escaped); - gaim_request_input(gc, NULL, primary, NULL, NULL, FALSE, TRUE, + gaim_request_input(gc, NULL, primary, NULL, NULL, FALSE, TRUE, NULL, _("OK"), G_CALLBACK(request_pass_ok_cb), _("Cancel"), NULL, account); g_free(primary); Index: dialogs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/dialogs.c,v retrieving revision 1.592 retrieving revision 1.593 diff -u -d -p -r1.592 -r1.593 --- dialogs.c 17 Apr 2004 13:58:23 -0000 1.592 +++ dialogs.c 18 Apr 2004 06:22:40 -0000 1.593 @@ -867,7 +867,7 @@ alias_dialog_blist_chat(GaimChat *chat) { gaim_request_input(NULL, _("Alias Chat"), NULL, _("Enter an alias for this chat."), - chat->alias, FALSE, FALSE, + chat->alias, FALSE, FALSE, NULL, _("Alias"), G_CALLBACK(alias_chat_cb), _("Cancel"), NULL, chat); } @@ -884,7 +884,7 @@ alias_dialog_contact(GaimContact *contac { gaim_request_input(NULL, _("Alias Contact"), NULL, _("Enter an alias for this contact."), - contact->alias, FALSE, FALSE, + contact->alias, FALSE, FALSE, NULL, _("Alias"), G_CALLBACK(alias_contact_cb), _("Cancel"), NULL, contact); } @@ -903,7 +903,7 @@ alias_dialog_bud(GaimBuddy *b) char *secondary = g_strdup_printf(_("Enter an alias for %s."), b->name); gaim_request_input(NULL, _("Alias Buddy"), NULL, - secondary, b->alias, FALSE, FALSE, + secondary, b->alias, FALSE, FALSE, NULL, _("Alias"), G_CALLBACK(alias_buddy_cb), _("Cancel"), NULL, b); Index: gtkblist.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkblist.c,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -p -r1.91 -r1.92 --- gtkblist.c 6 Apr 2004 02:36:09 -0000 1.91 +++ gtkblist.c 18 Apr 2004 06:22:40 -0000 1.92 @@ -2313,7 +2313,7 @@ show_rename_group(GtkWidget *unused, Gai { gaim_request_input(NULL, _("Rename Group"), _("New group name"), _("Please enter a new name for the selected group."), - g->name, FALSE, FALSE, + g->name, FALSE, FALSE, NULL, _("OK"), G_CALLBACK(rename_group_cb), _("Cancel"), NULL, g); } @@ -4298,7 +4298,7 @@ gaim_gtk_blist_request_add_group(void) { gaim_request_input(NULL, _("Add Group"), NULL, _("Please enter the name of the group to be added."), - NULL, FALSE, FALSE, + NULL, FALSE, FALSE, NULL, _("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL, NULL); } Index: gtkprivacy.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkprivacy.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -p -r1.13 -r1.14 --- gtkprivacy.c 2 Apr 2004 05:59:11 -0000 1.13 +++ gtkprivacy.c 18 Apr 2004 06:22:41 -0000 1.14 @@ -570,7 +570,7 @@ gaim_gtk_request_add_permit(GaimAccount _("Type a user you permit to contact you."), _("Please enter the name of the user you wish to be " "able to contact you."), - NULL, FALSE, FALSE, + NULL, FALSE, FALSE, NULL, _("Permit"), G_CALLBACK(add_permit_block_cb), _("Cancel"), G_CALLBACK(destroy_request_data), data); @@ -608,7 +608,7 @@ gaim_gtk_request_add_block(GaimAccount * gaim_request_input(account, _("Block User"), _("Type a user to block."), _("Please enter the name of the user you wish to block."), - NULL, FALSE, FALSE, + NULL, FALSE, FALSE, NULL, _("Block"), G_CALLBACK(add_permit_block_cb), _("Cancel"), G_CALLBACK(destroy_request_data), data); Index: gtkrequest.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkrequest.c,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -p -r1.64 -r1.65 --- gtkrequest.c 30 Mar 2004 04:49:53 -0000 1.64 +++ gtkrequest.c 18 Apr 2004 06:22:41 -0000 1.65 @@ -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 @@ typedef struct GtkWidget *entry; gboolean multiline; + gchar *hint; } input; @@ -93,8 +96,12 @@ input_response_cb(GtkDialog *dialog, gin 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 @@ text_to_stock(const char *text) 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 @@ gaim_gtk_request_input(const char *title /* 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 @@ gaim_gtk_request_input(const char *title 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); + + 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); - entry = gtk_text_view_new(); - gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); 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); + } + else { + if (multiline) { + GtkWidget *sw; - if (default_value != NULL) { - GtkTextBuffer *buffer; + 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); - buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); - gtk_text_buffer_set_text(buffer, default_value, -1); + gtk_widget_set_size_request(sw, 320, 130); + + /* GtkTextView */ + entry = gtk_text_view_new(); + gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); + + 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); + } + + 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); } - } - else { - entry = gtk_entry_new(); + else { + entry = gtk_entry_new(); - gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); - gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); + 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 (default_value != NULL) + gtk_entry_set_text(GTK_ENTRY(entry), default_value); - if (masked) - gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); + if (masked) + gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); + } } gaim_set_accessible_label (entry, label); Index: request.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/request.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -p -r1.28 -r1.29 --- request.c 25 Feb 2004 19:34:26 -0000 1.28 +++ request.c 18 Apr 2004 06:22:41 -0000 1.29 @@ -1100,7 +1100,7 @@ gaim_request_field_account_get_filter(co void * gaim_request_input(void *handle, 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) @@ -1120,7 +1120,7 @@ gaim_request_input(void *handle, const c info->handle = handle; info->ui_handle = ops->request_input(title, primary, secondary, default_value, - multiline, masked, + multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb, user_data); Index: request.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/request.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -p -r1.26 -r1.27 --- request.h 4 Mar 2004 05:47:41 -0000 1.26 +++ request.h 18 Apr 2004 06:22:41 -0000 1.27 @@ -171,7 +171,7 @@ typedef struct { void *(*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); @@ -1070,6 +1070,7 @@ GaimFilterAccountFunc gaim_request_field * @param default_value The default value. * @param multiline TRUE if the inputted text can span multiple lines. * @param masked TRUE if the inputted text should be masked in some way. + * @param hint bleh. * @param ok_text The text for the OK button. * @param ok_cb The callback for the OK button. * @param cancel_text The text for the cancel button. @@ -1081,7 +1082,7 @@ GaimFilterAccountFunc gaim_request_field void *gaim_request_input(void *handle, 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); |