aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog616
-rw-r--r--mail/component-factory.c171
-rw-r--r--mail/mail-accounts.c141
-rw-r--r--mail/mail-callbacks.c850
-rw-r--r--mail/mail-composer-prefs.c336
-rw-r--r--mail/mail-display.c606
-rw-r--r--mail/mail-preferences.c289
7 files changed, 1304 insertions, 1705 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index ddd57b115f..83a93c7f3c 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,4 +1,4 @@
-2002-12-03 Jeffrey Stedfast <fejj@ximian.com>
+2002-12-02 Jeffrey Stedfast <fejj@ximian.com>
* mail-callbacks.c (guess_me_from_accounts): Use the same logic as
mail_generate_reply(). Fixes bug #34882
@@ -12,236 +12,28 @@
retval from message_rfc822_dnd() rather than relying on an
exception, because one will not always necessarily be set. For
MESSAGE_RFC822, also use the retval from message_rfc822_dnd().
-
-2002-12-03 Not Zed <NotZed@Ximian.com>
-
- * folder-browser.c (folder_browser_finalise/destroy): frobbed
- around with these till it exits without crashing.
-
- * message-list.c (message_list_destroy): made a destroy
- handler again (was dispose). Frobbed around with this and
- finalise till it can destroy without crashing.
-
- * message-browser.c (message_browser_new): ref/sink the
- folderbrowser.
+ Based on preliminary work by Yuedong Du.
2002-11-25 Radek Doulik <rodo@ximian.com>
* mail-preferences.c (mail_preferences_construct): magic_check -->
magic_links_check
-2002-11-27 Not Zed <NotZed@Ximian.com>
-
- * message-tag-followup.c (construct): gnome_pixmap -> gtkimage.
- (construct): gtk_clist -> gtk_tree_view, setup columns. They dont
- size well :-/
- (message_tag_followup_append_message): Append using model, remove
- clist stuff.
- (construct): Show date edit (glade bugs?)
-
- * folder-browser.c (folder_browser_class_init): gtk_marshal -> g_cclosure_marshal
- (setup_popup_icons): gnome_pixmap -> gtk_image.
- (on_right_click): gtk_pixmap -> gtk_image.
-
- * mail-accounts.c (account_delete_clicked): removed #if 0'd out code.
-
- * mail-send-recv.c (receive_done): remove FIXME and extra unref.
-
- * mail-session.c (request_password): Removed #if 0'd out stuff.
-
- * mail-vfolder.c (new_rule_clicked): proper cast for g_object_get_data.
-
- * mail-local.c (reconfigure_response): cast for g_object_get_data.
-
- * mail-account-editor.c (construct): GNOME_DIALOG -> GTK_DIALOG.
-
- * *.[ch]: re-ran fix.sh for e_notice change
-
- * mail-callbacks.c (save_msg_ok): g_object_get_data +
- gtk_object_remove_no_notify -> g_object_steal_data.
- (find_socket): gtk_container_children ->
- gtk_container_get_children
- (edit_msg): gnome_*_dialog -> gtk_message_dialog.
- (resent_msg): "
- (search_msg): "
- (confirm_goto_next_folder): gtkmessagedialogised (even if not
- used).
- (confirm_expunge): gtkmessagedialogised
- (filter_edit): "
- (do_mail_print): e_notice -> gtk_message_dialog.
- (are_you_sure): removed e_gnome_ok_cancel_dialog crap, replaced
- with a gtk dialog.
- (are_you_sure): gtkmessagedialogised.
- (edit_msg_internal): Dont free uids array, are_you_sure() free's
- it.
- (resend_msg): Same.
- (check_send_configuration): Use e_notice for stuff. Sigh, here we
- go again ...!
- (e_question): A utility function to ask a question, potentially
- with 'dont ask again' as well.
- (configure_mail): use e_question to save code. Here we go again,
- again ...
- (ask_confirm_for_unwanted_html_mail): "
- (ask_confirm_for_only_bcc): "
- (ask_confirm_for_only_bcc): "
- (composer_get_message): Use e_notice.
- (composer_save_draft_cb): Use e_question
- (edit_msg): use e_notice, & change to an ERROR.
- (resend_msg): same.
- (save_msg_ok): Properly initialise ret to OK, and use e_question,
- and use access() to determine existance/write access rather than
- stat, display an error if we can't write to a file that exists,
- and print the filename in all dialogues.
- (confirm_goto_next_folder): Use e_question.
- (confirm_expunge): use e_question.
- (filter_edit): Use e_notice.
- (do_mail_print): use e_notice.
-
-2002-11-26 Not Zed <NotZed@Ximian.com>
-
- * mail-vfolder.c (vfolder_gui_add_rule): clicked->response signal
- for gtk dialogue.
- (new_rule_clicked): Dont unref after destroy (duh, idiot again).
- (edit_rule_response): Same here.
- (mail_vfolder_delete_uri): Connect response signal to
- gtk_widget_destroy directrly using g_signal_connect_swapped.
- (close_dialogue): Removed, as no longer needed.
-
- * message-list.c (get_normalised_string): Duh idiot, "un-fixed"
- the memleak i added.
-
- * mail-callbacks.c (composer_get_message): Set parent window in
- message dialogue & DESTROY_WITH_PARENT flag.
- (composer_save_draft_cb):
- (configure_mail):
- (check_send_configuration): Add DESTROY_WITH_PARENT flag to
- gtk_message_dialog's
- (local_configure_done): remove some unecessary/wrong casts.
- (empty_trash_expunged_cb): "
- (do_mail_print): use gtk_window_set_transient_for instead of
- e_dialog_set_parent.
-
-2002-11-26 Not Zed <NotZed@Ximian.com>
-
- * mail-account-editor.c (mail_account_editor_new):
- gtk_widget_set_parent_window -> gtk_window_set_transient_for.
-
- * mail-callbacks.c (composer_send_queued_cb): dont unref composer.
-
- * message-browser.c (message_browser_destroy): moved back from
- finalise.
-
-2002-11-25 Not Zed <NotZed@Ximian.com>
-
- * message-list.c (message_list_dispose): move saving tree state
- here.
- (message_list_finalise): And take it from here.
-
- * mail-display.c (mail_display_destroy): @#$@# gtk. changed this
- around a bit.
- (mail_display_init): Fix prototype, its a gobject.
- (mail_display_init): ref/sink the invisible gtkobject.
-
-2002-11-22 Not Zed <NotZed@Ximian.com>
-
- * mail-callbacks.c (ask_confirm_for_unwanted_html_mail): removed
- e_messagebox, and use gtk_message_dialog directly.
- (ask_confirm_for_empty_subject): and here.
- (ask_confirm_for_only_bcc): And here too.
- (msgbox_destroy_cb): Removed, since no longer needed.
-
2002-11-15 Harry Lu <harry.lu@sun.com>
* mail-display.c (write_data_to_file): Show file name when prompt
- to user for overwrite. Fixes bug #34180.
+ to user for overwrite.
-2002-11-21 Harry Lu <harry.lu@sun.com>
+2002-11-20 Harry Lu <harry.lu@sun.com>
- * mail-display.c (do_attachment_header): Enable dragging of all
+ * mail-display.c (do_attachment_header): Enable dragging of all
attachments. For bug #34327.
-2002-11-21 Jeffrey Stedfast <fejj@ximian.com>
-
- * mail-preferences.c (mail_preferences_construct): Since the
- GSList returned from gconf needs to be free'd by us, we don't need
- to strdup the values. Also make sure we don't leak the GSList
- itself.
- (mail_preferences_apply): Don't leak our GSList data.
-
-2002-08-30 Radek Doulik <rodo@ximian.com>
-
- * mail-display.c (mail_display_render): don't set margins for raw
- message view
-
- * mail-format.c (mail_format_raw_message): as below
- (handle_text_plain_flowed): as below
- (mail_format_raw_message): don't use data_urls
-
- * mail-display.c (mail_text_write): put text in iframe, so it has
- margins and should not be placed in table which changes wrapping
- behavior
-
-2002-11-20 Jeffrey Stedfast <fejj@ximian.com>
-
- * mail-composer-prefs.c (mail_composer_prefs_construct): gconfify.
- (mail_composer_prefs_apply): gconfify this also.
-
- * mail-preferences.c (mail_preferences_construct):
- gconf_client_get_string() probably returns an allocated buffer.
-
-2002-11-20 Not Zed <NotZed@Ximian.com>
-
- * importers/Makefile.am (%.server.in): provide a proper implicit
- rule for building .server.in from .server.in.in. The other one
- just copied the first target to all destinations(!).
-
- * importers/evolution-outlook-importer.c (outlook_factory_fn):
- destroy -> weak ref.
-
-2002-11-19 Jeffrey Stedfast <fejj@ximian.com>
-
- * mail-preferences.c (mail_preferences_apply): Save the settings
- via gconf.
- (mail_preferences_construct): Load the values from gconf.
-
2002-11-19 Radek Doulik <rodo@ximian.com>
* mail-composer-prefs.c (sig_load_preview): use
gtk_html_begin_content to specify utf-8
-2002-11-19 Not Zed <NotZed@Ximian.com>
-
- * importers/evolution-mbox-importer.c (mail_importer_module_init):
- fix warning message, outlook->mbox.
-
- * importers/Makefile.am: fix serverdir to point to
- $libdir/bonobo/servers.
-
- * mail-callbacks.c (addrbook_sender): add type to
- bonobo_widget_set_property.
-
- * mail-vfolder.c (vfolder_editor_response): dont unref after destroy.
-
- * mail-session.c (pass_response): dont unref aftrer destroy.
-
- * mail-local.c (reconfigure_response): dont unref after destroy.
-
- * mail-display.c (launch_cb): dont unref after destroy.
- (launch_cb): "
- (drag_data_get_cb): "
- (html_button_press_event): add type to bonobo_widget::set_property
-
- * mail-config.c (mail_config_check_service): dont unref after
- destroy.
-
- * component-factory.c (send_receive_cb): dont unref after destroy.
- (request_quit): "
-
- * mail-signature-editor.c (mail_signature_editor): Use version 3.0
- of gtkhtml editor interfaces.
- (do_exit): dont unref after destroy.
- (format_html_cb): Add type to bonobo_widget::set_property.
-
2002-11-18 Radek Doulik <rodo@ximian.com>
* mail-composer-prefs.c (spell_setup_check_options): check
@@ -249,407 +41,13 @@
2002-11-18 Jeffrey Stedfast <fejj@ximian.com>
- * mail-accounts.c (mail_accounts_load): Specify the default
- account. Also, don't need to use e_utf8_to_gtk_string() here.
-
-2002-11-18 Not Zed <NotZed@Ximian.com>
-
- * Makefile.am (evolution_mail_LDADD): Added back
- libevolution-importer stuff.
- (SUBDIRS): Added back importers.
-
- * importers/evolution-mbox-importer.c (load_file_fn): build the
- uri without deprecated funcs.
- (load_file_fn): dont free/alloc a camel_exception for no obvious
- purpose.
- (mbox_factory_fn): use weak_ref rather than destroy.
- (importer_destroy_cb): fix signature for weak ref notify.
- (mbox_factory_fn): add cid param.
-
- * importers/*.[ch]: ran fix script over everything.
-
- * importers/*.server.in.in: Added bonobo activation files. Moved
- evolution-mail to @LIBEXEC@ as below.
-
- * importers/Makefile.am: oaf->bonobo activation stuff.
-
- * importers/evolution-outlook-importer.c (outlook_factory_fn): Add
- component id to callback.
-
-2002-11-15 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am: Add rules to substitute @LIBEXEC@ in
- GNOME_Evolution_Mail.server.in.in and install evolution-mail in
- $(libexecdir) instead of $(bindir).
+ * mail-accounts.c (mail_accounts_load): Specify which account is
+ the default account.
- * GNOME_Evolution_Mail.server.in.in: Replaced evolution-mail with
- @LIBEXECDIR@/evolution-mail.
-
-2002-11-15 Rodney Dawes <dobey@ximian.com>
-
- * component-factory.c: Use bonobo_main_quit instead of gtk
-
2002-11-15 Jeffrey Stedfast <fejj@ximian.com>
* mail-composer-prefs.c (sig_edit): Correctly spell Advanced.
-2002-11-15 Not Zed <NotZed@Ximian.com>
-
- * mail-summary.c (create_summary_view): weak notify -> ref.
-
- * mail-send-recv.c (build_dialogue): weak notify -> ref.
-
- * mail-accounts.c (account_edit_clicked): weak notify -> ref, i
- presume this is what jeff meant, 'cause it dont compile otherwise.
-
-2002-11-14 Jeffrey Stedfast <fejj@ximian.com>
-
- * mail-accounts.c (account_edit_clicked): Use g_object_weak_ref
- rather than connecting to destroy.
- (account_add_clicked): Same.
-
- * mail-callbacks.c (addrbook_sender): Make this use
- g_object_weak_notify also.
- (subscribe_dialog_destroy): Add NULL guards here since I think we
- really do want to connect to the "destroy" signal in the function
- that connects us to that signal.
-
- * mail-config-factory.c (config_control_factory_cb): Same.
-
- * mail-display.c (save_part): Here too.
- (make_popup_window): And here.
-
- * mail-send-recv.c (build_dialogue): Same here.
-
- * mail-summary.c (create_summary_view): Use g_object_weak_notify
- instead of connecting to the destroy signal.
-
-2002-11-14 Ettore Perazzoli <ettore@ximian.com>
-
- * component-factory.c (owner_set_cb): Want a (GWeakNotify) cast
- here, not (GWeakNotify *).
-
- * subscribe-dialog.c (fete_init): g_object_set() instead of
- gtk_object_set().
- (populate_store_list): Likewise.
- (menu_item_selected): g_object_get_data() instead of
- gtk_object_get_data().
-
- * message-list.c (message_list_create_extras): g_object_set()
- instead of gtk_object_set().
-
- * message-browser.c (message_browser_message_list_built):
- g_object_get_data() instead of gtk_object_get_data().
-
- * mail-vfolder.c (edit_rule_response): g_object_get_data() instead
- of gtk_object_get_data().
-
- * mail-summary.c (generate_folder_summaries): g_object_unref() the
- context instead of gtk_object_destroy().
-
- * mail-local.c (reconfigure_response): g_object_get_data() instead
- of gtk_object_get_data().
-
- * mail-display.c (pixbuf_gen_idle): g_object_unref() the GdkPixbuf
- loader instead of gtk_object_destroy().
- (pixbuf_gen_idle): Likewise.
- (embeddable_destroy_cb): Likewise.
-
- * mail-config-druid.c (mail_config_druid_destroy): No need to
- gtk_object_destroy() the GladeXML object.
- (construct): g_object_set() instead of gtk_object_set().
-
- * folder-browser.c (folder_browser_gui_init): g_object_get_data()
- instead of gtk_object_get_data().
-
-2002-11-14 Not Zed <NotZed@Ximian.com>
-
- * component-factory.c (create_view): shell client objref.
- (mail_add_storage): "
- (mail_remove_storage): "
-
-2002-11-13 Joe Shaw <joe@ximian.com>
-
- * Makefile.am: Remove a couple backslashes that were causing
- automake to complain, even though they were on lines that were
- -commented out-. Sigh.
-
-2002-11-13 Ettore Perazzoli <ettore@ximian.com>
-
- * folder-info.c (evolution_folder_info_factory_fn): Use
- g_object_new() instead of gtk_type_new().
- * folder-browser.c (folder_browser_new): Likewise.
- * mail-account-gui.c
- (mail_account_gui_folder_selector_button_new): Likewise.
- * mail-font-prefs.c (mail_font_prefs_new): Likewise.
-
-2002-11-13 Ettore Perazzoli <ettore@ximian.com>
-
- * mail-format.c: Do not #include <libgnome/gnome-defs.h>.
- * mail-importer.c: Likewise.
- * mail-mt.c: Likewise.
- * mail-ops.c: Likewise.
- * mail-search-dialogue.c: Likewise.
- * mail-session.c: Likewise.
- * mail-vfolder.c: Likewise.
- * message-tag-followup.c: Likewise.
- * main.c: Likewise, and <libgnomeui/gnome-init.h>.
-
- * mail-callbacks.c: Do not #include <libgnome/gnome-paper.h>.
- (do_mail_print): Remove the GnomePaper local variable.
-
-2002-11-13 Not Zed <NotZed@Ximian.com>
-
- * component-factory.c (owner_set_cb): destroy->weak ref.
- (owner_set_cb): shell client changes.
-
- * mail-signature-editor.c (mail_signature_editor): bonobo api changes.
-
- * mail-local.c (save_metainfo): go back to using xmlSaveFile.
-
- * Makefile.am: Removed libevolution-importer from mail.
-
-2002-11-13 Not Zed <NotZed@Ximian.com>
-
- * GNOME_Evolution_Mail.server.in.in: Added to cvs. Currently
- contains no configurable stuff, but maybe it will one day.
-
- * Makefile.am (server_DATA): change oaf stuff to server stuff for
- bonobo activation.
-
- * mail-preferences.c (mail_preferences_apply): handle const entry text.
-
- * mail-composer-prefs.c (url_requested): Fixed typo.
- (mail_composer_prefs_construct): gnomepixmap->gtkimage.
-
- * mail-callbacks.c (configure_mail): destroy dialogue before dealing
- with response.
- (mail_generate_reply): Fix a typo.
- (popup_listener_cb): fix prototype.
- (tag_editor_response): Handle gtk dialog response.
- (flag_for_followup): Change gnome dialog to gtk dialog stuff.
- (tag_editor_destroy_cb):
- (tag_editor_cancel):
- (tag_editor_ok): Removed, handled in _response().
- (filter_editor_response): renamed from _clicked, handle gtk
- dialogue signal.
- (filter_editor_destroy): Removed.
- (footer_info_new): gnome font api changes.
- (do_mail_print): port to gnome print 2.
-
- * mail-autofilter.c (mail_filter_delete_uri): message_dialog uses
- a specific button enum, not the stock ones.
-
- * mail-accounts.c (mail_accounts_tab_get_type): gobjectify.
- (account_delete_clicked): gdkdialogise.
-
- * mail-account-gui.c (mail_account_gui_setup): Hack around font
- metric determination code.
-
- * mail-account-editor.c (mail_account_editor_get_type):
- gobjectise.
- (mail_account_editor_new): ""
-
- * folder-info.c (evolution_folder_info_notify_ready): use pbclient
- interface.
-
- * folder-browser-factory.c (control_destroy_cb): fix a typo.
- (folder_browser_factory_new_control): More typos.
-
- * folder-browser.c (on_right_click): cast around const warning.
- (context_menu_position_func): fix for api change.
-
- * e-searching-tokenizer.c (e_searching_tokenizer_finalise):
- Changed from destroy since it only frees memory.
- (e_searching_tokenizer_get_type): glibify.
-
- * component-factory.c (request_quit): gtkdialogise.
- (send_receive_cb): "
- (create_component): gdk_pixbuf api.
- (component_factory_init): bonobo activation stuff.
- (warning_response): renamed from warning_clicked.
- (owner_set_cb): gtkdialogise.
-
-2002-11-12 Jeffrey Stedfast <fejj@ximian.com>
-
- * Makefile.am: Added files I've ported.
-
- * mail-config.c: Remove gnome-defs.h, this header no longer exists
- in GNOME2.
-
-2002-11-13 Not Zed <NotZed@Ximian.com>
-
- * Makefile.am: Commented out stuff that doesn't build yet. Also
- fixed idl build rule. importers still not built.
-
- * main.c (main): bonobactivationise. remove push visual/colormap.
- (main): no longer activate activation, let bonobo_init do it.
-
- * mail-signature-editor.c (menu_help): Change help api.
-
- * mail-session.c (user_message_destroy_noreply): removed. Not
- used?
-
- * mail-local.c (load_metainfo): xml root->children.
-
- * mail-format.c (g_string_append_len): Removed, it exists now.
-
-2002-11-12 Not Zed <NotZed@Ximian.com>
-
- * subscribe-dialog.c: gnome2ised, use gtkdialog.
- (subscribe_get_global_extras): use a weak ref rather than destroy
- signal.
-
- * message-tag-followup.c: gnome2ised.
-
- * message-tag-editor.c: gnome2ised & converted to gtkdialog.
-
- * message-list.c: gnome2ised.
- (message_list_finalise): From destroy method. maybe should be
- destroy still.
-
- * message-browser.c: port to gnome2
- (message_browser_finalise): renamed from destroy method.
-
- * mail-stream-gtkhtml.c: removed redundant
- camel_class_get_global_classfuncs() call.
-
- * mail-signature-editor.c: gtkdialogised, & bonobo api changes.
-
-
- * mail-search-dialogue.c: gtkdialogised.
-
- * mail-folder-cache.c: cleaned up camel ref/hook casts.
-
- * mail-composer-prefs.c (mail_composer_prefs_get_type): convert to
- gtype.
-
- * mail-font-prefs.c (mail_font_prefs_destroy): from finalise.
-
- * mail-config.c: s/bonobo_config/e_config_listener/ Added
- /apps/Evolution prefix to the evolution keys. Changed to use
- e_config_listener, etc.
- (mail_config_init): remove bonobo_config stuff.
- (mail_config_check_service): gtk dialogise.
- (check_response): from check_cancelled.
-
- * mail-config-druid.c (mail_config_druid_destroy): renamed from
- _finalize, turned into destroy handler.
- (construct): set type to toplevel, GTK_WINDOW_DIALOG no longer
- exists.
-
- * mail-config-factory.c (mail_config_register_factory): bonobo api
- changes.
-
- * mail-crypto.c (mail_crypto_get_pgp_cipher_context): cleaned up
- unref casts.
-
- * mail-display.c (write_data_to_file): gnome->gtkdialog.
- (on_link_clicked): use ascii_str*cmp on url.
- (save_part): g_path stuff.
- (launch_cb): gtk dialog.
- (pixmap_press): de-oafify.
- (pixbuf_for_mime_type): gnome-vfs api changes.
- (do_attachment_header): Change the pixmap to a gtkimage.
- (do_signature): "
- (pixbuf_gen_idle): "
- (do_attachment_header): ascii_str*cmp
- (do_attachment_header): gnome pixmap->gtkimage.
- (mail_display_destroy): protect against gtk mentalness.
- (html_button_press_event): ascii_str*cmp
- (drag_data_get_cb): added comment for translators of filename.
-
- * mail-format.c (component_supports): de-oafise.
- (is_anonymous): ascii_strncmp
- (attachment_header): remove utf8<>locale stuff, and gnomevfs api
- changes.
- (format_mime_part): fix g_strdown call.
- (write_field_row_begin): kill utf8->gtk stuff.
- (write_address): "
- (default_header_index): ascii_strcasecmp
- (handle_text_plain): "
- (handle_text_enriched): "
- (handle_multipart_encrypted): remove utf/gtk stuff.
- (handle_message_external_body): ascii_str*cmp
-
- * mail-identify.c (mail_identify_mime_part):
- (identify_by_magic): gnome vfs api changes.
-
- * mail-importer.c: Converted.
-
- * mail-local.c (load_metainfo): xml childs -> children.
- (mls_get_folder): g_strerror.
- (mls_delete_folder): g_strerror.
- (reconfigure_got_folder): Gnome->GtkDialog
- (reconfigure_response): from reconfigure_clicked.
-
- * mail-mt.c (mail_msg_check_error): gnome -> gtk dialog
- (error_response): renmae from error_gone. destroy widget on any
- response.
-
- * mail-offline-handler.c (impl_finalise): renamed from
- impl_destroy since thats what it should be anyway.
-
- * mail-ops.c: removed utf8 widget conversion & camel_object_un/ref
- casts.
-
- * mail-preferences.c (mail_preferences_get_type): glib2'ised.
-
- * mail-search.c (mail_search_finalise): renmaed from destroy &
- properly chain.
- (mail_search_get_type): glib2 & make gtkdialog parent.
- (entry_run_search): run search when entry activated. not sure if
- gtkdialog has anohter way to do this on an arbitrary widget.
-
- * mail-send-recv.c (dialogue_response): renamed from clicked. Use
- gtkdialog.
-
- * mail-session.c (request_password_deleted): removed, redundant.
- (pass_response): rename from pass_got, changed for gtkdialog.
- (user_message_destroy): Removed, redundant.
- (user_message_response): Renamed from user_message_clicked.
-
-2002-11-11 Not Zed <NotZed@Ximian.com>
-
- * mail-stream-gtkhtml.c (mail_stream_gtkhtml_class_init): dont use
- get_global_classfuncs, just get the type
-
- * mail-tools.c: converted gnome2 api's.
-
- * mail-vfolder.c (vfolder_editor_response): clicked->response.
- (vfolder_editor_destroy): Removed.
- (vfolder_edit): gtk dialog api
- (edit_rule_response): clicked->response.
- (vfolder_edit_rule): gnomedialog->gtkdialog.
- (vfolder_gui_add_rule): "
- (new_rule_clicked): clicked->response
-
-2002-11-11 Jeffrey Stedfast <fejj@ximian.com>
-
- * mail-callbacks.c: Half way ported. I'll finish the rest later.
-
- * mail-autofilter.c: Ported.
-
- * mail-account-gui.c: Ported.
-
- * mail-account-editor.c: Ported.
-
- * folder-browser-ui.c: Ported.
-
- * folder-browser-factory.c: Ported.
-
- * folder-browser.c: Ported.
-
- * e-searching-tokenizer.c: Roughly ported.
-
-2002-11-10 Jeffrey Stedfast <fejj@ximian.com>
-
- * *.glade: Converted to libglade-2's format.
-
-2002-11-08 Jeffrey Stedfast <fejj@ximian.com>
-
- * mail-composer-prefs.c: Ported.
-
2002-10-28 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (folder_browser_query_changed): No longer need
diff --git a/mail/component-factory.c b/mail/component-factory.c
index 03aaa2c5b6..f1c94572a8 100644
--- a/mail/component-factory.c
+++ b/mail/component-factory.c
@@ -27,8 +27,6 @@
#include <bonobo/bonobo-generic-factory.h>
#include <gal/widgets/e-gui-utils.h>
-#include <string.h>
-
#include "camel.h"
#include "Evolution.h"
@@ -149,7 +147,7 @@ create_view (EvolutionShellComponent *shell_component,
BonoboControl *control;
shell_client = evolution_shell_component_get_owner (shell_component);
- corba_shell = evolution_shell_client_corba_objref(shell_client);
+ corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client));
if (type_is_mail (folder_type)) {
const char *noselect;
@@ -157,14 +155,14 @@ create_view (EvolutionShellComponent *shell_component,
url = camel_url_new (physical_uri, NULL);
noselect = url ? camel_url_get_param (url, "noselect") : NULL;
- if (noselect && !strcasecmp (noselect, "yes"))
+ if (noselect && !g_strcasecmp (noselect, "yes"))
control = create_noselect_control ();
else
control = folder_browser_factory_new_control (physical_uri,
corba_shell);
camel_url_free (url);
} else if (type_is_vtrash (folder_type)) {
- if (!strncasecmp (physical_uri, "file:", 5))
+ if (!g_strncasecmp (physical_uri, "file:", 5))
control = folder_browser_factory_new_control ("vtrash:file:/", corba_shell);
else
control = folder_browser_factory_new_control (physical_uri, corba_shell);
@@ -343,7 +341,7 @@ xfer_folder (EvolutionShellComponent *shell_component,
if (remove && strcmp(src->protocol, dst->protocol) == 0) {
char *sname, *dname;
CamelStore *store;
-
+
if (src->fragment)
sname = src->fragment;
else {
@@ -352,7 +350,7 @@ xfer_folder (EvolutionShellComponent *shell_component,
else
sname = "";
}
-
+
if (dst->fragment)
dname = dst->fragment;
else {
@@ -361,11 +359,11 @@ xfer_folder (EvolutionShellComponent *shell_component,
else
dname = "";
}
-
+
store = camel_session_get_store(session, source_physical_uri, &ex);
if (store != NULL)
camel_store_rename_folder(store, sname, dname, &ex);
-
+
if (camel_exception_is_set(&ex))
GNOME_Evolution_ShellComponentListener_notifyResult (listener, GNOME_Evolution_ShellComponentListener_INVALID_URI, &ev);
else {
@@ -377,7 +375,7 @@ xfer_folder (EvolutionShellComponent *shell_component,
camel_object_unref((CamelObject *)store);
} else {
source = mail_tool_uri_to_folder (source_physical_uri, 0, &ex);
-
+
if (source) {
xfer_folder_data *xfd;
@@ -385,17 +383,17 @@ xfer_folder (EvolutionShellComponent *shell_component,
xfd->remove_source = remove_source;
xfd->source_uri = g_strdup (source_physical_uri);
xfd->listener = CORBA_Object_duplicate (listener, &ev);
-
+
uids = camel_folder_get_uids (source);
mail_transfer_messages (source, uids, remove_source, destination_physical_uri, CAMEL_STORE_FOLDER_CREATE, xfer_folder_done, xfd);
camel_object_unref (CAMEL_OBJECT (source));
} else
GNOME_Evolution_ShellComponentListener_notifyResult (listener, GNOME_Evolution_ShellComponentListener_INVALID_URI, &ev);
}
-
+
CORBA_exception_free (&ev);
camel_exception_clear (&ex);
-
+
camel_url_free(src);
camel_url_free(dst);
}
@@ -404,12 +402,13 @@ static void
configure_folder_popup(BonoboUIComponent *component, void *user_data, const char *cname)
{
char *uri = user_data;
-
+
+
if (strncmp(uri, "vfolder:", 8) == 0)
vfolder_edit_rule(uri);
else {
FolderBrowser *fb = folder_browser_factory_get_browser(uri);
-
+
if (fb)
configure_folder(component, fb, cname);
else
@@ -433,16 +432,14 @@ populate_folder_context_menu (EvolutionShellComponent *shell_component,
if (!type_is_mail (type))
return;
-
+
/* FIXME: handle other types */
-
+
/* the unmatched test is a bit of a hack but it works */
if ((strncmp(physical_uri, "vfolder:", 8) == 0
&& strstr(physical_uri, "#" CAMEL_UNMATCHED_NAME) == NULL)
|| strncmp(physical_uri, "file:", 5) == 0) {
- bonobo_ui_component_add_verb_full(uic, "ChangeFolderPropertiesPopUp",
- g_cclosure_new(G_CALLBACK(configure_folder_popup),
- g_strdup(physical_uri), (GClosureNotify)g_free));
+ bonobo_ui_component_add_verb_full(uic, "ChangeFolderPropertiesPopUp", configure_folder_popup, g_strdup(physical_uri), g_free);
bonobo_ui_component_set_translate (uic, EVOLUTION_SHELL_COMPONENT_POPUP_PLACEHOLDER, popup_xml, NULL);
}
}
@@ -456,9 +453,9 @@ unpopulate_folder_context_menu (EvolutionShellComponent *shell_component,
{
if (!type_is_mail (type))
return;
-
+
/* FIXME: handle other types */
-
+
/* the unmatched test is a bit of a hack but it works */
if ((strncmp(physical_uri, "vfolder:", 8) == 0
&& strstr(physical_uri, "#" CAMEL_UNMATCHED_NAME) == NULL)
@@ -496,7 +493,7 @@ destination_folder_handle_motion (EvolutionShellComponentDndDestinationFolder *f
url = camel_url_new (physical_uri, NULL);
noselect = url ? camel_url_get_param (url, "noselect") : NULL;
- if (noselect && !strcasecmp (noselect, "yes"))
+ if (noselect && !g_strcasecmp (noselect, "yes"))
/* uh, no way to say "illegal" */
*suggested_action_return = GNOME_Evolution_ShellComponentDnd_ACTION_DEFAULT;
else
@@ -526,7 +523,7 @@ message_rfc822_dnd (CamelFolder *dest, CamelStream *stream, CamelException *ex)
msg = camel_mime_message_new ();
if (camel_mime_part_construct_from_parser (CAMEL_MIME_PART (msg), mp) == -1) {
- camel_object_unref (msg);
+ camel_object_unref (CAMEL_OBJECT (msg));
handled = FALSE;
break;
}
@@ -534,7 +531,7 @@ message_rfc822_dnd (CamelFolder *dest, CamelStream *stream, CamelException *ex)
/* append the message to the folder... */
info = g_new0 (CamelMessageInfo, 1);
camel_folder_append_message (dest, msg, info, NULL, ex);
- camel_object_unref (msg);
+ camel_object_unref (CAMEL_OBJECT (msg));
if (camel_exception_is_set (ex)) {
handled = FALSE;
@@ -545,7 +542,7 @@ message_rfc822_dnd (CamelFolder *dest, CamelStream *stream, CamelException *ex)
camel_mime_parser_step (mp, 0, 0);
}
- camel_object_unref (mp);
+ camel_object_unref (CAMEL_OBJECT (mp));
return handled;
}
@@ -578,7 +575,7 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des
uri = camel_url_new (physical_uri, NULL);
noselect = uri ? camel_url_get_param (uri, "noselect") : NULL;
- if (noselect && !strcasecmp (noselect, "yes")) {
+ if (noselect && !g_strcasecmp (noselect, "yes")) {
camel_url_free (uri);
return FALSE;
}
@@ -630,8 +627,8 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des
stream = camel_stream_fs_new_with_fd (fd);
retval = message_rfc822_dnd (folder, stream, &ex);
- camel_object_unref (stream);
- camel_object_unref (folder);
+ camel_object_unref (CAMEL_OBJECT (stream));
+ camel_object_unref (CAMEL_OBJECT (folder));
if (action == GNOME_Evolution_ShellComponentDnd_ACTION_MOVE && retval)
unlink (url);
@@ -654,8 +651,8 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des
camel_stream_reset (stream);
retval = message_rfc822_dnd (folder, stream, &ex);
- camel_object_unref (stream);
- camel_object_unref (folder);
+ camel_object_unref (CAMEL_OBJECT (stream));
+ camel_object_unref (CAMEL_OBJECT (folder));
break;
case ACCEPTED_DND_TYPE_X_EVOLUTION_MESSAGE:
folder = mail_tools_x_evolution_message_parse (data->bytes._buffer,
@@ -669,7 +666,7 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des
action == GNOME_Evolution_ShellComponentDnd_ACTION_MOVE,
physical_uri, 0, NULL, NULL);
- camel_object_unref (folder);
+ camel_object_unref (CAMEL_OBJECT (folder));
break;
default:
break;
@@ -741,7 +738,7 @@ shell_client_destroy (GtkObject *object)
}
static void
-warning_response (GtkWidget *dialog, int button, gpointer user_data)
+warning_clicked (GtkWidget *dialog, gpointer user_data)
{
gtk_widget_destroy (dialog);
}
@@ -758,7 +755,8 @@ owner_set_cb (EvolutionShellComponent *shell_component,
/* FIXME: should we ref this? */
global_shell_client = shell_client;
- g_object_weak_ref(G_OBJECT(shell_client), (GWeakNotify)shell_client_destroy, NULL);
+ gtk_signal_connect (GTK_OBJECT (shell_client), "destroy",
+ shell_client_destroy, NULL);
evolution_dir = g_strdup (evolution_homedir);
mail_session_init ();
@@ -767,7 +765,7 @@ owner_set_cb (EvolutionShellComponent *shell_component,
storages_hash = g_hash_table_new (NULL, NULL);
- corba_shell = evolution_shell_client_corba_objref(shell_client);
+ corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client));
for (i = 0; i < sizeof (standard_folders) / sizeof (standard_folders[0]); i++)
*standard_folders[i].uri = g_strdup_printf ("file://%s/local/%s", evolution_dir, standard_folders[i].name);
@@ -793,8 +791,8 @@ owner_set_cb (EvolutionShellComponent *shell_component,
char *system = g_strdup (EVOLUTION_DATADIR "/evolution/vfoldertypes.xml");
search_context = rule_context_new ();
- g_object_set_data_full(G_OBJECT(search_context), "user", user, g_free);
- g_object_set_data_full(G_OBJECT(search_context), "system", system, g_free);
+ gtk_object_set_data_full (GTK_OBJECT (search_context), "user", user, g_free);
+ gtk_object_set_data_full (GTK_OBJECT (search_context), "system", system, g_free);
rule_context_add_part_set (search_context, "partset", filter_part_get_type (),
rule_context_add_part, rule_context_next_part);
@@ -809,11 +807,11 @@ owner_set_cb (EvolutionShellComponent *shell_component,
if (mail_config_is_corrupt ()) {
GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE,
- _("Some of your mail settings seem corrupt, "
+
+ dialog = gnome_warning_dialog (_("Some of your mail settings seem corrupt, "
"please check that everything is in order."));
- g_signal_connect(dialog, "response", G_CALLBACK(warning_response), NULL);
+ gtk_signal_connect (GTK_OBJECT (dialog), "clicked", warning_clicked, NULL);
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
gtk_widget_show (dialog);
}
@@ -913,7 +911,7 @@ idle_quit (gpointer user_data)
if (e_list_length (folder_browser_factory_get_control_list ()))
return TRUE;
- bonobo_main_quit ();
+ gtk_main_quit ();
return FALSE;
}
@@ -923,16 +921,16 @@ static void owner_unset_cb (EvolutionShellComponent *shell_component, gpointer u
/* Table for signal handler setup/cleanup */
static struct {
char *sig;
- GCallback func;
+ GtkSignalFunc func;
int hand;
} shell_component_handlers[] = {
- { "owner_set", G_CALLBACK(owner_set_cb), },
- { "owner_unset", G_CALLBACK(owner_unset_cb), },
- { "debug", G_CALLBACK(debug_cb), },
- { "interactive", G_CALLBACK(interactive_cb) },
- { "destroy", G_CALLBACK(owner_unset_cb), },
- { "handle_external_uri", G_CALLBACK(handle_external_uri_cb), },
- { "user_create_new_item", G_CALLBACK(user_create_new_item_cb) }
+ { "owner_set", owner_set_cb, },
+ { "owner_unset", owner_unset_cb, },
+ { "debug", debug_cb, },
+ { "interactive", interactive_cb },
+ { "destroy", owner_unset_cb, },
+ { "handle_external_uri", handle_external_uri_cb, },
+ { "user_create_new_item", user_create_new_item_cb }
};
static void
@@ -941,7 +939,7 @@ owner_unset_cb (EvolutionShellComponent *shell_component, gpointer user_data)
int i;
for (i=0;i<sizeof(shell_component_handlers)/sizeof(shell_component_handlers[0]);i++)
- g_signal_handler_disconnect((GtkObject *)shell_component, shell_component_handlers[i].hand);
+ gtk_signal_disconnect((GtkObject *)shell_component, shell_component_handlers[i].hand);
if (mail_config_get_empty_trash_on_exit ())
empty_trash (NULL, NULL, NULL);
@@ -952,7 +950,7 @@ owner_unset_cb (EvolutionShellComponent *shell_component, gpointer user_data)
global_shell_client = NULL;
mail_session_set_interactive (FALSE);
- g_object_unref((search_context));
+ gtk_object_unref (GTK_OBJECT (search_context));
search_context = NULL;
g_timeout_add(100, idle_quit, NULL);
@@ -975,10 +973,9 @@ send_receive_cb (EvolutionShellComponent *shell_component,
if (!account || !account->transport) {
GtkWidget *dialog;
- dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- _("You have not set a mail transport method"));
- gtk_dialog_run((GtkDialog *)dialog);
- gtk_widget_destroy(dialog);
+ dialog = gnome_error_dialog (_("You have not set a mail transport method"));
+ gnome_dialog_set_close (GNOME_DIALOG (dialog), TRUE);
+ gtk_widget_show (dialog);
return;
}
@@ -991,21 +988,25 @@ request_quit (EvolutionShellComponent *shell_component,
void *closure)
{
GtkWidget *dialog;
- int resp;
-
+
if (!e_msg_composer_request_close_all ())
return FALSE;
if (!outbox_folder || !camel_folder_get_message_count (outbox_folder))
return TRUE;
-
- dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_INFO, GTK_BUTTONS_YES_NO,
- _("You have unsent messages, do you wish to quit anyway?"));
- gtk_dialog_set_default_response((GtkDialog *)dialog, GTK_RESPONSE_NO);
- resp = gtk_dialog_run((GtkDialog *)dialog);
- gtk_widget_destroy(dialog);
-
- return resp == GTK_RESPONSE_YES;
+
+ dialog = gnome_message_box_new (_("You have unsent messages, do you wish to quit anyway?"),
+ GNOME_MESSAGE_BOX_QUESTION,
+ GNOME_STOCK_BUTTON_YES, /* Quit */
+ GNOME_STOCK_BUTTON_NO, /* Don't quit */
+ NULL);
+
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Warning: Unsent Messages"));
+ gnome_dialog_set_default (GNOME_DIALOG (dialog), 1);
+ if (gnome_dialog_run_and_close (GNOME_DIALOG (dialog)) == 0)
+ return TRUE;
+
+ return FALSE;
}
static BonoboObject *
@@ -1028,8 +1029,8 @@ create_component (void)
request_quit,
NULL);
- g_signal_connect((shell_component), "send_receive",
- G_CALLBACK (send_receive_cb), NULL);
+ gtk_signal_connect (GTK_OBJECT (shell_component), "send_receive",
+ GTK_SIGNAL_FUNC (send_receive_cb), NULL);
destination_interface = evolution_shell_component_dnd_destination_folder_new (destination_folder_handle_motion,
destination_folder_handle_drop,
@@ -1040,26 +1041,26 @@ create_component (void)
evolution_mail_config_wizard_init ();
- icon = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/new-message.xpm", NULL);
+ icon = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/new-message.xpm");
evolution_shell_component_add_user_creatable_item (shell_component, "message",
_("New Mail Message"), _("_Mail Message"),
_("Compose a new mail message"),
"mail", 'm',
icon);
if (icon != NULL)
- g_object_unref (icon);
+ gdk_pixbuf_unref (icon);
- icon = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/post-message-16.png", NULL);
+ icon = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/post-message-16.png");
evolution_shell_component_add_user_creatable_item (shell_component, "post",
_("New Message Post"), _("_Post Message"),
_("Post a new mail message"),
"mail/public", 'p',
icon);
if (icon != NULL)
- g_object_unref (icon);
+ gdk_pixbuf_unref (icon);
for (i=0;i<sizeof(shell_component_handlers)/sizeof(shell_component_handlers[0]);i++) {
- shell_component_handlers[i].hand = g_signal_connect((shell_component),
+ shell_component_handlers[i].hand = gtk_signal_connect(GTK_OBJECT(shell_component),
shell_component_handlers[i].sig,
shell_component_handlers[i].func, NULL);
}
@@ -1077,24 +1078,24 @@ component_factory_init (void)
int result;
shell_component = create_component ();
- result = bonobo_activation_active_server_register (COMPONENT_ID, bonobo_object_corba_objref (shell_component));
- if (result == Bonobo_ACTIVATION_REG_ERROR) {
- e_notice (NULL, GTK_MESSAGE_ERROR,
+ result = oaf_active_server_register (COMPONENT_ID, bonobo_object_corba_objref (shell_component));
+ if (result == OAF_REG_ERROR) {
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
_("Cannot initialize the Evolution mail component."));
exit (1);
- } else if (result == Bonobo_ACTIVATION_REG_ALREADY_ACTIVE) {
+ } else if (result == OAF_REG_ALREADY_ACTIVE) {
g_warning ("evolution-mail is already running");
exit (1);
}
if (evolution_mail_config_factory_init () == FALSE) {
- e_notice (NULL, GTK_MESSAGE_ERROR,
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
_("Cannot initialize Evolution's mail config component."));
exit (1);
}
if (evolution_folder_info_factory_init () == FALSE) {
- e_notice (NULL, GTK_MESSAGE_ERROR,
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
_("Cannot initialize Evolution's folder info component."));
exit (1);
}
@@ -1357,10 +1358,10 @@ add_storage (const char *name, const char *uri, CamelService *store,
EvolutionStorageResult res;
storage = evolution_storage_new (name, FALSE);
- g_signal_connect(storage, "open_folder", G_CALLBACK(storage_connect), store);
- g_signal_connect(storage, "create_folder", G_CALLBACK(storage_create_folder), store);
- g_signal_connect(storage, "remove_folder", G_CALLBACK(storage_remove_folder), store);
- g_signal_connect(storage, "xfer_folder", G_CALLBACK(storage_xfer_folder), store);
+ gtk_signal_connect (GTK_OBJECT (storage), "open_folder", storage_connect, store);
+ gtk_signal_connect (GTK_OBJECT (storage), "create_folder", storage_create_folder, store);
+ gtk_signal_connect (GTK_OBJECT (storage), "remove_folder", storage_remove_folder, store);
+ gtk_signal_connect ((GtkObject *)storage, "xfer_folder", storage_xfer_folder, store);
res = evolution_storage_register_on_shell (storage, corba_shell);
@@ -1393,7 +1394,7 @@ mail_add_storage (CamelStore *store, const char *name, const char *uri)
g_return_if_fail (CAMEL_IS_STORE (store));
shell_client = evolution_shell_component_get_owner (shell_component);
- shell = evolution_shell_client_corba_objref (shell_client);
+ shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client));
camel_exception_init (&ex);
@@ -1552,7 +1553,7 @@ mail_remove_storage (CamelStore *store)
mail_note_store_remove(store);
shell_client = evolution_shell_component_get_owner (shell_component);
- corba_shell = evolution_shell_client_corba_objref(shell_client);
+ corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client));
evolution_storage_deregister_on_shell (storage, corba_shell);
diff --git a/mail/mail-accounts.c b/mail/mail-accounts.c
index 43b957ff05..1ad5c066fa 100644
--- a/mail/mail-accounts.c
+++ b/mail/mail-accounts.c
@@ -27,9 +27,12 @@
#include "mail-accounts.h"
+#include <libgnomeui/gnome-stock.h>
+#include <libgnomeui/gnome-messagebox.h>
#include <gal/e-table/e-table-memory-store.h>
#include <gal/e-table/e-table-scrolled.h>
#include <gal/e-table/e-cell-toggle.h>
+#include <gal/util/e-unicode-i18n.h>
#include <gal/widgets/e-unicode.h>
#include <camel/camel-url.h>
@@ -47,7 +50,7 @@
static void mail_accounts_tab_class_init (MailAccountsTabClass *class);
static void mail_accounts_tab_init (MailAccountsTab *prefs);
-static void mail_accounts_tab_finalise (GObject *obj);
+static void mail_accounts_tab_finalise (GtkObject *obj);
static void mail_accounts_load (MailAccountsTab *tab);
@@ -60,23 +63,23 @@ static GtkVBoxClass *parent_class = NULL;
#define PREFS_WINDOW(prefs) GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (prefs), GTK_TYPE_WINDOW))
-GType
+GtkType
mail_accounts_tab_get_type (void)
{
- static GType type = 0;
+ static GtkType type = 0;
if (!type) {
- GTypeInfo type_info = {
- sizeof (MailAccountsTabClass),
- NULL, NULL,
- (GClassInitFunc) mail_accounts_tab_class_init,
- NULL, NULL,
+ GtkTypeInfo type_info = {
+ "MailAccountsTab",
sizeof (MailAccountsTab),
- 0,
- (GInstanceInitFunc) mail_accounts_tab_init,
+ sizeof (MailAccountsTabClass),
+ (GtkClassInitFunc) mail_accounts_tab_class_init,
+ (GtkObjectInitFunc) mail_accounts_tab_init,
+ (GtkArgSetFunc) NULL,
+ (GtkArgGetFunc) NULL
};
- type = g_type_register_static (gtk_vbox_get_type (), "MailAccountsTab", &type_info, 0);
+ type = gtk_type_unique (gtk_vbox_get_type (), &type_info);
}
return type;
@@ -85,10 +88,10 @@ mail_accounts_tab_get_type (void)
static void
mail_accounts_tab_class_init (MailAccountsTabClass *klass)
{
- GObjectClass *object_class;
+ GtkObjectClass *object_class;
- object_class = (GObjectClass *) klass;
- parent_class = g_type_class_ref(gtk_vbox_get_type ());
+ object_class = (GtkObjectClass *) klass;
+ parent_class = gtk_type_class (gtk_vbox_get_type ());
object_class->finalize = mail_accounts_tab_finalise;
/* override methods */
@@ -109,30 +112,29 @@ mail_accounts_tab_init (MailAccountsTab *prefs)
}
static void
-mail_accounts_tab_finalise (GObject *obj)
+mail_accounts_tab_finalise (GtkObject *obj)
{
MailAccountsTab *prefs = (MailAccountsTab *) obj;
- g_object_unref((prefs->gui));
+ gtk_object_unref (GTK_OBJECT (prefs->gui));
gdk_pixmap_unref (prefs->mark_pixmap);
- g_object_unref (prefs->mark_bitmap);
+ gdk_bitmap_unref (prefs->mark_bitmap);
- ((GObjectClass *)(parent_class))->finalize (obj);
+ ((GtkObjectClass *)(parent_class))->finalize (obj);
}
static void
-account_add_finished (MailAccountsTab *prefs, GObject *deadbeef)
+account_add_finished (GtkWidget *widget, gpointer user_data)
{
/* Either Cancel or Finished was clicked in the druid so reload the accounts */
+ MailAccountsTab *prefs = user_data;
+
prefs->druid = NULL;
-#warning "GTK_OBJECT_DESTROYED"
-#if 0
if (!GTK_OBJECT_DESTROYED (prefs))
-#endif
mail_accounts_load (prefs);
- g_object_unref (prefs);
+ gtk_object_unref ((GtkObject *) prefs);
}
static void
@@ -142,28 +144,27 @@ account_add_clicked (GtkButton *button, gpointer user_data)
if (prefs->druid == NULL) {
prefs->druid = (GtkWidget *) mail_config_druid_new (prefs->shell);
- g_object_weak_ref ((GObject *) prefs->druid,
- (GWeakNotify) account_add_finished, prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->druid), "destroy",
+ GTK_SIGNAL_FUNC (account_add_finished), prefs);
gtk_widget_show (prefs->druid);
- g_object_ref (prefs);
+ gtk_object_ref ((GtkObject *) prefs);
} else {
gdk_window_raise (prefs->druid->window);
}
}
static void
-account_edit_finished (MailAccountsTab *prefs, GObject *deadbeef)
+account_edit_finished (GtkWidget *widget, gpointer user_data)
{
+ MailAccountsTab *prefs = user_data;
+
prefs->editor = NULL;
-#warning "GTK_OBJECT_DESTROYED"
-#if 0
if (!GTK_OBJECT_DESTROYED (prefs))
-#endif
mail_accounts_load (prefs);
- g_object_unref (prefs);
+ gtk_object_unref ((GtkObject *) prefs);
}
static void
@@ -190,9 +191,11 @@ account_edit_clicked (GtkButton *button, gpointer user_data)
account = gtk_clist_get_row_data (prefs->table, row);
#endif
prefs->editor = (GtkWidget *) mail_account_editor_new (account, GTK_WINDOW (window), prefs);
- g_object_weak_ref ((GObject *) prefs->editor, (GWeakNotify) account_edit_finished, prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->editor), "destroy",
+ GTK_SIGNAL_FUNC (account_edit_finished),
+ prefs);
gtk_widget_show (prefs->editor);
- g_object_ref (prefs);
+ gtk_object_ref ((GtkObject *) prefs);
}
} else {
gdk_window_raise (prefs->editor->window);
@@ -204,8 +207,7 @@ account_delete_clicked (GtkButton *button, gpointer user_data)
{
MailAccountsTab *prefs = user_data;
const MailConfigAccount *account;
- GtkDialog *confirm;
- GtkButton *tmp;
+ GnomeDialog *confirm;
const GSList *list;
int row, ans;
@@ -218,22 +220,19 @@ account_delete_clicked (GtkButton *button, gpointer user_data)
/* make sure we have a valid account selected and that we aren't editing anything... */
if (row < 0 || prefs->editor != NULL)
return;
-
- confirm = (GtkDialog *)gtk_message_dialog_new(PREFS_WINDOW (prefs),
- GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
- _("Are you sure you want to delete this account?"));
- tmp = (GtkButton *)gtk_button_new_from_stock(GTK_STOCK_YES);
- gtk_button_set_label(tmp, _("Delete"));
- gtk_dialog_add_action_widget(confirm, (GtkWidget *)tmp, GTK_RESPONSE_YES);
- tmp = (GtkButton *)gtk_button_new_from_stock(GTK_STOCK_NO);
- gtk_button_set_label(tmp, _("Don't delete"));
- gtk_dialog_add_action_widget(confirm, (GtkWidget *)tmp, GTK_RESPONSE_NO);
- ans = gtk_dialog_run(confirm);
- gtk_widget_destroy((GtkWidget *)confirm);
- g_object_unref(confirm);
-
- if (ans == GTK_RESPONSE_YES) {
+
+ confirm = GNOME_DIALOG (gnome_message_box_new (_("Are you sure you want to delete this account?"),
+ GNOME_MESSAGE_BOX_QUESTION,
+ NULL));
+ gnome_dialog_append_button_with_pixmap (confirm, _("Delete"), GNOME_STOCK_BUTTON_YES);
+ gnome_dialog_append_button_with_pixmap (confirm, _("Don't delete"), GNOME_STOCK_BUTTON_NO);
+ gtk_window_set_policy (GTK_WINDOW (confirm), TRUE, TRUE, TRUE);
+ gtk_window_set_modal (GTK_WINDOW (confirm), TRUE);
+ gtk_window_set_title (GTK_WINDOW (confirm), _("Really delete account?"));
+ gnome_dialog_set_parent (confirm, PREFS_WINDOW (prefs));
+ ans = gnome_dialog_run_and_close (confirm);
+
+ if (ans == 0) {
int select, len;
#if USE_ETABLE
@@ -457,18 +456,20 @@ mail_accounts_load (MailAccountsTab *prefs)
#else
{
const MailConfigAccount *default_account;
- char *text[3];
+ char *str, *text[3];
default_account = mail_config_get_default_account ();
+ str = e_utf8_to_gtk_string (GTK_WIDGET (prefs->table), account->name);
+
text[0] = NULL;
- text[1] = g_strdup_printf ("%s%s%s", account->name,
- account == default_account ? " " : "",
+ text[1] = g_strdup_printf ("%s%s%s", str, account == default_account ? " " : "",
account == default_account ? _("[Default]") : "");
text[2] = url && url->protocol ? url->protocol : (char *) _("None");
gtk_clist_insert (prefs->table, row, text);
+ g_free (str);
g_free (text[1]);
if (account->source->enabled)
@@ -543,7 +544,7 @@ mail_accounts_etable_new (char *widget_name, char *string1, char *string2, int i
gtk_container_add (GTK_CONTAINER (scrolled), table);
- g_object_set_data(G_OBJECT(scrolled), "table", table);
+ gtk_object_set_data (GTK_OBJECT (scrolled), "table", table);
gtk_widget_show (scrolled);
gtk_widget_show (table);
@@ -558,7 +559,7 @@ mail_accounts_tab_construct (MailAccountsTab *prefs)
GtkWidget *toplevel, *widget;
GladeXML *gui;
- gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "accounts_tab", NULL);
+ gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "accounts_tab");
prefs->gui = gui;
/* get our toplevel widget */
@@ -576,18 +577,19 @@ mail_accounts_tab_construct (MailAccountsTab *prefs)
prefs->table = e_table_scrolled_get_table (E_TABLE_SCROLLED (widget));
prefs->model = prefs->table->model;
- g_signal_connect((prefs->table), "cursor_change",
+ gtk_signal_connect (GTK_OBJECT (prefs->table), "cursor_change",
account_cursor_change, prefs);
- g_signal_connect((prefs->table), "double_click",
+ gtk_signal_connect (GTK_OBJECT (prefs->table), "double_click",
account_double_click, prefs);
mail_accounts_load (prefs);
#else
- prefs->table = GTK_CLIST (g_object_get_data(G_OBJECT(widget), "table"));
+ prefs->table = GTK_CLIST (gtk_object_get_data (GTK_OBJECT (widget), "table"));
gtk_clist_set_column_justification (prefs->table, 0, GTK_JUSTIFY_RIGHT);
- g_signal_connect(prefs->table, "select-row", G_CALLBACK(account_cursor_change), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->table), "select-row",
+ account_cursor_change, prefs);
mail_accounts_load (prefs);
@@ -601,19 +603,24 @@ mail_accounts_tab_construct (MailAccountsTab *prefs)
#endif
prefs->mail_add = GTK_BUTTON (glade_xml_get_widget (gui, "cmdAccountAdd"));
- g_signal_connect(prefs->mail_add, "clicked", G_CALLBACK(account_add_clicked), prefs);
-
+ gtk_signal_connect (GTK_OBJECT (prefs->mail_add), "clicked",
+ account_add_clicked, prefs);
+
prefs->mail_edit = GTK_BUTTON (glade_xml_get_widget (gui, "cmdAccountEdit"));
- g_signal_connect(prefs->mail_edit, "clicked", G_CALLBACK(account_edit_clicked), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->mail_edit), "clicked",
+ account_edit_clicked, prefs);
prefs->mail_delete = GTK_BUTTON (glade_xml_get_widget (gui, "cmdAccountDelete"));
- g_signal_connect(prefs->mail_delete, "clicked", G_CALLBACK(account_delete_clicked), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->mail_delete), "clicked",
+ account_delete_clicked, prefs);
prefs->mail_default = GTK_BUTTON (glade_xml_get_widget (gui, "cmdAccountDefault"));
- g_signal_connect(prefs->mail_default, "clicked", G_CALLBACK(account_default_clicked), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->mail_default), "clicked",
+ account_default_clicked, prefs);
prefs->mail_able = GTK_BUTTON (glade_xml_get_widget (gui, "cmdAccountAble"));
- g_signal_connect(prefs->mail_able, "clicked", G_CALLBACK(account_able_clicked), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->mail_able), "clicked",
+ account_able_clicked, prefs);
}
@@ -622,7 +629,7 @@ mail_accounts_tab_new (GNOME_Evolution_Shell shell)
{
MailAccountsTab *new;
- new = (MailAccountsTab *) g_object_new (mail_accounts_tab_get_type (), NULL);
+ new = (MailAccountsTab *) gtk_type_new (mail_accounts_tab_get_type ());
mail_accounts_tab_construct (new);
new->shell = shell;
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index 4d655f6950..367b10d63d 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -29,22 +29,21 @@
#include <config.h>
#endif
-#include <time.h>
#include <errno.h>
-#include <gtkhtml/gtkhtml.h>
-
-#include <gtk/gtkmessagedialog.h>
-
+#include <time.h>
+#include <libgnome/gnome-paper.h>
+#include <libgnomeui/gnome-stock.h>
+#include <libgnome/gnome-paper.h>
#include <libgnomeprint/gnome-print-master.h>
-#include <libgnomeprintui/gnome-print-dialog.h>
-#include <libgnomeprintui/gnome-print-master-preview.h>
-
+#include <libgnomeprint/gnome-print-master-preview.h>
#include <bonobo/bonobo-widget.h>
#include <bonobo/bonobo-socket.h>
#include <gal/e-table/e-table.h>
#include <gal/widgets/e-gui-utils.h>
+#include <gal/widgets/e-unicode.h>
#include <e-util/e-dialog-utils.h>
#include <filter/filter-editor.h>
+#include <gtkhtml/gtkhtml.h>
#include "mail.h"
#include "message-browser.h"
@@ -64,6 +63,7 @@
#include "subscribe-dialog.h"
#include "message-tag-editor.h"
#include "message-tag-followup.h"
+#include "e-messagebox.h"
#include "Evolution.h"
#include "evolution-storage.h"
@@ -75,40 +75,6 @@
#define FB_WINDOW(fb) GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (fb), GTK_TYPE_WINDOW))
-/* default is default gtk response
- if again is != NULL, a checkbox "dont show this again" will appear, and the result stored in *again
-*/
-static gboolean
-e_question(GtkWindow *parent, int def, gboolean *again, const char *fmt, ...)
-{
- GtkWidget *mbox, *check = NULL;
- va_list ap;
- int button;
- char *str;
-
- va_start(ap, fmt);
- str = g_strdup_vprintf(fmt, ap);
- va_end(ap);
- mbox = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
- "%s", str);
- g_free(str);
- gtk_dialog_set_default_response ((GtkDialog *)mbox, def);
- if (again) {
- check = gtk_check_button_new_with_label (_("Don't show this message again."));
- gtk_box_pack_start((GtkBox *)((GtkDialog *)mbox)->vbox, check, TRUE, TRUE, 10);
- gtk_widget_show(check);
- }
-
- button = gtk_dialog_run((GtkDialog *)mbox);
- if (again)
- *again = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check));
- gtk_widget_destroy(mbox);
-
- return button == GTK_RESPONSE_YES;
-}
-
-
struct _composer_callback_data {
unsigned int ref_count;
@@ -166,14 +132,14 @@ ccd_unref (struct _composer_callback_data *ccd)
static void
-composer_destroy_cb (gpointer user_data, GObject *deadbeef)
+composer_destroy_cb (GtkWidget *composer, gpointer user_data)
{
ccd_unref (user_data);
}
static void
-druid_destroy_cb (gpointer user_data, GObject *deadbeef)
+druid_destroyed (void)
{
gtk_main_quit ();
}
@@ -182,17 +148,37 @@ static gboolean
configure_mail (FolderBrowser *fb)
{
MailConfigDruid *druid;
-
- if (e_question(FB_WINDOW(fb), GTK_RESPONSE_YES, NULL,
- _("You have not configured the mail client.\n"
- "You need to do this before you can send,\n"
- "receive or compose mail.\n"
- "Would you like to configure it now?"))) {
+ GtkWidget *dialog;
+
+ dialog = gnome_message_box_new (
+ _("You have not configured the mail client.\n"
+ "You need to do this before you can send,\n"
+ "receive or compose mail.\n"
+ "Would you like to configure it now?"),
+ GNOME_MESSAGE_BOX_QUESTION,
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO, NULL);
+
+ /*
+ * Focus YES
+ */
+ gnome_dialog_set_default (GNOME_DIALOG (dialog), 0);
+ gtk_widget_grab_focus (GTK_WIDGET (GNOME_DIALOG (dialog)->buttons->data));
+
+ e_gnome_dialog_set_parent (GNOME_DIALOG (dialog), FB_WINDOW (fb));
+
+ switch (gnome_dialog_run_and_close (GNOME_DIALOG (dialog))) {
+ case 0:
druid = mail_config_druid_new (fb->shell);
- g_object_weak_ref ((GObject *) druid, (GWeakNotify) druid_destroy_cb, NULL);
- gtk_widget_show ((GtkWidget *)druid);
- gtk_grab_add ((GtkWidget *)druid);
+ gtk_signal_connect (GTK_OBJECT (druid), "destroy",
+ GTK_SIGNAL_FUNC (druid_destroyed), NULL);
+ gtk_widget_show (GTK_WIDGET (druid));
+ gtk_grab_add (GTK_WIDGET (druid));
gtk_main ();
+ break;
+ case 1:
+ default:
+ break;
}
return mail_config_is_configured ();
@@ -202,7 +188,6 @@ static gboolean
check_send_configuration (FolderBrowser *fb)
{
const MailConfigAccount *account;
- GtkWidget *dialog;
/* Check general */
if (!mail_config_is_configured () && !configure_mail (fb))
@@ -213,31 +198,58 @@ check_send_configuration (FolderBrowser *fb)
/* Check for an identity */
if (!account) {
- e_notice(FB_WINDOW(fb), GTK_MESSAGE_WARNING,
- _("You need to configure an identity\nbefore you can compose mail."));
+ GtkWidget *message;
+
+ message = e_gnome_warning_dialog_parented (_("You need to configure an identity\n"
+ "before you can compose mail."),
+ FB_WINDOW (fb));
+
+ gnome_dialog_set_close (GNOME_DIALOG (message), TRUE);
+ gtk_widget_show (message);
+
return FALSE;
}
/* Check for a transport */
if (!account->transport || !account->transport->url) {
- e_notice(FB_WINDOW(fb), GTK_MESSAGE_WARNING,
- _("You need to configure a mail transport\n"
- "before you can compose mail."));
+ GtkWidget *message;
+
+ message = e_gnome_warning_dialog_parented (_("You need to configure a mail transport\n"
+ "before you can compose mail."),
+ GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (fb),
+ GTK_TYPE_WINDOW)));
+
+ gnome_dialog_set_close (GNOME_DIALOG (message), TRUE);
+ gtk_widget_show (message);
+
return FALSE;
}
return TRUE;
}
+static void
+msgbox_destroyed (GtkWidget *widget, gpointer data)
+{
+ gboolean *show_again = data;
+ GtkWidget *checkbox;
+
+ checkbox = e_message_box_get_checkbox (E_MESSAGE_BOX (widget));
+ *show_again = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox));
+}
+
static gboolean
ask_confirm_for_unwanted_html_mail (EMsgComposer *composer, EDestination **recipients)
{
- gboolean show_again, res;
+ gboolean show_again = TRUE;
GString *str;
- int i;
-
- if (!mail_config_get_confirm_unwanted_html ())
+ GtkWidget *mbox;
+ int i, button;
+
+ if (!mail_config_get_confirm_unwanted_html ()) {
+ g_message ("doesn't want to see confirm html messages!");
return TRUE;
+ }
/* FIXME: this wording sucks */
str = g_string_new (_("You are sending an HTML-formatted message. Please make sure that\n"
@@ -245,42 +257,91 @@ ask_confirm_for_unwanted_html_mail (EMsgComposer *composer, EDestination **recip
for (i = 0; recipients[i] != NULL; ++i) {
if (!e_destination_get_html_mail_pref (recipients[i])) {
const char *name;
+ char *buf;
name = e_destination_get_textrep (recipients[i]);
+ buf = e_utf8_to_locale_string (name);
- g_string_sprintfa (str, " %s\n", name);
+ g_string_sprintfa (str, " %s\n", buf);
+ g_free (buf);
}
}
g_string_append (str, _("Send anyway?"));
- res = e_question((GtkWindow *)composer, GTK_RESPONSE_YES, &show_again, "%s", str->str);
- g_string_free(str, TRUE);
- mail_config_set_confirm_unwanted_html (show_again);
-
- return res;
+
+ mbox = e_message_box_new (str->str,
+ E_MESSAGE_BOX_QUESTION,
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ g_string_free (str, TRUE);
+
+ gtk_signal_connect (GTK_OBJECT (mbox), "destroy",
+ msgbox_destroyed, &show_again);
+
+ button = gnome_dialog_run_and_close (GNOME_DIALOG (mbox));
+
+ if (!show_again) {
+ mail_config_set_confirm_unwanted_html (show_again);
+ g_message ("don't show HTML warning again");
+ }
+
+ if (button == 0)
+ return TRUE;
+ else
+ return FALSE;
}
static gboolean
ask_confirm_for_empty_subject (EMsgComposer *composer)
{
- gboolean show_again, res;
- GtkWidget *mbox, *check;
+ /* FIXME: EMessageBox should really handle this stuff
+ automagically. What Miguel thinks would be nice is to pass
+ in a unique id which could be used as a key in the config
+ file and the value would be an int. -1 for always show or
+ the button pressed otherwise. This probably means we'd have
+ to write e_messagebox_run () */
+ gboolean show_again = TRUE;
+ GtkWidget *mbox;
+ int button;
if (!mail_config_get_prompt_empty_subject ())
return TRUE;
-
- res = e_question((GtkWindow *)composer, GTK_RESPONSE_YES, &show_again,
- _("This message has no subject.\nReally send?"));
+
+ mbox = e_message_box_new (_("This message has no subject.\nReally send?"),
+ E_MESSAGE_BOX_QUESTION,
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ gtk_signal_connect (GTK_OBJECT (mbox), "destroy",
+ msgbox_destroyed, &show_again);
+
+ button = gnome_dialog_run_and_close (GNOME_DIALOG (mbox));
+
mail_config_set_prompt_empty_subject (show_again);
- return res;
+ if (button == 0)
+ return TRUE;
+ else
+ return FALSE;
}
static gboolean
ask_confirm_for_only_bcc (EMsgComposer *composer, gboolean hidden_list_case)
{
- gboolean show_again, res;
+ /* FIXME: EMessageBox should really handle this stuff
+ automagically. What Miguel thinks would be nice is to pass
+ in a message-id which could be used as a key in the config
+ file and the value would be an int. -1 for always show or
+ the button pressed otherwise. This probably means we'd have
+ to write e_messagebox_run () */
+ gboolean show_again = TRUE;
+ GtkWidget *mbox;
+ int button;
const char *first_text;
+ char *message_text;
if (!mail_config_get_prompt_only_bcc ())
return TRUE;
@@ -298,15 +359,30 @@ ask_confirm_for_only_bcc (EMsgComposer *composer, gboolean hidden_list_case)
} else {
first_text = _("This message contains only Bcc recipients.");
}
-
- res = e_question((GtkWindow *)composer, GTK_RESPONSE_YES, &show_again,
- "%s\n%s", first_text,
- _("It is possible that the mail server may reveal the recipients "
- "by adding an Apparently-To header.\nSend anyway?"));
+
+ message_text = g_strdup_printf ("%s\n%s", first_text,
+ _("It is possible that the mail server may reveal the recipients "
+ "by adding an Apparently-To header.\nSend anyway?"));
+
+ mbox = e_message_box_new (message_text,
+ E_MESSAGE_BOX_QUESTION,
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ gtk_signal_connect (GTK_OBJECT (mbox), "destroy",
+ msgbox_destroyed, &show_again);
+
+ button = gnome_dialog_run_and_close (GNOME_DIALOG (mbox));
mail_config_set_prompt_only_bcc (show_again);
- return res;
+ g_free (message_text);
+
+ if (button == 0)
+ return TRUE;
+ else
+ return FALSE;
}
@@ -357,20 +433,23 @@ composer_send_queued_cb (CamelFolder *folder, CamelMimeMessage *msg, CamelMessag
ccd = ccd_new ();
/* disconnect the previous signal handlers */
- g_signal_handlers_disconnect_matched(send->composer, G_SIGNAL_MATCH_FUNC, 0,
- 0, NULL, composer_send_cb, NULL);
- g_signal_handlers_disconnect_matched(send->composer, G_SIGNAL_MATCH_FUNC, 0,
- 0, NULL, composer_save_draft_cb, NULL);
+ gtk_signal_disconnect_by_func (GTK_OBJECT (send->composer),
+ GTK_SIGNAL_FUNC (composer_send_cb), NULL);
+ gtk_signal_disconnect_by_func (GTK_OBJECT (send->composer),
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), NULL);
/* reconnect to the signals using a non-NULL ccd for the callback data */
- g_signal_connect (send->composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (send->composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) send->composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (send->composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (send->composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (send->composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
}
e_msg_composer_set_enable_autosave (send->composer, TRUE);
gtk_widget_show (GTK_WIDGET (send->composer));
+ gtk_object_unref (GTK_OBJECT (send->composer));
}
camel_message_info_free (info);
@@ -429,8 +508,15 @@ composer_get_message (EMsgComposer *composer, gboolean post, gboolean save_html_
/* I'm sensing a lack of love, er, I mean recipients. */
if (num == 0 && !post) {
- e_notice((GtkWindow *)composer, GTK_MESSAGE_WARNING,
- _("You must specify recipients in order to send this message."));
+ GtkWidget *message_box;
+
+ message_box = gnome_message_box_new (_("You must specify recipients in order to "
+ "send this message."),
+ GNOME_MESSAGE_BOX_WARNING,
+ GNOME_STOCK_BUTTON_OK,
+ NULL);
+
+ gnome_dialog_run_and_close (GNOME_DIALOG (message_box));
goto finished;
}
@@ -507,7 +593,7 @@ got_post_folder (char *uri, CamelFolder *folder, void *data)
*fp = folder;
if (folder)
- camel_object_ref (folder);
+ camel_object_ref (CAMEL_OBJECT (folder));
}
void
@@ -558,7 +644,7 @@ composer_send_cb (EMsgComposer *composer, gpointer user_data)
ccd_ref (send->ccd);
send->send = !post;
send->composer = composer;
- g_object_ref (composer);
+ gtk_object_ref (GTK_OBJECT (composer));
gtk_widget_hide (GTK_WIDGET (composer));
e_msg_composer_set_enable_autosave (composer, FALSE);
@@ -593,15 +679,17 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i
/* disconnect the previous signal handlers */
gtk_signal_disconnect_by_func (GTK_OBJECT (sdi->composer),
- G_CALLBACK (composer_send_cb), NULL);
+ GTK_SIGNAL_FUNC (composer_send_cb), NULL);
gtk_signal_disconnect_by_func (GTK_OBJECT (sdi->composer),
- G_CALLBACK (composer_save_draft_cb), NULL);
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), NULL);
/* reconnect to the signals using a non-NULL ccd for the callback data */
- g_signal_connect (sdi->composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (sdi->composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) sdi->composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (sdi->composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (sdi->composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (sdi->composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
}
if (ccd->drafts_folder) {
@@ -634,7 +722,7 @@ save_draft_done (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *i
gtk_widget_destroy (GTK_WIDGET (sdi->composer));
done:
- g_object_unref (sdi->composer);
+ gtk_object_unref (GTK_OBJECT (sdi->composer));
if (sdi->ccd)
ccd_unref (sdi->ccd);
g_free (info);
@@ -649,7 +737,7 @@ use_default_drafts_cb (int reply, gpointer data)
if (reply == 0) {
*folder = drafts_folder;
- camel_object_ref (drafts_folder);
+ camel_object_ref (CAMEL_OBJECT (*folder));
}
}
@@ -660,7 +748,7 @@ save_draft_folder (char *uri, CamelFolder *folder, gpointer data)
if (folder) {
*save = folder;
- camel_object_ref (folder);
+ camel_object_ref (CAMEL_OBJECT (folder));
}
}
@@ -684,18 +772,18 @@ composer_save_draft_cb (EMsgComposer *composer, int quit, gpointer user_data)
mail_msg_wait (id);
if (!folder) {
- gboolean res;
- if (!e_question((GtkWindow *)composer, GTK_RESPONSE_YES, NULL,
- _("Unable to open the drafts folder for this account.\n"
- "Would you like to use the default drafts folder?")))
- return;
+ GtkWidget *dialog;
- folder = drafts_folder;
- camel_object_ref (drafts_folder);
+ dialog = gnome_ok_cancel_dialog_parented (_("Unable to open the drafts folder for this account.\n"
+ "Would you like to use the default drafts folder?"),
+ use_default_drafts_cb, &folder, GTK_WINDOW (composer));
+ gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
+ if (!folder)
+ return;
}
} else {
folder = drafts_folder;
- camel_object_ref (folder);
+ camel_object_ref (CAMEL_OBJECT (folder));
}
msg = e_msg_composer_get_message_draft (composer);
@@ -705,15 +793,15 @@ composer_save_draft_cb (EMsgComposer *composer, int quit, gpointer user_data)
sdi = g_malloc (sizeof (struct _save_draft_info));
sdi->composer = composer;
- g_object_ref (composer);
+ gtk_object_ref (GTK_OBJECT (composer));
sdi->ccd = user_data;
if (sdi->ccd)
ccd_ref (sdi->ccd);
sdi->quit = quit;
mail_append_mail (folder, msg, info, save_draft_done, sdi);
- camel_object_unref (folder);
- camel_object_unref (msg);
+ camel_object_unref (CAMEL_OBJECT (folder));
+ camel_object_unref (CAMEL_OBJECT (msg));
}
static GtkWidget *
@@ -768,10 +856,12 @@ compose_msg (GtkWidget *widget, gpointer user_data)
ccd = ccd_new ();
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
gtk_widget_show (composer);
}
@@ -795,10 +885,12 @@ send_to_url (const char *url)
ccd = ccd_new ();
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
gtk_widget_show (composer);
}
@@ -941,7 +1033,7 @@ mail_generate_reply (CamelFolder *folder, CamelMimeMessage *message, const char
const CamelInternetAddress *reply_to, *sender, *to_addrs, *cc_addrs;
const char *name = NULL, *address = NULL, *source = NULL;
const char *message_id, *references, *mlist = NULL;
- char *text = NULL, *subject, format[256];
+ char *text = NULL, *subject, date_str[100], *format;
const MailConfigAccount *def, *account, *me = NULL;
const GSList *l, *accounts = NULL;
GHashTable *account_hash = NULL;
@@ -1030,7 +1122,7 @@ mail_generate_reply (CamelFolder *folder, CamelMimeMessage *message, const char
max = camel_address_length (CAMEL_ADDRESS (to_addrs));
for (i = 0; i < max; i++) {
camel_internet_address_get (to_addrs, i, &name, &address);
- if (!strcasecmp (address, mlist))
+ if (!g_strcasecmp (address, mlist))
break;
}
@@ -1038,7 +1130,7 @@ mail_generate_reply (CamelFolder *folder, CamelMimeMessage *message, const char
max = camel_address_length (CAMEL_ADDRESS (cc_addrs));
for (i = 0; i < max; i++) {
camel_internet_address_get (cc_addrs, i, &name, &address);
- if (!strcasecmp (address, mlist))
+ if (!g_strcasecmp (address, mlist))
break;
}
}
@@ -1129,7 +1221,7 @@ mail_generate_reply (CamelFolder *folder, CamelMimeMessage *message, const char
/* attach the original message as an attachment */
part = mail_tool_make_message_attachment (message);
e_msg_composer_attach (composer, part);
- camel_object_unref (part);
+ camel_object_unref (CAMEL_OBJECT (part));
break;
case MAIL_CONFIG_REPLY_QUOTED:
default:
@@ -1142,9 +1234,12 @@ mail_generate_reply (CamelFolder *folder, CamelMimeMessage *message, const char
}
date = camel_mime_message_get_date (message, NULL);
- strftime (format, sizeof (format), _("On %a, %Y-%m-%d at %H:%M, %%s wrote:"), localtime (&date));
+ strftime (date_str, sizeof (date_str), _("On %a, %Y-%m-%d at %H:%M, %%s wrote:"),
+ localtime (&date));
+ format = e_utf8_from_locale_string (date_str);
text = mail_tool_quote_message (message, format, name && *name ? name : address);
mail_ignore (composer, name, address);
+ g_free (format);
if (text) {
e_msg_composer_set_body_text (composer, text);
g_free (text);
@@ -1157,7 +1252,7 @@ mail_generate_reply (CamelFolder *folder, CamelMimeMessage *message, const char
if (!subject)
subject = g_strdup ("");
else {
- if (!strncasecmp (subject, "Re: ", 4))
+ if (!g_strncasecmp (subject, "Re: ", 4))
subject = g_strndup (subject, MAX_SUBJECT_LEN);
else {
if (strlen (subject) < MAX_SUBJECT_LEN) {
@@ -1252,10 +1347,12 @@ mail_reply (CamelFolder *folder, CamelMimeMessage *msg, const char *uid, int mod
ccd->flags |= CAMEL_MESSAGE_ANSWERED_ALL;
ccd->set = ccd->flags;
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
gtk_widget_show (GTK_WIDGET (composer));
e_msg_composer_unset_changed (composer);
@@ -1335,10 +1432,12 @@ forward_get_composer (CamelMimeMessage *message, const char *subject)
if (composer) {
ccd = ccd_new ();
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
e_msg_composer_set_headers (composer, account->name, NULL, NULL, NULL, subject);
} else {
@@ -1472,10 +1571,12 @@ post_to_url (const char *url)
ccd = ccd_new ();
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
gtk_widget_show (composer);
}
@@ -1543,10 +1644,12 @@ redirect_get_composer (CamelMimeMessage *message)
if (composer) {
ccd = ccd_new ();
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
} else {
g_warning ("Could not create composer");
}
@@ -1612,7 +1715,7 @@ transfer_msg_done (gboolean ok, void *data)
0, 0, FALSE);
}
- g_object_unref (fb);
+ gtk_object_unref (GTK_OBJECT (fb));
}
static void
@@ -1652,7 +1755,7 @@ transfer_msg (FolderBrowser *fb, gboolean delete_from_source)
message_list_foreach (fb->message_list, enumerate_msg, uids);
if (delete_from_source) {
- g_object_ref (fb);
+ gtk_object_ref (GTK_OBJECT (fb));
mail_transfer_messages (fb->folder, uids, delete_from_source,
folder->physicalUri, 0,
transfer_msg_done, fb);
@@ -1660,7 +1763,6 @@ transfer_msg (FolderBrowser *fb, gboolean delete_from_source)
mail_transfer_messages (fb->folder, uids, delete_from_source,
folder->physicalUri, 0, NULL, NULL);
}
-
CORBA_free (folder);
}
@@ -1694,7 +1796,7 @@ find_socket (GtkContainer *container)
{
GList *children, *tmp;
- children = gtk_container_get_children (container);
+ children = gtk_container_children (container);
while (children) {
if (BONOBO_IS_SOCKET (children->data))
return children->data;
@@ -1707,14 +1809,13 @@ find_socket (GtkContainer *container)
g_list_free_1 (children);
children = tmp;
}
-
- return NULL;
+ return NULL;
}
static void
popup_listener_cb (BonoboListener *listener,
- const char *event_name,
- const CORBA_any *any,
+ char *event_name,
+ CORBA_any *any,
CORBA_Environment *ev,
gpointer user_data)
{
@@ -1738,17 +1839,18 @@ addrbook_sender (GtkWidget *widget, gpointer user_data)
GtkWidget *socket;
GPtrArray *uids;
int i;
-
+
if (FOLDER_BROWSER_IS_DESTROYED (fb))
return;
-
- uids = g_ptr_array_new ();
- message_list_foreach (fb->message_list, enumerate_msg, uids);
+
+ uids = g_ptr_array_new();
+ message_list_foreach(fb->message_list, enumerate_msg, uids);
if (uids->len != 1)
goto done;
-
- info = camel_folder_get_message_info (fb->folder, uids->pdata[0]);
- if (info == NULL || (addr_str = camel_message_info_from (info)) == NULL)
+
+ info = camel_folder_get_message_info(fb->folder, uids->pdata[0]);
+ if (info == NULL
+ || (addr_str = camel_message_info_from(info)) == NULL)
goto done;
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -1757,23 +1859,25 @@ addrbook_sender (GtkWidget *widget, gpointer user_data)
control = bonobo_widget_new_control ("OAFIID:GNOME_Evolution_Addressbook_AddressPopup",
CORBA_OBJECT_NIL);
bonobo_widget_set_property (BONOBO_WIDGET (control),
- "email", TC_CORBA_string, addr_str,
+ "email", addr_str,
NULL);
bonobo_event_source_client_add_listener (bonobo_widget_get_objref (BONOBO_WIDGET (control)),
popup_listener_cb, NULL, NULL, win);
socket = find_socket (GTK_CONTAINER (control));
-
- g_object_weak_ref ((GObject *) socket, (GWeakNotify) gtk_widget_destroy, win);
+ gtk_signal_connect_object (GTK_OBJECT (socket),
+ "destroy",
+ GTK_SIGNAL_FUNC (gtk_widget_destroy),
+ GTK_OBJECT (win));
gtk_container_add (GTK_CONTAINER (win), control);
gtk_widget_show_all (win);
done:
- for (i = 0; i < uids->len; i++)
- g_free (uids->pdata[i]);
- g_ptr_array_free (uids, TRUE);
+ for (i=0; i < uids->len; i++)
+ g_free(uids->pdata[i]);
+ g_ptr_array_free(uids, TRUE);
}
void
@@ -1945,13 +2049,13 @@ toggle_flags (FolderBrowser *fb, guint32 mask)
guint32 flags;
flags = ~(camel_folder_get_message_flags (fb->folder, uids->pdata[i]));
-
+
/* if we're flagging a message important, always undelete it too */
if (mask & flags & CAMEL_MESSAGE_FLAGGED) {
flags &= ~CAMEL_MESSAGE_DELETED;
mask |= CAMEL_MESSAGE_DELETED;
}
-
+
/* if we're flagging a message deleted, mark it seen. If
* we're undeleting it, we also want it to be seen, so always do this.
*/
@@ -1959,9 +2063,9 @@ toggle_flags (FolderBrowser *fb, guint32 mask)
flags |= CAMEL_MESSAGE_SEEN;
mask |= CAMEL_MESSAGE_SEEN;
}
-
+
camel_folder_set_message_flags (fb->folder, uids->pdata[i], mask, flags);
-
+
g_free (uids->pdata[i]);
}
camel_folder_thaw (fb->folder);
@@ -2038,33 +2142,51 @@ struct _tag_editor_data {
};
static void
-tag_editor_response(GtkWidget *gd, int button, struct _tag_editor_data *data)
+tag_editor_ok (GtkWidget *button, gpointer user_data)
{
+ struct _tag_editor_data *data = user_data;
CamelFolder *folder;
CamelTag *tags, *t;
GPtrArray *uids;
int i;
-
- /*if (FOLDER_BROWSER_IS_DESTROYED (data->fb))
- goto done;*/
-
- if (button == GTK_RESPONSE_OK
- && (tags = message_tag_editor_get_tag_list (data->editor))) {
- folder = data->fb->folder;
- uids = data->uids;
- camel_folder_freeze (folder);
- for (i = 0; i < uids->len; i++) {
- for (t = tags; t; t = t->next)
- camel_folder_set_message_user_tag (folder, uids->pdata[i], t->name, t->value);
- }
- camel_folder_thaw (folder);
- camel_tag_list_free (&tags);
+ if (FOLDER_BROWSER_IS_DESTROYED (data->fb))
+ goto done;
+
+ tags = message_tag_editor_get_tag_list (data->editor);
+ if (tags == NULL)
+ goto done;
+
+ folder = data->fb->folder;
+ uids = data->uids;
+
+ camel_folder_freeze (folder);
+ for (i = 0; i < uids->len; i++) {
+ for (t = tags; t; t = t->next)
+ camel_folder_set_message_user_tag (folder, uids->pdata[i], t->name, t->value);
}
+ camel_folder_thaw (folder);
+
+ camel_tag_list_free (&tags);
+
+ done:
+ gtk_widget_destroy (GTK_WIDGET (data->editor));
+}
- gtk_widget_destroy(gd);
+static void
+tag_editor_cancel (GtkWidget *button, gpointer user_data)
+{
+ struct _tag_editor_data *data = user_data;
+
+ gtk_widget_destroy (GTK_WIDGET (data->editor));
+}
- g_object_unref (data->fb);
+static void
+tag_editor_destroy (GnomeDialog *dialog, gpointer user_data)
+{
+ struct _tag_editor_data *data = user_data;
+
+ gtk_object_unref (GTK_OBJECT (data->fb));
g_ptr_array_free (data->uids, TRUE);
g_free (data);
}
@@ -2100,8 +2222,10 @@ flag_for_followup (BonoboUIComponent *uih, void *user_data, const char *path)
camel_message_info_from (info),
camel_message_info_subject (info));
}
-
- g_signal_connect(editor, "response", G_CALLBACK(tag_editor_response), data);
+
+ gnome_dialog_button_connect (GNOME_DIALOG (editor), 0, tag_editor_ok, data);
+ gnome_dialog_button_connect (GNOME_DIALOG (editor), 1, tag_editor_cancel, data);
+ gnome_dialog_set_close (GNOME_DIALOG (editor), TRUE);
/* special-case... */
if (uids->len == 1) {
@@ -2115,6 +2239,9 @@ flag_for_followup (BonoboUIComponent *uih, void *user_data, const char *path)
}
}
+ gtk_signal_connect (GTK_OBJECT (editor), "destroy",
+ tag_editor_destroy, data);
+
gtk_widget_show (editor);
}
@@ -2235,10 +2362,12 @@ do_edit_messages (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, voi
ccd->drafts_uid = g_strdup (uids->pdata[i]);
}
- g_signal_connect (composer, "send", G_CALLBACK (composer_send_cb), ccd);
- g_signal_connect (composer, "save-draft", G_CALLBACK (composer_save_draft_cb), ccd);
-
- g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "save-draft",
+ GTK_SIGNAL_FUNC (composer_save_draft_cb), ccd);
+ gtk_signal_connect (GTK_OBJECT (composer), "destroy",
+ GTK_SIGNAL_FUNC (composer_destroy_cb), ccd);
gtk_widget_show (GTK_WIDGET (composer));
}
@@ -2251,20 +2380,17 @@ are_you_sure (const char *msg, GPtrArray *uids, FolderBrowser *fb)
GtkWidget *dialog;
char *buf;
int button, i;
-
- dialog = gtk_message_dialog_new (FB_WINDOW (fb), GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL,
- msg, uids->len);
- button = gtk_dialog_run((GtkDialog *)dialog);
- gtk_widget_destroy(dialog);
-
- if (button != GTK_RESPONSE_OK) {
+
+ buf = g_strdup_printf (msg, uids->len);
+ dialog = e_gnome_ok_cancel_dialog_parented (buf, NULL, NULL, FB_WINDOW (fb));
+ button = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
+ if (button != 0) {
for (i = 0; i < uids->len; i++)
g_free (uids->pdata[i]);
g_ptr_array_free (uids, TRUE);
}
- return button == GTK_RESPONSE_OK;
+ return button == 0;
}
static void
@@ -2278,8 +2404,16 @@ edit_msg_internal (FolderBrowser *fb)
uids = g_ptr_array_new ();
message_list_foreach (fb->message_list, enumerate_msg, uids);
- if (uids->len > 10 && !are_you_sure (_("Are you sure you want to edit all %d messages?"), uids, fb))
+ if (uids->len > 10 && !are_you_sure (_("Are you sure you want to edit all %d messages?"), uids, fb)) {
+ int i;
+
+ for (i = 0; i < uids->len; i++)
+ g_free (uids->pdata[i]);
+
+ g_ptr_array_free (uids, TRUE);
+
return;
+ }
mail_get_messages (fb->folder, uids, do_edit_messages, fb);
}
@@ -2293,8 +2427,13 @@ edit_msg (GtkWidget *widget, gpointer user_data)
return;
if (!folder_browser_is_drafts (fb)) {
- e_notice(FB_WINDOW(fb), GTK_MESSAGE_ERROR,
- _("You may only edit messages saved\nin the Drafts folder."));
+ GtkWidget *dialog;
+
+ dialog = gnome_warning_dialog_parented (_("You may only edit messages saved\n"
+ "in the Drafts folder."),
+ FB_WINDOW (fb));
+ gnome_dialog_set_close (GNOME_DIALOG (dialog), TRUE);
+ gtk_widget_show (dialog);
return;
}
@@ -2328,9 +2467,12 @@ resend_msg (GtkWidget *widget, gpointer user_data)
if (!folder_browser_is_sent (fb)) {
GtkWidget *dialog;
-
- e_notice(FB_WINDOW(fb), GTK_MESSAGE_ERROR,
- _("You may only resend messages\nin the Sent folder."));
+
+ dialog = gnome_warning_dialog_parented (_("You may only resend messages\n"
+ "in the Sent folder."),
+ FB_WINDOW (fb));
+ gnome_dialog_set_close (GNOME_DIALOG (dialog), TRUE);
+ gtk_widget_show (dialog);
return;
}
@@ -2340,8 +2482,16 @@ resend_msg (GtkWidget *widget, gpointer user_data)
uids = g_ptr_array_new ();
message_list_foreach (fb->message_list, enumerate_msg, uids);
- if (uids->len > 10 && !are_you_sure (_("Are you sure you want to resend all %d messages?"), uids, fb))
+ if (uids->len > 10 && !are_you_sure (_("Are you sure you want to resend all %d messages?"), uids, fb)) {
+ int i;
+
+ for (i = 0; i < uids->len; i++)
+ g_free (uids->pdata[i]);
+
+ g_ptr_array_free (uids, TRUE);
+
return;
+ }
mail_get_messages (fb->folder, uids, do_resend_messages, fb);
}
@@ -2358,10 +2508,8 @@ search_msg (GtkWidget *widget, gpointer user_data)
if (fb->mail_display->current_message == NULL) {
GtkWidget *dialog;
- dialog = gtk_message_dialog_new(FB_WINDOW(fb), GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE,
- _("No Message Selected"));
- g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog);
+ dialog = gnome_warning_dialog_parented (_("No Message Selected"), FB_WINDOW (fb));
+ gnome_dialog_set_close (GNOME_DIALOG (dialog), TRUE);
gtk_widget_show (dialog);
return;
}
@@ -2387,8 +2535,8 @@ save_msg_ok (GtkWidget *widget, gpointer user_data)
CamelFolder *folder;
GPtrArray *uids;
const char *path;
+ int fd, ret = 0;
struct stat st;
- gboolean ret = TRUE;
path = gtk_file_selection_get_filename (GTK_FILE_SELECTION (user_data));
if (path[0] == '\0')
@@ -2397,21 +2545,33 @@ save_msg_ok (GtkWidget *widget, gpointer user_data)
/* make sure we can actually save to it... */
if (stat (path, &st) != -1 && !S_ISREG (st.st_mode))
return;
-
- if (access(path, F_OK) == 0) {
- if (access(path, W_OK) != 0) {
- e_notice(GTK_WINDOW(user_data), GTK_MESSAGE_ERROR,
- _("Cannot save to `%s'\n %s"), path, g_strerror(errno));
- return;
- }
-
- ret = e_question(GTK_WINDOW(user_data), GTK_RESPONSE_NO, NULL,
- _("`%s' already exists.\nOverwrite it?"), path);
+
+ fd = open (path, O_RDONLY);
+ if (fd != -1) {
+ GtkWidget *dialog;
+ GtkWidget *text;
+
+ close (fd);
+
+ dialog = gnome_dialog_new (_("Overwrite file?"),
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ e_gnome_dialog_set_parent (GNOME_DIALOG (dialog), GTK_WINDOW (user_data));
+
+ text = gtk_label_new (_("A file by that name already exists.\nOverwrite it?"));
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), text, TRUE, TRUE, 4);
+ gtk_window_set_policy (GTK_WINDOW (dialog), FALSE, TRUE, FALSE);
+ gtk_widget_show (text);
+
+ ret = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
}
- if (ret == GTK_RESPONSE_OK) {
- folder = g_object_get_data ((GObject *) user_data, "folder");
- uids = g_object_steal_data (G_OBJECT (user_data), "uids");
+ if (ret == 0) {
+ folder = gtk_object_get_data (GTK_OBJECT (user_data), "folder");
+ uids = gtk_object_get_data (GTK_OBJECT (user_data), "uids");
+ gtk_object_remove_no_notify (GTK_OBJECT (user_data), "uids");
mail_save_messages (folder, uids, path, NULL, NULL);
gtk_widget_destroy (GTK_WIDGET (user_data));
}
@@ -2455,13 +2615,13 @@ save_msg (GtkWidget *widget, gpointer user_data)
path = g_strdup_printf ("%s/", g_get_home_dir ());
gtk_file_selection_set_filename (filesel, path);
g_free (path);
-
- g_object_set_data_full ((GObject *) filesel, "uids", uids, save_msg_destroy);
- g_object_set_data ((GObject *) filesel, "folder", fb->folder);
-
- g_signal_connect (filesel->ok_button, "clicked", G_CALLBACK (save_msg_ok), filesel);
- g_signal_connect_swapped (filesel->cancel_button, "clicked",
- G_CALLBACK (gtk_widget_destroy), filesel);
+ gtk_object_set_data_full (GTK_OBJECT (filesel), "uids", uids, save_msg_destroy);
+ gtk_object_set_data (GTK_OBJECT (filesel), "folder", fb->folder);
+ gtk_signal_connect (GTK_OBJECT (filesel->ok_button),
+ "clicked", GTK_SIGNAL_FUNC (save_msg_ok), filesel);
+ gtk_signal_connect_object (GTK_OBJECT (filesel->cancel_button),
+ "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy),
+ GTK_OBJECT (filesel));
gtk_widget_show (GTK_WIDGET (filesel));
}
@@ -2491,7 +2651,7 @@ delete_msg (GtkWidget *button, gpointer user_data)
/* If this is the last message and deleted messages
are hidden, select the previous */
- if ((row + 1 == e_tree_row_count (fb->message_list->tree))
+ if ((row+1 == e_tree_row_count (fb->message_list->tree))
&& mail_config_get_hide_deleted ())
message_list_select (fb->message_list, MESSAGE_LIST_SELECT_PREVIOUS,
0, CAMEL_MESSAGE_DELETED, FALSE);
@@ -2512,20 +2672,46 @@ undelete_msg (GtkWidget *button, gpointer user_data)
static gboolean
confirm_goto_next_folder (FolderBrowser *fb)
{
- gboolean res, show_again;
+ GtkWidget *dialog, *label, *checkbox;
+ int button;
if (!mail_config_get_confirm_goto_next_folder ())
return mail_config_get_goto_next_folder ();
-
- /*gtk_window_set_title((GtkWindow *)dialog, _("Go to next folder with unread messages?"));*/
-
- res = e_question(FB_WINDOW(fb), GTK_RESPONSE_YES, &show_again,
- _("There are no more new messages in this folder.\n"
- "Would you like to go to the next folder?"));
- mail_config_set_confirm_goto_next_folder(show_again);
- mail_config_set_goto_next_folder (res);
-
- return res;
+
+ dialog = gnome_dialog_new (_("Go to next folder with unread messages?"),
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ e_gnome_dialog_set_parent (GNOME_DIALOG (dialog), FB_WINDOW (fb));
+
+ label = gtk_label_new (_("There are no more new messages in this folder.\n"
+ "Would you like to go to the next folder?"));
+
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), label, TRUE, TRUE, 4);
+
+ checkbox = gtk_check_button_new_with_label (_("Do not ask me again."));
+ gtk_object_ref (GTK_OBJECT (checkbox));
+ gtk_widget_show (checkbox);
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), checkbox, TRUE, TRUE, 4);
+
+ button = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
+
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)))
+ mail_config_set_confirm_goto_next_folder (FALSE);
+
+ gtk_object_unref (GTK_OBJECT (checkbox));
+
+ if (button == 0) {
+ mail_config_set_goto_next_folder (TRUE);
+ return TRUE;
+ } else {
+ mail_config_set_goto_next_folder (FALSE);
+ return FALSE;
+ }
}
static CamelFolderInfo *
@@ -2729,19 +2915,45 @@ expunged_folder (CamelFolder *f, void *data)
static gboolean
confirm_expunge (FolderBrowser *fb)
{
- gboolean res, show_again;
-
+ GtkWidget *dialog, *label, *checkbox;
+ int button;
+
if (!mail_config_get_confirm_expunge ())
return TRUE;
-
- res = e_question(FB_WINDOW(fb), GTK_RESPONSE_NO, &show_again,
- _("This operation will permanently erase all messages marked as\n"
- "deleted. If you continue, you will not be able to recover these messages.\n"
- "\nReally erase these messages?"));
-
- mail_config_set_confirm_expunge(show_again);
-
- return res;
+
+ dialog = gnome_dialog_new (_("Warning"),
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ e_gnome_dialog_set_parent (GNOME_DIALOG (dialog), FB_WINDOW (fb));
+
+ label = gtk_label_new (_("This operation will permanently erase all messages marked as deleted. If you continue, you will not be able to recover these messages.\n\nReally erase these messages?"));
+
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), label, TRUE, TRUE, 4);
+
+ checkbox = gtk_check_button_new_with_label (_("Do not ask me again."));
+ gtk_object_ref (GTK_OBJECT (checkbox));
+ gtk_widget_show (checkbox);
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), checkbox, TRUE, TRUE, 4);
+
+ /* Set the 'No' button as the default */
+ gnome_dialog_set_default (GNOME_DIALOG (dialog), 1);
+
+ button = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
+
+ if (button == 0 && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)))
+ mail_config_set_confirm_expunge (FALSE);
+
+ gtk_object_unref (GTK_OBJECT (checkbox));
+
+ if (button == 0)
+ return TRUE;
+ else
+ return FALSE;
}
void
@@ -2777,22 +2989,28 @@ expunge_folder (BonoboUIComponent *uih, void *user_data, const char *path)
static GtkWidget *filter_editor = NULL;
static void
-filter_editor_response (GtkWidget *dialog, int button, FolderBrowser *fb)
+filter_editor_destroy (GtkWidget *dialog, gpointer user_data)
+{
+ filter_editor = NULL;
+}
+
+static void
+filter_editor_clicked (GtkWidget *dialog, int button, FolderBrowser *fb)
{
FilterContext *fc;
- if (button == GTK_RESPONSE_ACCEPT) {
+ if (button == 0) {
char *user;
- fc = g_object_get_data(G_OBJECT(dialog), "context");
+ fc = gtk_object_get_data (GTK_OBJECT (dialog), "context");
user = g_strdup_printf ("%s/filters.xml", evolution_dir);
rule_context_save ((RuleContext *)fc, user);
g_free (user);
}
-
- gtk_widget_destroy(dialog);
-
- filter_editor = NULL;
+
+ if (button != -1) {
+ gnome_dialog_close (GNOME_DIALOG (dialog));
+ }
}
static const char *filter_source_names[] = {
@@ -2820,19 +3038,27 @@ filter_edit (BonoboUIComponent *uih, void *user_data, const char *path)
g_free (user);
if (((RuleContext *)fc)->error) {
- e_notice(FB_WINDOW (fb), GTK_MESSAGE_ERROR,
- _("Error loading filter information:\n%s"),
- ((RuleContext *)fc)->error);
+ GtkWidget *dialog;
+ char *err;
+
+ err = g_strdup_printf (_("Error loading filter information:\n%s"),
+ ((RuleContext *)fc)->error);
+ dialog = gnome_warning_dialog_parented (err, FB_WINDOW (fb));
+ g_free (err);
+
+ gnome_dialog_set_close (GNOME_DIALOG (dialog), TRUE);
+ gtk_widget_show (dialog);
return;
}
filter_editor = (GtkWidget *)filter_editor_new (fc, filter_source_names);
- /* maybe this needs destroy func? */
- gtk_window_set_transient_for((GtkWindow *)filter_editor, FB_WINDOW(fb));
+ gnome_dialog_set_parent (GNOME_DIALOG (filter_editor), FB_WINDOW (fb));
gtk_window_set_title (GTK_WINDOW (filter_editor), _("Filters"));
- gtk_dialog_add_button((GtkDialog *)filter_editor, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
- g_object_set_data_full(G_OBJECT(filter_editor), "context", fc, (GtkDestroyNotify)g_object_unref);
- g_signal_connect(filter_editor, "response", G_CALLBACK(filter_editor_response), fb);
+
+ gtk_object_set_data_full (GTK_OBJECT (filter_editor), "context", fc, (GtkDestroyNotify)gtk_object_unref);
+ gtk_signal_connect (GTK_OBJECT (filter_editor), "clicked", filter_editor_clicked, fb);
+ gtk_signal_connect (GTK_OBJECT (filter_editor), "destroy", filter_editor_destroy, NULL);
+ gnome_dialog_append_buttons(GNOME_DIALOG(filter_editor), GNOME_STOCK_BUTTON_CANCEL, NULL);
gtk_widget_show (GTK_WIDGET (filter_editor));
}
@@ -2872,9 +3098,7 @@ footer_print_cb (GtkHTML *html, GnomePrintContext *print_context,
if (info->local_font) {
gchar *text = g_strdup_printf (_("Page %d of %d"), info->page_num, info->pages);
- /*gdouble tw = gnome_font_get_width_string (info->local_font, text);*/
- /* FIXME: work out how to measure this */
- gdouble tw = strlen(text) * 8;
+ gdouble tw = gnome_font_get_width_string (info->local_font, text);
gnome_print_gsave (print_context);
gnome_print_newpath (print_context);
@@ -2903,7 +3127,7 @@ footer_info_new (GtkHTML *html, GnomePrintContext *pc, gdouble *line)
struct footer_info *info;
info = g_new (struct footer_info, 1);
- info->local_font = gnome_font_find_closest ("Helvetica", 10.0);
+ info->local_font = gnome_font_new_closest ("Helvetica", GNOME_FONT_BOOK, FALSE, 10);
if (info->local_font) {
*line = gnome_font_get_ascender (info->local_font) + gnome_font_get_descender (info->local_font);
}
@@ -2920,39 +3144,47 @@ do_mail_print (FolderBrowser *fb, gboolean preview)
GnomePrintContext *print_context;
GnomePrintMaster *print_master;
GnomePrintDialog *dialog;
- GnomePrintConfig *config = NULL;
+ GnomePrinter *printer = NULL;
+ GnomePaper *paper;
gdouble line = 0.0;
+ int copies = 1;
+ int collate = FALSE;
struct footer_info *info;
if (!preview) {
dialog = GNOME_PRINT_DIALOG (gnome_print_dialog_new (_("Print Message"),
GNOME_PRINT_DIALOG_COPIES));
- gtk_dialog_set_default_response((GtkDialog *)dialog, GNOME_PRINT_DIALOG_RESPONSE_PRINT);
- gtk_window_set_transient_for((GtkWindow *)dialog, (GtkWindow *)fb);
+ gnome_dialog_set_default (GNOME_DIALOG (dialog), GNOME_PRINT_PRINT);
+ e_gnome_dialog_set_parent (GNOME_DIALOG (dialog), FB_WINDOW (fb));
- switch(gtk_dialog_run((GtkDialog *)dialog)) {
- case GNOME_PRINT_DIALOG_RESPONSE_PRINT:
+ switch (gnome_dialog_run (GNOME_DIALOG (dialog))) {
+ case GNOME_PRINT_PRINT:
break;
- case GNOME_PRINT_DIALOG_RESPONSE_PREVIEW:
+ case GNOME_PRINT_PREVIEW:
preview = TRUE;
break;
+ case -1:
+ return;
default:
- gtk_widget_destroy((GtkWidget *)dialog);
+ gnome_dialog_close (GNOME_DIALOG (dialog));
return;
}
- config = gnome_print_dialog_get_config(dialog);
- gtk_widget_destroy((GtkWidget *)dialog);
+ gnome_print_dialog_get_copies (dialog, &copies, &collate);
+ printer = gnome_print_dialog_get_printer (dialog);
+ gnome_dialog_close (GNOME_DIALOG (dialog));
}
- if (config) {
- print_master = gnome_print_master_new_from_config(config);
- gnome_print_config_unref(config);
- } else
- print_master = gnome_print_master_new ();
+ print_master = gnome_print_master_new ();
- /* paper size settings? */
- /*gnome_print_master_set_paper (print_master, paper);*/
+ if (printer)
+ gnome_print_master_set_printer (print_master, printer);
+ paper = (GnomePaper *) gnome_paper_with_name (_("US-Letter"));
+
+ if (!paper)
+ paper = (GnomePaper *) gnome_paper_with_name (gnome_paper_name_default ());
+ gnome_print_master_set_paper (print_master, paper);
+ gnome_print_master_set_copies (print_master, copies, collate);
print_context = gnome_print_master_get_context (print_master);
html = GTK_HTML (gtk_html_new ());
@@ -2977,15 +3209,19 @@ do_mail_print (FolderBrowser *fb, gboolean preview)
gnome_print_master_close (print_master);
if (preview){
- GtkWidget *preview;
-
- preview = gnome_print_master_preview_new(print_master, _("Print Preview"));
- gtk_widget_show(preview);
+ gboolean landscape = FALSE;
+ GnomePrintMasterPreview *preview;
+
+ preview = gnome_print_master_preview_new_with_orientation (
+ print_master, _("Print Preview"), landscape);
+ gtk_widget_show (GTK_WIDGET (preview));
} else {
int result = gnome_print_master_print (print_master);
- if (result == -1)
- e_notice(FB_WINDOW(fb), GTK_MESSAGE_ERROR, _("Printing of message failed"));
+ if (result == -1){
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("Printing of message failed"));
+ }
}
/* FIXME: We are leaking the GtkHTML object */
@@ -3088,10 +3324,8 @@ static GtkObject *subscribe_dialog = NULL;
static void
subscribe_dialog_destroy (GtkWidget *widget, gpointer user_data)
{
- if (subscribe_dialog) {
- g_object_unref (subscribe_dialog);
- subscribe_dialog = NULL;
- }
+ gtk_object_unref (subscribe_dialog);
+ subscribe_dialog = NULL;
}
void
@@ -3099,8 +3333,8 @@ manage_subscriptions (BonoboUIComponent *uih, void *user_data, const char *path)
{
if (!subscribe_dialog) {
subscribe_dialog = subscribe_dialog_new ();
- g_signal_connect (SUBSCRIBE_DIALOG (subscribe_dialog)->app, "destroy",
- G_CALLBACK (subscribe_dialog_destroy), NULL);
+ gtk_signal_connect (GTK_OBJECT (SUBSCRIBE_DIALOG (subscribe_dialog)->app), "destroy",
+ subscribe_dialog_destroy, NULL);
subscribe_dialog_show (subscribe_dialog);
} else {
@@ -3116,7 +3350,7 @@ local_configure_done(const char *uri, CamelFolder *folder, void *data)
FolderBrowser *fb = data;
if (FOLDER_BROWSER_IS_DESTROYED (fb)) {
- g_object_unref(fb);
+ gtk_object_unref((GtkObject *)fb);
return;
}
@@ -3124,7 +3358,7 @@ local_configure_done(const char *uri, CamelFolder *folder, void *data)
folder = fb->folder;
message_list_set_folder(fb->message_list, folder, FALSE);
- g_object_unref(fb);
+ gtk_object_unref((GtkObject *)fb);
}
void
@@ -3140,7 +3374,7 @@ configure_folder (BonoboUIComponent *uih, void *user_data, const char *path)
vfolder_edit_rule (fb->uri);
} else {
message_list_set_folder(fb->message_list, NULL, FALSE);
- g_object_ref((GtkObject *)fb);
+ gtk_object_ref((GtkObject *)fb);
mail_local_reconfigure_folder(fb->uri, local_configure_done, fb);
}
}
@@ -3223,7 +3457,7 @@ stop_threads (BonoboUIComponent *uih, void *user_data, const char *path)
static void
empty_trash_expunged_cb (CamelFolder *folder, void *data)
{
- camel_object_unref (folder);
+ camel_object_unref (CAMEL_OBJECT (folder));
}
void
diff --git a/mail/mail-composer-prefs.c b/mail/mail-composer-prefs.c
index 647552af73..8e6cbb54f8 100644
--- a/mail/mail-composer-prefs.c
+++ b/mail/mail-composer-prefs.c
@@ -25,15 +25,16 @@
#include <config.h>
#endif
-#include <string.h>
-
#include "mail-composer-prefs.h"
#include "composer/e-msg-composer.h"
+#include <gtk/gtksignal.h>
+
#include <bonobo/bonobo-generic-factory.h>
+#include <bonobo/bonobo-object-client.h>
#include <gal/widgets/e-gui-utils.h>
-#include <gal/util/e-iconv.h>
+#include <gal/widgets/e-unicode.h>
#include "widgets/misc/e-charset-picker.h"
@@ -47,30 +48,30 @@
static void mail_composer_prefs_class_init (MailComposerPrefsClass *class);
static void mail_composer_prefs_init (MailComposerPrefs *dialog);
static void mail_composer_prefs_destroy (GtkObject *obj);
-static void mail_composer_prefs_finalise (GObject *obj);
+static void mail_composer_prefs_finalise (GtkObject *obj);
static void sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailComposerPrefs *prefs);
static GtkVBoxClass *parent_class = NULL;
-GType
+GtkType
mail_composer_prefs_get_type (void)
{
- static GType type = 0;
+ static GtkType type = 0;
if (!type) {
- static const GTypeInfo info = {
- sizeof (MailComposerPrefsClass),
- NULL, NULL,
- (GClassInitFunc) mail_composer_prefs_class_init,
- NULL, NULL,
+ GtkTypeInfo type_info = {
+ "MailComposerPrefs",
sizeof (MailComposerPrefs),
- 0,
- (GInstanceInitFunc) mail_composer_prefs_init,
+ sizeof (MailComposerPrefsClass),
+ (GtkClassInitFunc) mail_composer_prefs_class_init,
+ (GtkObjectInitFunc) mail_composer_prefs_init,
+ (GtkArgSetFunc) NULL,
+ (GtkArgGetFunc) NULL
};
- type = g_type_register_static(gtk_vbox_get_type (), "MailComposerPrefs", &info, 0);
+ type = gtk_type_unique (gtk_vbox_get_type (), &type_info);
}
return type;
@@ -79,13 +80,15 @@ mail_composer_prefs_get_type (void)
static void
mail_composer_prefs_class_init (MailComposerPrefsClass *klass)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
+ GtkObjectClass *object_class;
- parent_class = g_type_class_ref (gtk_vbox_get_type ());
+ object_class = (GtkObjectClass *) klass;
+ parent_class = gtk_type_class (gtk_vbox_get_type ());
object_class->destroy = mail_composer_prefs_destroy;
- gobject_class->finalize = mail_composer_prefs_finalise;
+ object_class->finalize = mail_composer_prefs_finalise;
+ /* override methods */
+
}
static void
@@ -97,27 +100,28 @@ mail_composer_prefs_init (MailComposerPrefs *composer_prefs)
}
static void
-mail_composer_prefs_finalise (GObject *obj)
+mail_composer_prefs_finalise (GtkObject *obj)
{
MailComposerPrefs *prefs = (MailComposerPrefs *) obj;
- g_object_unref ((prefs->gui));
- g_object_unref ((prefs->pman));
- g_object_unref (prefs->enabled_pixbuf);
+ gtk_object_unref (GTK_OBJECT (prefs->gui));
+ gtk_object_unref (GTK_OBJECT (prefs->pman));
+ gdk_pixbuf_unref (prefs->enabled_pixbuf);
gdk_pixmap_unref (prefs->mark_pixmap);
- g_object_unref (prefs->mark_bitmap);
-
- G_OBJECT_CLASS (parent_class)->finalize (obj);
+ gdk_bitmap_unref (prefs->mark_bitmap);
+
+ ((GtkObjectClass *)(parent_class))->finalize (obj);
}
static void
mail_composer_prefs_destroy (GtkObject *obj)
{
MailComposerPrefs *prefs = (MailComposerPrefs *) obj;
-
+
mail_config_signature_unregister_client ((MailConfigSignatureClient) sig_event_client, prefs);
- GTK_OBJECT_CLASS (parent_class)->destroy (obj);
+ if (GTK_OBJECT_CLASS (parent_class))
+ (* GTK_OBJECT_CLASS (parent_class)->destroy) (obj);
}
static void
@@ -125,7 +129,7 @@ attach_style_info (GtkWidget *item, gpointer user_data)
{
int *style = user_data;
- g_object_set_data ((GObject *) item, "style", GINT_TO_POINTER (*style));
+ gtk_object_set_data (GTK_OBJECT (item), "style", GINT_TO_POINTER (*style));
(*style)++;
}
@@ -159,7 +163,8 @@ option_menu_connect (GtkOptionMenu *omenu, gpointer user_data)
items = GTK_MENU_SHELL (menu)->children;
while (items) {
item = items->data;
- g_signal_connect (item, "activate", G_CALLBACK (menu_changed), user_data);
+ gtk_signal_connect (GTK_OBJECT (item), "activate",
+ menu_changed, user_data);
items = items->next;
}
}
@@ -173,7 +178,7 @@ sig_load_preview (MailComposerPrefs *prefs, MailConfigSignature *sig)
gtk_html_load_from_string (GTK_HTML (prefs->sig_preview), " ", 1);
return;
}
-
+
if (sig->script)
str = mail_config_signature_run_script (sig->script);
else
@@ -214,7 +219,7 @@ sig_edit (GtkWidget *widget, MailComposerPrefs *prefs)
if (sig->filename && *sig->filename)
mail_signature_editor (sig);
else
- e_notice (GTK_WINDOW (prefs), GTK_MESSAGE_ERROR,
+ e_notice (GTK_WINDOW (prefs), GNOME_MESSAGE_BOX_ERROR,
_("Please specify signature filename\nin Advanced section of signature settings."));
}
@@ -228,10 +233,16 @@ mail_composer_prefs_new_signature (MailComposerPrefs *prefs, gboolean html, cons
sig = mail_config_signature_add (html, script);
if (prefs) {
- if (sig->name)
- name[0] = g_strconcat (sig->name, " ", _("[script]"), NULL);
- else
- name[0] = g_strdup (_("[script]"));
+ if (!(name[0] = e_utf8_to_gtk_string (GTK_WIDGET (prefs->sig_clist), sig->name)))
+ name[0] = g_strdup ("");
+
+ if (sig->script) {
+ char *tmp;
+
+ tmp = name[0];
+ name[0] = g_strconcat (tmp, _(" [script]"), NULL);
+ g_free (tmp);
+ }
row = gtk_clist_append (prefs->sig_clist, name);
gtk_clist_set_row_data (prefs->sig_clist, row, sig);
@@ -270,43 +281,39 @@ sig_add (GtkWidget *widget, MailComposerPrefs *prefs)
}
static void
-sig_add_script_response (GtkWidget *widget, int button, MailComposerPrefs *prefs)
+sig_add_script_add (GtkWidget *widget, MailComposerPrefs *prefs)
{
- const char *script, *name;
- GtkWidget *dialog;
+ char *script, *name;
GtkWidget *entry;
- if (button == GTK_RESPONSE_ACCEPT) {
- entry = glade_xml_get_widget (prefs->sig_script_gui, "fileentry_add_script_script");
- script = gtk_entry_get_text (GTK_ENTRY (gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (entry))));
+ entry = glade_xml_get_widget (prefs->sig_script_gui, "fileentry_add_script_script");
+ script = gtk_entry_get_text (GTK_ENTRY (gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (entry))));
+
+ entry = glade_xml_get_widget (prefs->sig_script_gui, "entry_add_script_name");
+ name = e_utf8_gtk_entry_get_text (GTK_ENTRY (entry));
+ if (script && *script) {
+ struct stat st;
- entry = glade_xml_get_widget (prefs->sig_script_gui, "entry_add_script_name");
- name = gtk_entry_get_text (GTK_ENTRY (entry));
- if (script && *script) {
- struct stat st;
+ if (!stat (script, &st)
+ && S_ISREG (st.st_mode) && (st.st_mode & (S_IXOTH | S_IXGRP | S_IXUSR))) {
+ MailConfigSignature *sig;
+
+ sig = mail_composer_prefs_new_signature (prefs, TRUE, script);
+ mail_config_signature_set_name (sig, name);
+ g_free (name);
+ gtk_widget_hide (prefs->sig_script_dialog);
- if (!stat (script, &st) && S_ISREG (st.st_mode) && (st.st_mode & (S_IXOTH | S_IXGRP | S_IXUSR))) {
- MailConfigSignature *sig;
-
- sig = mail_composer_prefs_new_signature (prefs, TRUE, script);
- mail_config_signature_set_name (sig, name);
- gtk_widget_hide (prefs->sig_script_dialog);
-
- return;
- }
+ return;
}
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (prefs->sig_script_dialog),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "%s", _("You must specify a valid script name."));
-
- gtk_dialog_run ((GtkDialog *) dialog);
- gtk_widget_destroy (dialog);
}
-
- gtk_widget_hide (widget);
+ gnome_dialog_run_and_close (GNOME_DIALOG (gnome_ok_dialog_parented (_("Please specify a valid script name"),
+ GTK_WINDOW (prefs->sig_script_dialog))));
+}
+
+static void
+sig_add_script_cancel (GtkWidget *widget, MailComposerPrefs *prefs)
+{
+ gnome_dialog_close (GNOME_DIALOG (prefs->sig_script_dialog));
}
static void
@@ -347,21 +354,23 @@ sig_row_unselect (GtkCList *clist, int row, int col, GdkEvent *event, MailCompos
static void
sig_fill_clist (GtkCList *clist)
{
- char *name[1];
GList *l;
+ char *name[1];
int row;
gtk_clist_freeze (clist);
for (l = mail_config_get_signature_list (); l; l = l->next) {
- name[0] = ((MailConfigSignature *) l->data)->name;
- if (((MailConfigSignature *) l->data)->script)
- name[0] = g_strconcat (name[0], " ", _("[script]"), NULL);
- else
- name[0] = g_strdup (name[0]);
-
+ name[0] = e_utf8_to_gtk_string (GTK_WIDGET (clist), ((MailConfigSignature *) l->data)->name);
+ if (((MailConfigSignature *) l->data)->script) {
+ char *tmp;
+
+ tmp = name [0];
+ name[0] = g_strconcat (name[0], _(" [script]"), NULL);
+ g_free (tmp);
+ }
row = gtk_clist_append (clist, name);
gtk_clist_set_row_data (clist, row, l->data);
- g_free (name[0]);
+ g_free (name [0]);
}
gtk_clist_thaw (clist);
}
@@ -370,8 +379,6 @@ static void
url_requested (GtkHTML *html, const char *url, GtkHTMLStream *handle)
{
GtkHTMLStreamStatus status;
- char buf[128];
- ssize_t size;
int fd;
if (!strncmp (url, "file:", 5))
@@ -380,12 +387,14 @@ url_requested (GtkHTML *html, const char *url, GtkHTMLStream *handle)
fd = open (url, O_RDONLY);
status = GTK_HTML_STREAM_OK;
if (fd != -1) {
- while ((size = read (fd, buf, sizeof (buf)))) {
+ ssize_t size;
+ void *buf = alloca (1 << 7);
+ while ((size = read (fd, buf, 1 << 7))) {
if (size == -1) {
status = GTK_HTML_STREAM_ERROR;
break;
} else
- gtk_html_write (html, handle, buf, size);
+ gtk_html_write (html, handle, (const gchar *) buf, size);
}
} else
status = GTK_HTML_STREAM_ERROR;
@@ -396,18 +405,24 @@ url_requested (GtkHTML *html, const char *url, GtkHTMLStream *handle)
static void
sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailComposerPrefs *prefs)
{
- char *text;
+ char *tmp, *tmp1;
switch (event) {
case MAIL_CONFIG_SIG_EVENT_NAME_CHANGED:
d(printf ("accounts NAME CHANGED\n"));
- if (sig->script)
- text = g_strconcat (sig->name, " ", _("[script]"), NULL);
- else
- text = g_strdup (sig->name);
-
- gtk_clist_set_text (GTK_CLIST (prefs->sig_clist), sig->id, 0, text);
- g_free (text);
+ tmp = e_utf8_to_gtk_string (GTK_WIDGET (prefs->sig_clist), sig->name);
+ if (sig->script) {
+ tmp1 = tmp;
+ tmp = g_strconcat (tmp, _(" [script]"), NULL);
+ g_free (tmp1);
+ }
+ gtk_clist_set_text (GTK_CLIST (prefs->sig_clist), sig->id, 0, tmp);
+ g_free (tmp);
+ if (sig == sig_current_sig (prefs)) {
+ prefs->sig_switch = TRUE;
+ /*e_utf8_gtk_entry_set_text (GTK_ENTRY (prefs->sig_name), sig->name);*/
+ prefs->sig_switch = FALSE;
+ }
break;
case MAIL_CONFIG_SIG_EVENT_CONTENT_CHANGED:
d(printf ("accounts CONTENT CHANGED\n"));
@@ -650,9 +665,9 @@ spell_language_enable (GtkWidget *widget, MailComposerPrefs *prefs)
GList *sel = GTK_CLIST (prefs->language)->selection;
if (sel) {
- int row = GPOINTER_TO_INT (sel->data);
GdkPixmap *pmap = NULL;
GdkBitmap *bmap;
+ int row = GPOINTER_TO_INT (sel->data);
gtk_clist_get_pixmap (GTK_CLIST (prefs->language), row, 0, &pmap, &bmap);
if (pmap) {
@@ -678,7 +693,7 @@ spell_language_button_press (GtkWidget *widget, GdkEventButton *event, MailCompo
GdkPixmap *pmap = NULL;
GdkBitmap *bmap;
- g_signal_stop_emission_by_name (widget, "button_press_event");
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
gtk_clist_get_pixmap (GTK_CLIST (prefs->language), row, 0, &pmap, &bmap);
if (pmap)
@@ -707,9 +722,9 @@ spell_setup (MailComposerPrefs *prefs)
char *texts[2];
texts[0] = NULL;
- texts[1] = _(prefs->language_seq->_buffer[i].name);
+ texts[1] = _(prefs->language_seq->_buffer [i].name);
gtk_clist_append (GTK_CLIST (prefs->language), texts);
- gtk_clist_set_row_data (GTK_CLIST (prefs->language), i, prefs->language_seq->_buffer[i].abrev);
+ gtk_clist_set_row_data (GTK_CLIST (prefs->language), i, prefs->language_seq->_buffer [i].abrev);
}
}
gtk_clist_thaw (GTK_CLIST (prefs->language));
@@ -717,37 +732,40 @@ spell_setup (MailComposerPrefs *prefs)
spell_load_values (prefs);
spell_set_ui (prefs);
- glade_xml_signal_connect_data (prefs->gui, "spellColorSet", G_CALLBACK (spell_color_set), prefs);
+ glade_xml_signal_connect_data (prefs->gui, "spellColorSet", GTK_SIGNAL_FUNC (spell_color_set), prefs);
glade_xml_signal_connect_data (prefs->gui, "spellLanguageSelectRow",
- G_CALLBACK (spell_language_select_row), prefs);
+ GTK_SIGNAL_FUNC (spell_language_select_row), prefs);
glade_xml_signal_connect_data (prefs->gui, "spellLanguageUnselectRow",
- G_CALLBACK (spell_language_unselect_row), prefs);
- glade_xml_signal_connect_data (prefs->gui, "spellLanguageEnable", G_CALLBACK (spell_language_enable), prefs);
+ GTK_SIGNAL_FUNC (spell_language_unselect_row), prefs);
+ glade_xml_signal_connect_data (prefs->gui, "spellLanguageEnable", GTK_SIGNAL_FUNC (spell_language_enable), prefs);
- g_signal_connect (prefs->language, "button_press_event", G_CALLBACK (spell_language_button_press), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->language), "button_press_event", spell_language_button_press, prefs);
}
static gboolean
spell_setup_check_options (MailComposerPrefs *prefs)
{
+ BonoboObjectClient *dictionary_client;
GNOME_Spell_Dictionary dict;
CORBA_Environment ev;
char *dictionary_id;
-
+
dictionary_id = "OAFIID:GNOME_Spell_Dictionary:" SPELL_API_VERSION;
- dict = bonobo_activation_activate_from_id(dictionary_id, 0, NULL, NULL);
- if (dict == CORBA_OBJECT_NIL) {
+ dictionary_client = bonobo_object_activate (dictionary_id, 0);
+
+ if (!dictionary_client) {
g_warning ("Cannot activate %s", dictionary_id);
return FALSE;
}
+ dict = bonobo_object_corba_objref (BONOBO_OBJECT (dictionary_client));
CORBA_exception_init (&ev);
prefs->language_seq = GNOME_Spell_Dictionary_getLanguages (dict, &ev);
if (ev._major != CORBA_NO_EXCEPTION)
prefs->language_seq = NULL;
CORBA_exception_free (&ev);
-
+
if (prefs->language_seq == NULL)
return FALSE;
@@ -766,11 +784,8 @@ static void
mail_composer_prefs_construct (MailComposerPrefs *prefs)
{
GtkWidget *toplevel, *widget, *menu, *info_pixmap;
- GtkDialog *dialog;
GladeXML *gui;
- gboolean bool;
int style;
- char *buf;
char *names[][2] = {
{ "live_spell_check", "chkEnableSpellChecking" },
{ "magic_smileys_check", "chkAutoSmileys" },
@@ -780,9 +795,9 @@ mail_composer_prefs_construct (MailComposerPrefs *prefs)
prefs->gconf = gconf_client_get_default ();
- gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "composer_tab", NULL);
+ gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "composer_tab");
prefs->gui = gui;
- prefs->sig_script_gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "vbox_add_script_signature", NULL);
+ prefs->sig_script_gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "vbox_add_script_signature");
/* get our toplevel widget */
toplevel = glade_xml_get_widget (gui, "toplevel");
@@ -797,42 +812,37 @@ mail_composer_prefs_construct (MailComposerPrefs *prefs)
/* Default Behavior */
prefs->send_html = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkSendHTML"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/composer/send_html", NULL);
- gtk_toggle_button_set_active (prefs->send_html, bool);
- g_signal_connect (prefs->send_html, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->send_html, mail_config_get_send_html ());
+ gtk_signal_connect (GTK_OBJECT (prefs->send_html), "toggled",
+ toggle_button_toggled, prefs);
prefs->auto_smileys = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkAutoSmileys"));
- /* FIXME: set active? */
- g_signal_connect (prefs->auto_smileys, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->auto_smileys), "toggled",
+ toggle_button_toggled, prefs);
prefs->prompt_empty_subject = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptEmptySubject"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/prompts/empty_subject", NULL);
- gtk_toggle_button_set_active (prefs->prompt_empty_subject, bool);
- g_signal_connect (prefs->prompt_empty_subject, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->prompt_empty_subject, mail_config_get_prompt_empty_subject ());
+ gtk_signal_connect (GTK_OBJECT (prefs->prompt_empty_subject), "toggled",
+ toggle_button_toggled, prefs);
prefs->prompt_bcc_only = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptBccOnly"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/prompts/only_bcc", NULL);
- gtk_toggle_button_set_active (prefs->prompt_bcc_only, bool);
- g_signal_connect (prefs->prompt_bcc_only, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->prompt_bcc_only, mail_config_get_prompt_only_bcc ());
+ gtk_signal_connect (GTK_OBJECT (prefs->prompt_bcc_only), "toggled",
+ toggle_button_toggled, prefs);
prefs->charset = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuCharset"));
- buf = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/composer/charset", NULL);
- menu = e_charset_picker_new (buf ? buf : e_iconv_locale_charset ());
+ menu = e_charset_picker_new (mail_config_get_default_charset ());
gtk_option_menu_set_menu (prefs->charset, GTK_WIDGET (menu));
option_menu_connect (prefs->charset, prefs);
- g_free (buf);
-#warning "gtkhtml prop manager"
-#if 0
/* Spell Checking: GtkHTML part */
prefs->pman = GTK_HTML_PROPMANAGER (gtk_html_propmanager_new (NULL));
- g_signal_connect (prefs->pman, "changed", G_CALLBACK(toggle_button_toggled), prefs);
- g_object_ref ((prefs->pman));
+ gtk_signal_connect (GTK_OBJECT (prefs->pman), "changed", toggle_button_toggled, prefs);
+ gtk_object_ref (GTK_OBJECT (prefs->pman));
gtk_html_propmanager_set_names (prefs->pman, names);
gtk_html_propmanager_set_gui (prefs->pman, gui, NULL);
-#endif
-
+
/* Spell Checking: GNOME Spell part */
prefs->colour = GNOME_COLOR_PICKER (glade_xml_get_widget (gui, "colorpickerSpellCheckColor"));
prefs->language = GTK_CLIST (glade_xml_get_widget (gui, "clistSpellCheckLanguage"));
@@ -840,7 +850,7 @@ mail_composer_prefs_construct (MailComposerPrefs *prefs)
info_pixmap = glade_xml_get_widget (gui, "pixmapSpellInfo");
gtk_clist_set_column_justification (prefs->language, 0, GTK_JUSTIFY_RIGHT);
gtk_clist_set_column_auto_resize (prefs->language, 0, TRUE);
- gtk_image_set_from_file(GTK_IMAGE (info_pixmap), EVOLUTION_IMAGES "/info-bulb.png");
+ gnome_pixmap_load_file (GNOME_PIXMAP (info_pixmap), EVOLUTION_IMAGES "/info-bulb.png");
if (!spell_setup_check_options (prefs)) {
gtk_widget_hide (GTK_WIDGET (prefs->colour));
@@ -849,46 +859,48 @@ mail_composer_prefs_construct (MailComposerPrefs *prefs)
/* Forwards and Replies */
prefs->forward_style = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuForwardStyle"));
- style = gconf_client_get_int (prefs->gconf, "/apps/evolution/mail/format/forward_style", NULL);
- gtk_option_menu_set_history (prefs->forward_style, style);
+ gtk_option_menu_set_history (prefs->forward_style, mail_config_get_default_forward_style ());
style = 0;
gtk_container_foreach (GTK_CONTAINER (gtk_option_menu_get_menu (prefs->forward_style)),
attach_style_info, &style);
option_menu_connect (prefs->forward_style, prefs);
prefs->reply_style = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuReplyStyle"));
- style = gconf_client_get_int (prefs->gconf, "/apps/evolution/mail/format/reply_style", NULL);
- gtk_option_menu_set_history (prefs->reply_style, style);
+ gtk_option_menu_set_history (prefs->reply_style, mail_config_get_default_reply_style ());
style = 0;
gtk_container_foreach (GTK_CONTAINER (gtk_option_menu_get_menu (prefs->reply_style)),
attach_style_info, &style);
option_menu_connect (prefs->reply_style, prefs);
/* Signatures */
- dialog = (GtkDialog *) gtk_dialog_new ();
- prefs->sig_script_dialog = (GtkWidget *) dialog;
- gtk_dialog_add_buttons (dialog, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);
- gtk_window_set_title ((GtkWindow *) dialog, _("Add script signature"));
- g_signal_connect (dialog, "response", G_CALLBACK (sig_add_script_response), prefs);
- widget = glade_xml_get_widget (prefs->sig_script_gui, "vbox_add_script_signature");
- gtk_box_pack_start_defaults ((GtkBox *) dialog->vbox, widget);
-
prefs->sig_add = GTK_BUTTON (glade_xml_get_widget (gui, "cmdSignatureAdd"));
- g_signal_connect (prefs->sig_add, "clicked", G_CALLBACK (sig_add), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->sig_add), "clicked",
+ GTK_SIGNAL_FUNC (sig_add), prefs);
+
+ prefs->sig_script_dialog = gnome_dialog_new (_("Add script signature"),
+ _("Add Signature"), GNOME_STOCK_BUTTON_CANCEL, NULL);
+ gnome_dialog_close_hides (GNOME_DIALOG (prefs->sig_script_dialog), TRUE);
+ gtk_box_pack_start_defaults (GTK_BOX (GNOME_DIALOG (prefs->sig_script_dialog)->vbox),
+ glade_xml_get_widget (prefs->sig_script_gui, "vbox_add_script_signature"));
+ gnome_dialog_button_connect (GNOME_DIALOG (prefs->sig_script_dialog), 0, sig_add_script_add, prefs);
+ gnome_dialog_button_connect (GNOME_DIALOG (prefs->sig_script_dialog), 1, sig_add_script_cancel, prefs);
- glade_xml_signal_connect_data (gui, "cmdSignatureAddScriptClicked", G_CALLBACK(sig_add_script), prefs);
+ glade_xml_signal_connect_data (gui, "cmdSignatureAddScriptClicked", sig_add_script, prefs);
prefs->sig_edit = GTK_BUTTON (glade_xml_get_widget (gui, "cmdSignatureEdit"));
- g_signal_connect (prefs->sig_edit, "clicked", G_CALLBACK (sig_edit), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->sig_edit), "clicked",
+ GTK_SIGNAL_FUNC (sig_edit), prefs);
prefs->sig_delete = GTK_BUTTON (glade_xml_get_widget (gui, "cmdSignatureDelete"));
- g_signal_connect (prefs->sig_delete, "clicked", G_CALLBACK (sig_delete), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->sig_delete), "clicked",
+ GTK_SIGNAL_FUNC (sig_delete), prefs);
prefs->sig_clist = GTK_CLIST (glade_xml_get_widget (gui, "clistSignatures"));
sig_fill_clist (prefs->sig_clist);
- g_signal_connect (prefs->sig_clist, "select_row", G_CALLBACK (sig_row_select), prefs);
- g_signal_connect (prefs->sig_clist, "unselect_row", G_CALLBACK (sig_row_unselect), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->sig_clist), "select_row",
+ GTK_SIGNAL_FUNC (sig_row_select), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->sig_clist), "unselect_row",
+ GTK_SIGNAL_FUNC (sig_row_unselect), prefs);
if (mail_config_get_signature_list () == NULL) {
gtk_widget_set_sensitive ((GtkWidget *) prefs->sig_delete, FALSE);
gtk_widget_set_sensitive ((GtkWidget *) prefs->sig_edit, FALSE);
@@ -897,7 +909,7 @@ mail_composer_prefs_construct (MailComposerPrefs *prefs)
/* preview GtkHTML widget */
widget = glade_xml_get_widget (gui, "scrolled-sig");
prefs->sig_preview = (GtkHTML *) gtk_html_new ();
- g_signal_connect (prefs->sig_preview, "url_requested", G_CALLBACK (url_requested), NULL);
+ gtk_signal_connect (GTK_OBJECT (prefs->sig_preview), "url_requested", GTK_SIGNAL_FUNC (url_requested), NULL);
gtk_widget_show (GTK_WIDGET (prefs->sig_preview));
gtk_container_add (GTK_CONTAINER (widget), GTK_WIDGET (prefs->sig_preview));
@@ -913,7 +925,7 @@ mail_composer_prefs_new (void)
{
MailComposerPrefs *new;
- new = (MailComposerPrefs *) g_object_new (mail_composer_prefs_get_type (), NULL);
+ new = (MailComposerPrefs *) gtk_type_new (mail_composer_prefs_get_type ());
mail_composer_prefs_construct (new);
return (GtkWidget *) new;
@@ -930,45 +942,35 @@ mail_composer_prefs_apply (MailComposerPrefs *prefs)
/* General tab */
/* Default Behavior */
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/composer/send_html",
- gtk_toggle_button_get_active (prefs->send_html), NULL);
-
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/prompts/empty_subject",
- gtk_toggle_button_get_active (prefs->prompt_empty_subject), NULL);
-
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/prompts/only_bcc",
- gtk_toggle_button_get_active (prefs->prompt_bcc_only), NULL);
+ mail_config_set_send_html (gtk_toggle_button_get_active (prefs->send_html));
+ mail_config_set_prompt_empty_subject (gtk_toggle_button_get_active (prefs->prompt_empty_subject));
+ mail_config_set_prompt_only_bcc (gtk_toggle_button_get_active (prefs->prompt_bcc_only));
menu = gtk_option_menu_get_menu (prefs->charset);
- if (!(string = e_charset_picker_get_charset (menu)))
- string = g_strdup (e_iconv_locale_charset ());
-
- gconf_client_set_string (prefs->gconf, "/apps/evolution/mail/composer/charset", string, NULL);
- g_free (string);
+ string = e_charset_picker_get_charset (menu);
+ if (string) {
+ mail_config_set_default_charset (string);
+ g_free (string);
+ }
/* Spell Checking */
-#warning "gtkhtml propmanager"
-#if 0
gtk_html_propmanager_apply (prefs->pman);
-#endif
spell_apply (prefs);
/* Forwards and Replies */
menu = gtk_option_menu_get_menu (prefs->forward_style);
item = gtk_menu_get_active (GTK_MENU (menu));
- val = GPOINTER_TO_INT (g_object_get_data ((GObject *) item, "style"));
- gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/format/forward_style", val, NULL);
+ val = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (item), "style"));
+ mail_config_set_default_forward_style (val);
menu = gtk_option_menu_get_menu (prefs->reply_style);
item = gtk_menu_get_active (GTK_MENU (menu));
- val = GPOINTER_TO_INT (g_object_get_data ((GObject *) item, "style"));
- gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/format/reply_style", val, NULL);
+ val = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (item), "style"));
+ mail_config_set_default_reply_style (val);
/* Keyboard Shortcuts */
/* FIXME: implement me */
/* Signatures */
/* FIXME: implement me */
-
- gconf_client_suggest_sync (prefs->gconf, NULL);
}
diff --git a/mail/mail-display.c b/mail/mail-display.c
index 88fb1dc6eb..d4b213a475 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -33,16 +33,19 @@
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
-#include <string.h>
+#include <libgnorba/gnorba.h>
+#include <libgnomevfs/gnome-vfs-mime-info.h>
#include <libgnomevfs/gnome-vfs-mime-handlers.h>
#include <libgnomevfs/gnome-vfs.h>
#include <bonobo/bonobo-control-frame.h>
#include <bonobo/bonobo-stream-memory.h>
+#include <bonobo/bonobo-ui-toolbar-icon.h>
#include <bonobo/bonobo-widget.h>
#include <bonobo/bonobo-socket.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk-pixbuf/gdk-pixbuf-loader.h>
#include <gal/util/e-util.h>
+#include <gal/util/e-unicode-i18n.h>
#include <gal/widgets/e-popup-menu.h>
#include <gal/widgets/e-unicode.h>
#include <gtk/gtkinvisible.h>
@@ -54,7 +57,6 @@
#include <gtkhtml/htmlinterval.h>
#include <gtkhtml/gtkhtml-stream.h>
#include <libsoup/soup-message.h>
-#include <libgnome/gnome-program.h>
#include "e-util/e-html-utils.h"
#include "e-util/e-mktemp.h"
@@ -173,25 +175,31 @@ write_data_written(CamelMimePart *part, char *name, int done, void *data)
static gboolean
write_data_to_file (CamelMimePart *part, const char *name, gboolean unique)
{
- int fd, ret = FALSE;
+ int fd;
+ int ret = FALSE;
g_return_val_if_fail (CAMEL_IS_MIME_PART (part), FALSE);
fd = open (name, O_WRONLY | O_CREAT | O_EXCL, 0666);
if (fd == -1 && errno == EEXIST && !unique) {
GtkWidget *dlg;
- int button;
+ GtkWidget *text;
+ char *msg;
- dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
- _("File `%s' already exists.\nOverwrite it?"),
- name);
+ dlg = gnome_dialog_new (_("Overwrite file?"),
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
- g_object_set (dlg, "title", _("Overwrite file?"), "allow_grow", TRUE, NULL);
- button = gtk_dialog_run ((GtkDialog *) dlg);
- gtk_widget_destroy (dlg);
- g_object_unref (dlg);
+ msg = g_strdup_printf (_("File `%s' already exists.\nOverwrite it?"), name);
+ text = gtk_label_new (msg);
+ g_free (msg);
- if (button != GTK_RESPONSE_YES)
+ gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dlg)->vbox), text, TRUE, TRUE, 4);
+ gtk_window_set_policy (GTK_WINDOW (dlg), FALSE, TRUE, FALSE);
+ gtk_widget_show (text);
+
+ if (gnome_dialog_run_and_close (GNOME_DIALOG (dlg)) != 0)
return FALSE;
}
@@ -245,7 +253,7 @@ save_data_cb (GtkWidget *widget, gpointer user_data)
FALSE);
/* preserve the pathname */
- dir = g_path_get_dirname (gtk_file_selection_get_filename (file_select));
+ dir = g_dirname (gtk_file_selection_get_filename (file_select));
mail_config_set_last_filesel_dir (dir);
g_free (dir);
@@ -253,9 +261,9 @@ save_data_cb (GtkWidget *widget, gpointer user_data)
}
static void
-save_destroy_cb (CamelMimePart *part, GObject *deadbeef)
+save_destroy_cb (GtkWidget *widget, CamelMimePart *part)
{
- camel_object_unref (part);
+ camel_object_unref (CAMEL_OBJECT (part));
}
static gboolean
@@ -292,9 +300,9 @@ mail_display_jump_to_anchor (MailDisplay *md, const char *url)
static void
on_link_clicked (GtkHTML *html, const char *url, MailDisplay *md)
{
- if (!g_ascii_strncasecmp (url, "news:", 5) || !g_ascii_strncasecmp (url, "nntp:", 5)) {
+ if (!g_strncasecmp (url, "news:", 5) || !g_strncasecmp (url, "nntp:", 5)) {
g_warning ("Can't handle news URLs yet.");
- } else if (!g_ascii_strncasecmp (url, "mailto:", 7)) {
+ } else if (!g_strncasecmp (url, "mailto:", 7)) {
send_to_url (url);
} else if (*url == '#') {
mail_display_jump_to_anchor (md, url);
@@ -307,7 +315,7 @@ static void
save_part (CamelMimePart *part)
{
GtkFileSelection *file_select;
- char *filename, *base;
+ char *filename;
g_return_if_fail (part != NULL);
camel_object_ref (CAMEL_OBJECT (part));
@@ -318,28 +326,26 @@ save_part (CamelMimePart *part)
gtk_file_selection_new (_("Save Attachment")));
gtk_file_selection_set_filename (file_select, filename);
/* set the GtkEntry with the locale filename by breaking abstraction */
- base = g_path_get_basename(filename);
- gtk_entry_set_text(GTK_ENTRY (file_select->selection_entry), base);
- g_free(base);
+ e_utf8_gtk_entry_set_text (GTK_ENTRY (file_select->selection_entry), g_basename (filename));
g_free (filename);
- g_signal_connect(file_select->ok_button, "clicked",
- G_CALLBACK (save_data_cb), part);
- /* FIXME: deprecated */
+ gtk_signal_connect (GTK_OBJECT (file_select->ok_button), "clicked",
+ GTK_SIGNAL_FUNC (save_data_cb), part);
gtk_signal_connect_object (GTK_OBJECT (file_select->cancel_button),
"clicked",
- G_CALLBACK (gtk_widget_destroy),
+ GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (file_select));
- g_object_weak_ref ((GObject *) file_select, (GWeakNotify) save_destroy_cb, part);
-
+ gtk_signal_connect (GTK_OBJECT (file_select), "destroy",
+ GTK_SIGNAL_FUNC (save_destroy_cb), part);
+
gtk_widget_show (GTK_WIDGET (file_select));
}
static void
save_cb (GtkWidget *widget, gpointer user_data)
{
- CamelMimePart *part = g_object_get_data((user_data), "CamelMimePart");
+ CamelMimePart *part = gtk_object_get_data (GTK_OBJECT (user_data), "CamelMimePart");
save_part (part);
}
@@ -347,18 +353,18 @@ save_cb (GtkWidget *widget, gpointer user_data)
static void
launch_cb (GtkWidget *widget, gpointer user_data)
{
- CamelMimePart *part = g_object_get_data(user_data, "CamelMimePart");
+ CamelMimePart *part = gtk_object_get_data (user_data, "CamelMimePart");
MailMimeHandler *handler;
GList *apps, *children, *c;
GnomeVFSMimeApplication *app;
char *command, *filename;
const char *tmpdir;
- handler = mail_lookup_handler (g_object_get_data(user_data, "mime_type"));
+ handler = mail_lookup_handler (gtk_object_get_data (user_data, "mime_type"));
g_return_if_fail (handler != NULL && handler->applications != NULL);
/* Yum. Too bad EPopupMenu doesn't allow per-item closures. */
- children = gtk_container_get_children(GTK_CONTAINER (widget->parent));
+ children = gtk_container_children (GTK_CONTAINER (widget->parent));
g_return_if_fail (children != NULL && children->next != NULL && children->next->next != NULL);
for (c = children->next->next, apps = handler->applications; c && apps; c = c->next, apps = apps->next) {
@@ -372,29 +378,21 @@ launch_cb (GtkWidget *widget, gpointer user_data)
tmpdir = e_mkdtemp ("evolution.XXXXXX");
if (!tmpdir) {
- GtkDialog *dialogue;
-
- dialogue = (GtkDialog *)gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_RESPONSE_CLOSE,
- _("Could not create temporary directory: %s"),
- g_strerror (errno));
- /* FIXME: this should be async */
- gtk_dialog_run(dialogue);
- gtk_widget_destroy((GtkWidget *)dialogue);
+ char *msg = g_strdup_printf (_("Could not create temporary directory: %s"),
+ g_strerror (errno));
+ gnome_error_dialog (msg);
+ g_free (msg);
return;
}
filename = make_safe_filename (tmpdir, part);
if (!write_data_to_file (part, filename, TRUE)) {
- GtkDialog *dialogue;
-
- dialogue = (GtkDialog *)gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_RESPONSE_CLOSE,
- _("Could not create temporary file '%s': %s"),
- filename, g_strerror (errno));
- /* FIXME: this should be async */
- gtk_dialog_run(dialogue);
- gtk_widget_destroy((GtkWidget *)dialogue);
- g_free(filename);
+ char *msg = g_strdup_printf (_("Could not create temporary file '%s': %s"),
+ filename, g_strerror (errno));
+ gnome_error_dialog (msg);
+ g_free (filename);
+ g_free (msg);
return;
}
@@ -410,8 +408,8 @@ launch_cb (GtkWidget *widget, gpointer user_data)
static void
inline_cb (GtkWidget *widget, gpointer user_data)
{
- MailDisplay *md = g_object_get_data(user_data, "MailDisplay");
- CamelMimePart *part = g_object_get_data(user_data, "CamelMimePart");
+ MailDisplay *md = gtk_object_get_data (user_data, "MailDisplay");
+ CamelMimePart *part = gtk_object_get_data (user_data, "CamelMimePart");
mail_part_toggle_displayed (part, md);
mail_display_queue_redisplay (md);
@@ -422,7 +420,7 @@ button_press (GtkWidget *widget, CamelMimePart *part)
{
MailDisplay *md;
- md = g_object_get_data(G_OBJECT(widget), "MailDisplay");
+ md = gtk_object_get_data (GTK_OBJECT (widget), "MailDisplay");
if (md == NULL) {
g_warning ("No MailDisplay on button!");
return;
@@ -436,9 +434,9 @@ static gboolean
pixmap_press (GtkWidget *widget, GdkEventButton *event, EScrollFrame *user_data)
{
EPopupMenu *menu;
- EPopupMenu save_item = E_POPUP_ITEM (N_("Save Attachment..."), G_CALLBACK (save_cb), 0);
- EPopupMenu view_item = E_POPUP_ITEM (N_("View Inline"), G_CALLBACK (inline_cb), 2);
- EPopupMenu open_item = E_POPUP_ITEM (N_("Open in %s..."), G_CALLBACK (launch_cb), 1);
+ EPopupMenu save_item = E_POPUP_ITEM (N_("Save Attachment..."), GTK_SIGNAL_FUNC (save_cb), 0);
+ EPopupMenu view_item = E_POPUP_ITEM (N_("View Inline"), GTK_SIGNAL_FUNC (inline_cb), 2);
+ EPopupMenu open_item = E_POPUP_ITEM (N_("Open in %s..."), GTK_SIGNAL_FUNC (launch_cb), 1);
MailDisplay *md;
CamelMimePart *part;
MailMimeHandler *handler;
@@ -460,11 +458,12 @@ pixmap_press (GtkWidget *widget, GdkEventButton *event, EScrollFrame *user_data)
/* Stop the signal, since we don't want the button's class method to
mess up our popup. */
- g_signal_stop_emission_by_name(widget, "button_press_event");
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "button_press_event");
+
+ part = gtk_object_get_data (GTK_OBJECT (widget), "CamelMimePart");
+ handler = mail_lookup_handler (gtk_object_get_data (GTK_OBJECT (widget),
+ "mime_type"));
- part = g_object_get_data(G_OBJECT(widget), "CamelMimePart");
- handler = mail_lookup_handler (g_object_get_data(G_OBJECT(widget), "mime_type"));
-
if (handler && handler->applications)
nitems = g_list_length (handler->applications) + 2;
else
@@ -478,22 +477,26 @@ pixmap_press (GtkWidget *widget, GdkEventButton *event, EScrollFrame *user_data)
/* Inline view item */
memcpy (&menu[1], &view_item, sizeof (menu[1]));
if (handler && handler->builtin) {
- md = g_object_get_data(G_OBJECT(widget), "MailDisplay");
-
+ md = gtk_object_get_data (GTK_OBJECT (widget), "MailDisplay");
+
if (!mail_part_is_displayed_inline (part, md)) {
if (handler->component) {
- Bonobo_ActivationProperty *prop;
+ OAF_Property *prop;
char *name;
- prop = bonobo_server_info_prop_find(handler->component, "name");
+ prop = oaf_server_info_prop_find (
+ handler->component, "name");
if (!prop) {
- prop = bonobo_server_info_prop_find(handler->component, "description");
+ prop = oaf_server_info_prop_find (
+ handler->component,
+ "description");
}
- if (prop && prop->v._d == Bonobo_ACTIVATION_P_STRING)
+ if (prop && prop->v._d == OAF_P_STRING)
name = prop->v._u.value_string;
else
name = "bonobo";
- menu[1].name = g_strdup_printf(_("View Inline (via %s)"), name);
+ menu[1].name = g_strdup_printf (
+ _("View Inline (via %s)"), name);
} else
menu[1].name = g_strdup (_(menu[1].name));
} else
@@ -517,7 +520,8 @@ pixmap_press (GtkWidget *widget, GdkEventButton *event, EScrollFrame *user_data)
}
} else {
memcpy (&menu[2], &open_item, sizeof (menu[2]));
- menu[2].name = g_strdup_printf (_(menu[2].name), _("External Viewer"));
+ menu[2].name = g_strdup_printf (_(menu[2].name),
+ _("External Viewer"));
mask |= 1;
}
@@ -536,43 +540,48 @@ pixbuf_for_mime_type (const char *mime_type)
char *filename = NULL;
GdkPixbuf *pixbuf = NULL;
- icon_name = gnome_vfs_mime_get_icon(mime_type);
-
+ /* GnomeVFS changed the key from icon-filename to
+ icon_filename, so check icon_filename first and if that
+ fails, fall back to the old key name */
+ if (!(icon_name = gnome_vfs_mime_get_value (mime_type, "icon_filename")))
+ icon_name = gnome_vfs_mime_get_value (mime_type, "icon-filename");
+
if (icon_name) {
if (*icon_name == '/') {
- pixbuf = gdk_pixbuf_new_from_file (icon_name, NULL);
+ pixbuf = gdk_pixbuf_new_from_file (icon_name);
if (pixbuf)
return pixbuf;
}
- filename = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, icon_name, TRUE, NULL);
+ filename = gnome_pixmap_file (icon_name);
if (!filename) {
char *fm_icon;
fm_icon = g_strdup_printf ("nautilus/%s", icon_name);
- filename = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, fm_icon, TRUE, NULL);
+ filename = gnome_pixmap_file (fm_icon);
if (!filename) {
g_free (fm_icon);
fm_icon = g_strdup_printf ("mc/%s", icon_name);
- filename = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, fm_icon, TRUE, NULL);
+ filename = gnome_pixmap_file (fm_icon);
}
g_free (fm_icon);
}
if (filename) {
- pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
+ pixbuf = gdk_pixbuf_new_from_file (filename);
g_free (filename);
}
}
if (!pixbuf) {
- filename = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, "gnome-unknown.png", TRUE, NULL);
+ filename = gnome_pixmap_file ("gnome-unknown.png");
if (filename) {
- pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
+ pixbuf = gdk_pixbuf_new_from_file (filename);
g_free (filename);
} else {
g_warning ("Could not get any icon for %s!",mime_type);
- pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)empty_xpm);
+ pixbuf = gdk_pixbuf_new_from_xpm_data (
+ (const char **)empty_xpm);
}
}
@@ -585,7 +594,7 @@ pixbuf_uncache (gpointer key)
GdkPixbuf *pixbuf;
pixbuf = g_hash_table_lookup (thumbnail_cache, key);
- g_object_unref (pixbuf);
+ gdk_pixbuf_unref (pixbuf);
g_hash_table_remove (thumbnail_cache, key);
g_free (key);
return FALSE;
@@ -606,19 +615,20 @@ pixbuf_gen_idle (struct _PixbufLoader *pbl)
width = gdk_pixbuf_get_width (mini);
height = gdk_pixbuf_get_height (mini);
- gtk_image_set_from_pixbuf((GtkImage *)pbl->pixmap, mini);
- gtk_widget_set_size_request (pbl->pixmap, width, height);
+ bonobo_ui_toolbar_icon_set_pixbuf (
+ BONOBO_UI_TOOLBAR_ICON (pbl->pixmap), mini);
+ gtk_widget_set_usize (pbl->pixmap, width, height);
/* Restart the cache-cleaning timer */
g_source_remove_by_user_data (orig_key);
g_timeout_add (5 * 60 * 1000, pixbuf_uncache, orig_key);
if (pbl->loader) {
- gdk_pixbuf_loader_close (pbl->loader, NULL);
- g_object_unref (pbl->loader);
- camel_object_unref (pbl->mstream);
+ gdk_pixbuf_loader_close (pbl->loader);
+ gtk_object_destroy (GTK_OBJECT (pbl->loader));
+ camel_object_unref (CAMEL_OBJECT (pbl->mstream));
}
- g_signal_handler_disconnect((pbl->eb), pbl->destroy_id);
+ gtk_signal_disconnect (GTK_OBJECT (pbl->eb), pbl->destroy_id);
g_free (pbl->type);
g_free (pbl->cid);
g_free (pbl);
@@ -631,11 +641,11 @@ pixbuf_gen_idle (struct _PixbufLoader *pbl)
if (!GTK_IS_WIDGET (pbl->pixmap)) {
/* Widget has died */
if (pbl->mstream)
- camel_object_unref (pbl->mstream);
+ camel_object_unref (CAMEL_OBJECT (pbl->mstream));
if (pbl->loader) {
- gdk_pixbuf_loader_close (pbl->loader, NULL);
- g_object_unref (pbl->loader);
+ gdk_pixbuf_loader_close (pbl->loader);
+ gtk_object_destroy (GTK_OBJECT (pbl->loader));
}
g_free (pbl->type);
@@ -650,7 +660,7 @@ pixbuf_gen_idle (struct _PixbufLoader *pbl)
len = camel_stream_read (pbl->mstream, tmp, 4096);
if (len > 0) {
- error = !gdk_pixbuf_loader_write (pbl->loader, tmp, len, NULL);
+ error = !gdk_pixbuf_loader_write (pbl->loader, tmp, len);
if (!error)
return TRUE;
} else if (!camel_stream_eos (pbl->mstream))
@@ -661,7 +671,7 @@ pixbuf_gen_idle (struct _PixbufLoader *pbl)
if (pbl->type)
pixbuf = pixbuf_for_mime_type (pbl->type);
else
- pixbuf = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/pgp-signature-nokey.png", NULL);
+ pixbuf = gdk_pixbuf_new_from_file (EVOLUTION_ICONSDIR "/pgp-signature-nokey.png");
} else
pixbuf = gdk_pixbuf_loader_get_pixbuf (pbl->loader);
@@ -682,20 +692,22 @@ pixbuf_gen_idle (struct _PixbufLoader *pbl)
}
}
- mini = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR);
+ mini = gdk_pixbuf_scale_simple (pixbuf, width, height,
+ GDK_INTERP_BILINEAR);
if (error || !pbl->mstream)
- g_object_unref (pixbuf);
- gtk_image_set_from_pixbuf((GtkImage *)pbl->pixmap, mini);
+ gdk_pixbuf_unref (pixbuf);
+ bonobo_ui_toolbar_icon_set_pixbuf (
+ BONOBO_UI_TOOLBAR_ICON (pbl->pixmap), mini);
/* Add the pixbuf to the cache */
g_hash_table_insert (thumbnail_cache, pbl->cid, mini);
g_timeout_add (5 * 60 * 1000, pixbuf_uncache, pbl->cid);
- g_signal_handler_disconnect(pbl->eb, pbl->destroy_id);
+ gtk_signal_disconnect (GTK_OBJECT (pbl->eb), pbl->destroy_id);
if (pbl->loader) {
- gdk_pixbuf_loader_close (pbl->loader, NULL);
- g_object_unref(pbl->loader);
- camel_object_unref (pbl->mstream);
+ gdk_pixbuf_loader_close (pbl->loader);
+ gtk_object_unref (GTK_OBJECT (pbl->loader));
+ camel_object_unref (CAMEL_OBJECT (pbl->mstream));
}
g_free (pbl->type);
g_free (pbl);
@@ -711,11 +723,11 @@ embeddable_destroy_cb (GtkObject *embeddable,
{
g_idle_remove_by_data (pbl);
if (pbl->mstream)
- camel_object_unref (pbl->mstream);
+ camel_object_unref (CAMEL_OBJECT (pbl->mstream));
if (pbl->loader) {
- gdk_pixbuf_loader_close (pbl->loader, NULL);
- g_object_unref (pbl->loader);
+ gdk_pixbuf_loader_close (pbl->loader);
+ gtk_object_destroy (GTK_OBJECT (pbl->loader));
}
g_free (pbl->type);
@@ -735,8 +747,6 @@ get_embedded_for_component (const char *iid, MailDisplay *md)
*/
embedded = bonobo_widget_new_control (iid, NULL);
if (embedded == NULL) {
-#warning "what about bonobo_widget_new_subdoc?"
-#if 0
/*
* No control, try an embeddable instead.
*/
@@ -752,7 +762,6 @@ get_embedded_for_component (const char *iid, MailDisplay *md)
return embedded;
}
-#endif
}
if (embedded == NULL)
@@ -826,14 +835,14 @@ save_url (MailDisplay *md, const char *url)
memstream = camel_stream_mem_new_with_buffer (ba->data, ba->len);
wrapper = camel_data_wrapper_new ();
camel_data_wrapper_construct_from_stream (wrapper, memstream);
- camel_object_unref (memstream);
+ camel_object_unref (CAMEL_OBJECT (memstream));
part = camel_mime_part_new ();
camel_medium_set_content_object (CAMEL_MEDIUM (part), wrapper);
- camel_object_unref (wrapper);
+ camel_object_unref (CAMEL_OBJECT (wrapper));
camel_mime_part_set_filename (part, name);
}
} else {
- camel_object_ref (part);
+ camel_object_ref (CAMEL_OBJECT (part));
}
if (part) {
@@ -847,7 +856,7 @@ save_url (MailDisplay *md, const char *url)
}
save_part (part);
- camel_object_unref (part);
+ camel_object_unref (CAMEL_OBJECT (part));
return NULL;
}
@@ -870,7 +879,7 @@ drag_data_get_cb (GtkWidget *widget,
switch (info) {
case DND_TARGET_TYPE_TEXT_URI_LIST:
/* Kludge around Nautilus requesting the same data many times */
- uri_list = g_object_get_data(G_OBJECT(widget), "uri-list");
+ uri_list = gtk_object_get_data (GTK_OBJECT (widget), "uri-list");
if (uri_list) {
gtk_selection_data_set (selection_data, selection_data->target, 8,
uri_list, strlen (uri_list));
@@ -879,18 +888,15 @@ drag_data_get_cb (GtkWidget *widget,
tmpdir = e_mkdtemp ("drag-n-drop-XXXXXX");
if (!tmpdir) {
- GtkDialog *dialogue;
-
- dialogue = (GtkDialog *)gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_RESPONSE_CLOSE,
- _("Could not create temporary directory: %s"),
- g_strerror (errno));
- /* FIXME: this should be async */
- gtk_dialog_run(dialogue);
- gtk_widget_destroy((GtkWidget *)dialogue);
+ char *msg;
+
+ msg = g_strdup_printf (_("Could not create temporary directory: %s"),
+ g_strerror (errno));
+ gnome_error_dialog (msg);
+ g_free (msg);
}
filename = camel_mime_part_get_filename (part);
- /* This is the default filename used for dnd temporary target of attachment */
if (!filename)
filename = _("Unknown");
@@ -904,7 +910,7 @@ drag_data_get_cb (GtkWidget *widget,
gtk_selection_data_set (selection_data, selection_data->target, 8,
uri_list, strlen (uri_list));
- g_object_set_data_full(G_OBJECT(widget), "uri-list", uri_list, g_free);
+ gtk_object_set_data_full (GTK_OBJECT (widget), "uri-list", uri_list, g_free);
break;
case DND_TARGET_TYPE_PART_MIME_TYPE:
if (header_content_type_is (part->content_type, "text", "*")) {
@@ -918,16 +924,19 @@ drag_data_get_cb (GtkWidget *widget,
}
} else {
CamelDataWrapper *wrapper;
- CamelStreamMem *cstream;
+ CamelStream *cstream;
+ GByteArray *ba;
+
+ ba = g_byte_array_new ();
- cstream = (CamelStreamMem *)camel_stream_mem_new();
+ cstream = camel_stream_mem_new_with_byte_array (ba);
wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (part));
- camel_data_wrapper_write_to_stream (wrapper, (CamelStream *)cstream);
+ camel_data_wrapper_write_to_stream (wrapper, cstream);
gtk_selection_data_set (selection_data, selection_data->target, 8,
- cstream->buffer->data, cstream->buffer->len);
+ ba->data, ba->len);
- camel_object_unref (cstream);
+ camel_object_unref (CAMEL_OBJECT (cstream));
}
break;
default:
@@ -942,10 +951,10 @@ drag_data_delete_cb (GtkWidget *widget,
{
char *uri_list;
- uri_list = g_object_get_data(G_OBJECT(widget), "uri-list");
+ uri_list = gtk_object_get_data (GTK_OBJECT (widget), "uri-list");
if (uri_list) {
unlink (uri_list + 7);
- g_object_set_data(G_OBJECT(widget), "uri-list", NULL);
+ gtk_object_set_data (GTK_OBJECT (widget), "uri-list", NULL);
}
}
@@ -958,7 +967,7 @@ do_attachment_header (GtkHTML *html, GtkHTMLEmbedded *eb,
struct _PixbufLoader *pbl;
pbl = g_new0 (struct _PixbufLoader, 1);
- if (g_ascii_strncasecmp (eb->type, "image/", 6) == 0) {
+ if (g_strncasecmp (eb->type, "image/", 6) == 0) {
CamelDataWrapper *content;
content = camel_medium_get_content_object (CAMEL_MEDIUM (part));
@@ -970,23 +979,25 @@ do_attachment_header (GtkHTML *html, GtkHTMLEmbedded *eb,
}
pbl->type = g_strdup (eb->type);
pbl->cid = g_strdup (eb->classid + 6);
- pbl->pixmap = gtk_image_new();
- gtk_widget_set_size_request (pbl->pixmap, 24, 24);
+ pbl->pixmap = bonobo_ui_toolbar_icon_new ();
+ gtk_widget_set_usize (pbl->pixmap, 24, 24);
pbl->eb = eb;
- pbl->destroy_id = g_signal_connect(G_OBJECT(eb), "destroy", G_CALLBACK(embeddable_destroy_cb), pbl);
+ pbl->destroy_id = gtk_signal_connect (GTK_OBJECT (eb), "destroy",
+ embeddable_destroy_cb, pbl);
- g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc)pixbuf_gen_idle, pbl, NULL);
+ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc)pixbuf_gen_idle,
+ pbl, NULL);
mainbox = gtk_hbox_new (FALSE, 0);
button = gtk_button_new ();
GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
- g_object_set_data(G_OBJECT(button), "MailDisplay", md);
+ gtk_object_set_data (GTK_OBJECT (button), "MailDisplay", md);
handler = mail_lookup_handler (eb->type);
if (handler && handler->builtin)
- g_signal_connect (button, "clicked",
- G_CALLBACK (button_press), part);
+ gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (button_press), part);
/* Drag & Drop */
drag_types[DND_TARGET_TYPE_PART_MIME_TYPE].target = header_content_type_simple(part->content_type);
@@ -995,20 +1006,21 @@ do_attachment_header (GtkHTML *html, GtkHTMLEmbedded *eb,
gtk_drag_source_set (button, GDK_BUTTON1_MASK,
drag_types, num_drag_types,
GDK_ACTION_COPY);
- g_signal_connect(G_OBJECT(button), "drag-data-get", G_CALLBACK(drag_data_get_cb), part);
- g_signal_connect(G_OBJECT(button), "drag-data-delete", G_CALLBACK(drag_data_delete_cb), part);
+ gtk_signal_connect (GTK_OBJECT (button), "drag-data-get",
+ drag_data_get_cb, part);
+ gtk_signal_connect (GTK_OBJECT (button), "drag-data-delete",
+ drag_data_delete_cb, part);
g_free (drag_types[DND_TARGET_TYPE_PART_MIME_TYPE].target);
drag_types[DND_TARGET_TYPE_PART_MIME_TYPE].target = NULL;
hbox = gtk_hbox_new (FALSE, 2);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 2);
-
- /* should this be a gtk_arrow? */
+
if (handler && mail_part_is_displayed_inline (part, md))
- arrow = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_BUTTON);
+ arrow = gnome_stock_new_with_icon (GNOME_STOCK_PIXMAP_DOWN);
else
- arrow = gtk_image_new_from_stock(GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_BUTTON);
+ arrow = gnome_stock_new_with_icon (GNOME_STOCK_PIXMAP_FORWARD);
gtk_box_pack_start (GTK_BOX (hbox), arrow, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox), pbl->pixmap, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (button), hbox);
@@ -1019,11 +1031,13 @@ do_attachment_header (GtkHTML *html, GtkHTMLEmbedded *eb,
gtk_arrow_new (GTK_ARROW_DOWN,
GTK_SHADOW_ETCHED_IN));
- g_object_set_data(G_OBJECT(popup), "MailDisplay", md);
- g_object_set_data(G_OBJECT(popup), "CamelMimePart", part);
- g_object_set_data_full(G_OBJECT(popup), "mime_type", g_strdup (eb->type), (GDestroyNotify)g_free);
+ gtk_object_set_data (GTK_OBJECT (popup), "MailDisplay", md);
+ gtk_object_set_data (GTK_OBJECT (popup), "CamelMimePart", part);
+ gtk_object_set_data_full (GTK_OBJECT (popup), "mime_type",
+ g_strdup (eb->type), (GDestroyNotify)g_free);
- g_signal_connect(popup, "button_press_event", G_CALLBACK (pixmap_press), md->scroll);
+ gtk_signal_connect (GTK_OBJECT (popup), "button_press_event",
+ GTK_SIGNAL_FUNC (pixmap_press), md->scroll);
gtk_box_pack_start (GTK_BOX (mainbox), button, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (mainbox), popup, TRUE, TRUE, 0);
@@ -1039,12 +1053,13 @@ do_external_viewer (GtkHTML *html, GtkHTMLEmbedded *eb,
CamelMimePart *part, MailDisplay *md)
{
CamelDataWrapper *wrapper;
- Bonobo_ServerInfo *component;
+ OAF_ServerInfo *component;
GtkWidget *embedded;
+ BonoboObjectClient *server;
Bonobo_PersistStream persist;
CORBA_Environment ev;
GByteArray *ba;
- CamelStreamMem *cstream;
+ CamelStream *cstream;
BonoboStream *bstream;
component = gnome_vfs_mime_get_default_component (eb->type);
@@ -1056,26 +1071,29 @@ do_external_viewer (GtkHTML *html, GtkHTMLEmbedded *eb,
if (!embedded)
return FALSE;
- persist = (Bonobo_PersistStream) Bonobo_Unknown_queryInterface(bonobo_widget_get_objref (BONOBO_WIDGET (embedded)),
- "IDL:Bonobo/PersistStream:1.0", NULL);
+ server = bonobo_widget_get_server (BONOBO_WIDGET (embedded));
+ persist = (Bonobo_PersistStream) bonobo_object_client_query_interface (
+ server, "IDL:Bonobo/PersistStream:1.0", NULL);
if (persist == CORBA_OBJECT_NIL) {
gtk_object_sink (GTK_OBJECT (embedded));
return FALSE;
}
/* Write the data to a CamelStreamMem... */
- cstream = (CamelStreamMem *)camel_stream_mem_new();
+ ba = g_byte_array_new ();
+ cstream = camel_stream_mem_new_with_byte_array (ba);
wrapper = camel_medium_get_content_object (CAMEL_MEDIUM (part));
- camel_data_wrapper_write_to_stream (wrapper, (CamelStream *)cstream);
+ camel_data_wrapper_write_to_stream (wrapper, cstream);
/* ...convert the CamelStreamMem to a BonoboStreamMem... */
- bstream = bonobo_stream_mem_create (cstream->buffer->data, cstream->buffer->len, TRUE, FALSE);
- camel_object_unref (cstream);
+ bstream = bonobo_stream_mem_create (ba->data, ba->len, TRUE, FALSE);
+ camel_object_unref (CAMEL_OBJECT (cstream));
/* ...and hydrate the PersistStream from the BonoboStream. */
CORBA_exception_init (&ev);
Bonobo_PersistStream_load (persist,
- bonobo_object_corba_objref(BONOBO_OBJECT (bstream)),
+ bonobo_object_corba_objref (
+ BONOBO_OBJECT (bstream)),
eb->type, &ev);
bonobo_object_unref (BONOBO_OBJECT (bstream));
Bonobo_Unknown_unref (persist, &ev);
@@ -1104,17 +1122,20 @@ do_signature (GtkHTML *html, GtkHTMLEmbedded *eb,
pbl = g_new0 (struct _PixbufLoader, 1);
pbl->type = NULL;
pbl->cid = g_strdup (eb->classid);
- pbl->pixmap = gtk_image_new();
- gtk_widget_set_size_request (pbl->pixmap, 24, 24);
+ pbl->pixmap = bonobo_ui_toolbar_icon_new ();
+ gtk_widget_set_usize (pbl->pixmap, 24, 24);
pbl->eb = eb;
- pbl->destroy_id = g_signal_connect(eb, "destroy", G_CALLBACK(embeddable_destroy_cb), pbl);
-
- g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc)pixbuf_gen_idle, pbl, NULL);
-
+ pbl->destroy_id = gtk_signal_connect (GTK_OBJECT (eb), "destroy",
+ embeddable_destroy_cb, pbl);
+
+ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc)pixbuf_gen_idle,
+ pbl, NULL);
+
button = gtk_button_new ();
GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
- g_object_set_data ((GObject *) button, "MailDisplay", md);
- g_signal_connect (button, "clicked", G_CALLBACK (button_press), part);
+ gtk_object_set_data (GTK_OBJECT (button), "MailDisplay", md);
+ gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (button_press), part);
gtk_container_add (GTK_CONTAINER (button), pbl->pixmap);
gtk_widget_show_all (button);
gtk_container_add (GTK_CONTAINER (eb), button);
@@ -1215,7 +1236,7 @@ on_url_requested (GtkHTML *html, const char *url, GtkHTMLStream *handle,
html_stream = mail_stream_gtkhtml_new (html, handle);
camel_data_wrapper_write_to_stream (data, html_stream);
- camel_object_unref (html_stream);
+ camel_object_unref (CAMEL_OBJECT (html_stream));
}
gtk_html_end (html, handle, GTK_HTML_STREAM_OK);
@@ -1353,7 +1374,7 @@ static void fetch_remote(MailDisplay *md, const char *uri, GtkHTML *html, GtkHTM
rd->md = md; /* dont ref */
rd->uri = g_strdup(uri);
rd->html = html;
- g_object_ref(html);
+ gtk_object_ref((GtkObject *)html);
rd->stream = stream;
rd->cstream = cstream;
@@ -1408,7 +1429,7 @@ static void fetch_data(SoupMessage *req, void *data)
static void fetch_free(struct _remote_data *rd)
{
- g_object_unref(rd->html);
+ gtk_object_unref((GtkObject *)rd->html);
if (rd->cstream)
camel_object_unref(rd->cstream);
g_free(rd->uri);
@@ -1509,7 +1530,7 @@ try_part_urls (struct _load_content_msg *m)
html_stream = mail_stream_gtkhtml_new (m->html, m->handle);
camel_data_wrapper_write_to_stream (data, html_stream);
- camel_object_unref (html_stream);
+ camel_object_unref (CAMEL_OBJECT (html_stream));
gtk_html_end (m->html, m->handle, GTK_HTML_STREAM_OK);
return TRUE;
@@ -1527,9 +1548,12 @@ try_data_urls (struct _load_content_msg *m)
urls = g_datalist_get_data (m->display->data, "data_urls");
ba = g_hash_table_lookup (urls, m->url);
+ printf ("url: %s data: %p len: %d\n", m->url, ba, ba ? ba->len : -1);
if (ba) {
- if (ba->len)
+ if (ba->len) {
+ printf ("writing ...\n");
gtk_html_write (m->html, m->handle, ba->data, ba->len);
+ }
gtk_html_end (m->html, m->handle, GTK_HTML_STREAM_OK);
return TRUE;
}
@@ -1541,15 +1565,15 @@ static void
load_content_loaded (struct _mail_msg *mm)
{
struct _load_content_msg *m = (struct _load_content_msg *)mm;
-
-#warning "object_destroy check?"
-#if 0
+
if (GTK_OBJECT_DESTROYED (m->display))
return;
-#endif
if (m->display->current_message == m->message) {
if (m->handle) {
+ printf ("handle: %p orig: %d actual: %d\n", m->handle,
+ m->redisplay_counter,
+ m->display->redisplay_counter);
if (m->redisplay_counter == m->display->redisplay_counter) {
if (!try_part_urls (m) && !try_data_urls (m))
gtk_html_end (m->html, m->handle, GTK_HTML_STREAM_ERROR);
@@ -1565,9 +1589,9 @@ load_content_free (struct _mail_msg *mm)
struct _load_content_msg *m = (struct _load_content_msg *)mm;
g_free (m->url);
- g_object_unref((m->html));
- g_object_unref((m->display));
- camel_object_unref (m->message);
+ gtk_object_unref (GTK_OBJECT (m->html));
+ gtk_object_unref (GTK_OBJECT (m->display));
+ camel_object_unref (CAMEL_OBJECT (m->message));
}
static struct _mail_msg_op load_content_op = {
@@ -1588,11 +1612,10 @@ stream_write_or_redisplay_when_loaded (MailDisplay *md,
{
struct _load_content_msg *m;
GHashTable *loading;
-
-#if 0
+
if (GTK_OBJECT_DESTROYED (md))
return;
-#endif
+
loading = g_datalist_get_data (md->data, "loading");
if (loading) {
if (g_hash_table_lookup (loading, key))
@@ -1606,14 +1629,14 @@ stream_write_or_redisplay_when_loaded (MailDisplay *md,
m = mail_msg_new (&load_content_op, NULL, sizeof (*m));
m->display = md;
- g_object_ref((m->display));
+ gtk_object_ref (GTK_OBJECT (m->display));
m->html = html;
- g_object_ref((html));
+ gtk_object_ref (GTK_OBJECT (html));
m->handle = handle;
m->url = g_strdup (url);
m->redisplay_counter = md->redisplay_counter;
m->message = md->current_message;
- camel_object_ref (m->message);
+ camel_object_ref (CAMEL_OBJECT (m->message));
m->callback = callback;
m->data = data;
@@ -1644,13 +1667,8 @@ mail_display_redisplay_when_loaded (MailDisplay *md,
}
void
-mail_text_write (GtkHTML *html, GtkHTMLStream *stream, MailDisplay *md, CamelMimePart *part, gint idx, gboolean printing, const char *text)
+mail_text_write (GtkHTML *html, GtkHTMLStream *stream, gboolean printing, const char *text)
{
- GByteArray *ba;
- gchar *xed, *iframe;
- gchar *btt = "<tt>\n";
- gchar *ett = "</tt>\n";
-
guint flags;
char *htmltext;
@@ -1664,17 +1682,10 @@ mail_text_write (GtkHTML *html, GtkHTMLStream *stream, MailDisplay *md, CamelMim
htmltext = e_text_to_html_full (text, flags, mail_config_get_citation_color ());
- ba = g_byte_array_new ();
- g_byte_array_append (ba, (const guint8 *) btt, strlen (btt) + 1);
- g_byte_array_append (ba, (const guint8 *) htmltext, strlen (htmltext) + 1);
- g_byte_array_append (ba, (const guint8 *) ett, strlen (ett) + 1);
+ gtk_html_write (html, stream, "<tt>", 4);
+ gtk_html_write (html, stream, htmltext, strlen (htmltext));
+ gtk_html_write (html, stream, "</tt>", 5);
g_free (htmltext);
-
- xed = g_strdup_printf ("x-evolution-data:%p-%d", part, idx);
- iframe = g_strdup_printf ("<iframe src=\"%s\" frameborder=0 scrolling=no>could not get %s</iframe>", xed, xed);
- mail_display_add_url (md, "data_urls", xed, ba);
- gtk_html_write (html, stream, iframe, strlen (iframe));
- g_free (iframe);
}
void
@@ -1720,10 +1731,7 @@ mail_display_render (MailDisplay *md, GtkHTML *html, gboolean reset_scroll)
"<!doctype html public \"-//W3C//DTD HTML 4.0 TRANSITIONAL//EN\">\n"
"<html>\n"
"<head>\n<meta name=\"generator\" content=\"Evolution Mail Component\">\n</head>\n");
- if (md->current_message && md->display_style == MAIL_CONFIG_DISPLAY_SOURCE)
- mail_html_write (html, stream, "<body>\n");
- else
- mail_html_write (html, stream, "<body marginwidth=0 marginheight=0>\n");
+ mail_html_write (html, stream, "<body marginwidth=0 marginheight=0>\n");
flag = md->info ? camel_tag_get (&md->info->user_tags, "follow-up") : NULL;
completed = md->info ? camel_tag_get (&md->info->user_tags, "completed-on") : NULL;
@@ -1737,7 +1745,6 @@ mail_display_render (MailDisplay *md, GtkHTML *html, gboolean reset_scroll)
int offset;
/* my favorite thing to do... muck around with colors so we respect people's stupid themes. */
- /* FIXME: this is also in mail-format.c */
style = gtk_widget_get_style (GTK_WIDGET (html));
if (style && !md->printing) {
int state = GTK_WIDGET_STATE (GTK_WIDGET (html));
@@ -1774,7 +1781,7 @@ mail_display_render (MailDisplay *md, GtkHTML *html, gboolean reset_scroll)
target_date = header_decode_date (due_by, &offset);
now = time (NULL);
if (now >= target_date)
- overdue = _("Overdue:");
+ overdue = U_("Overdue:");
localtime_r (&target_date, &due);
@@ -1817,10 +1824,9 @@ mail_display_render (MailDisplay *md, GtkHTML *html, gboolean reset_scroll)
void
mail_display_redisplay (MailDisplay *md, gboolean reset_scroll)
{
-#if 0
if (GTK_OBJECT_DESTROYED (md))
return;
-#endif
+
fetch_cancel(md);
md->last_active = NULL;
@@ -1853,7 +1859,7 @@ mail_display_set_message (MailDisplay *md, CamelMedium *medium, CamelFolder *fol
/* Clean up from previous message. */
if (md->current_message) {
fetch_cancel (md);
- camel_object_unref (md->current_message);
+ camel_object_unref (CAMEL_OBJECT (md->current_message));
g_datalist_clear (md->data);
}
@@ -1917,7 +1923,7 @@ mail_display_load_images (MailDisplay *md)
*----------------------------------------------------------------------*/
static void
-mail_display_init (GObject *object)
+mail_display_init (GtkObject *object)
{
MailDisplay *mail_display = MAIL_DISPLAY (object);
@@ -1934,8 +1940,6 @@ mail_display_init (GObject *object)
mail_display->data = NULL;
mail_display->invisible = gtk_invisible_new ();
- g_object_ref(mail_display->invisible);
- gtk_object_sink((GtkObject *)mail_display->invisible);
mail_display->display_style = mail_config_get_message_display_style ();
@@ -1951,46 +1955,33 @@ mail_display_destroy (GtkObject *object)
{
MailDisplay *mail_display = MAIL_DISPLAY (object);
- if (mail_display->html) {
- g_object_unref(mail_display->html);
- mail_display->html = NULL;
- }
+ gtk_object_unref (GTK_OBJECT (mail_display->html));
if (mail_display->current_message) {
camel_object_unref (mail_display->current_message);
g_datalist_clear (mail_display->data);
fetch_cancel(mail_display);
- mail_display->current_message = NULL;
}
g_free (mail_display->charset);
- mail_display->charset = NULL;
g_free (mail_display->selection);
- mail_display->selection = NULL;
-
+
if (mail_display->folder) {
if (mail_display->info)
camel_folder_free_message_info (mail_display->folder, mail_display->info);
camel_object_unref (mail_display->folder);
- mail_display->folder = NULL;
}
-
+
g_free (mail_display->data);
mail_display->data = NULL;
-
- if (mail_display->idle_id) {
+
+ if (mail_display->idle_id)
gtk_timeout_remove (mail_display->idle_id);
- mail_display->idle_id = 0;
- }
-
- if (mail_display->invisible) {
- g_object_unref (mail_display->invisible);
- mail_display->invisible = NULL;
- }
+
+ gtk_widget_unref (mail_display->invisible);
g_free(mail_display->priv);
- mail_display->priv = NULL;
-
+
mail_display_parent_class->destroy (object);
}
@@ -2045,8 +2036,9 @@ mail_display_class_init (GtkObjectClass *object_class)
camel_data_cache_set_expire_age(fetch_cache, 24*60*60);
camel_data_cache_set_expire_access(fetch_cache, 2*60*60);
- mail_display_parent_class = g_type_class_ref(PARENT_TYPE);
+ mail_display_parent_class = gtk_type_class (PARENT_TYPE);
thumbnail_cache = g_hash_table_new (g_str_hash, g_str_equal);
+
}
}
@@ -2097,7 +2089,7 @@ image_save_as (GtkWidget *w, MailDisplay *mail_display)
{
const char *src;
- src = g_object_get_data(G_OBJECT(mail_display), "current_src_uri");
+ src = gtk_object_get_data (GTK_OBJECT (mail_display), "current_src_uri");
g_warning ("loading uri=%s", src);
@@ -2120,12 +2112,12 @@ enum {
#define TERMINATOR { NULL, NULL, (NULL), NULL, 0 }
static EPopupMenu link_menu [] = {
- E_POPUP_ITEM (N_("Open Link in Browser"), G_CALLBACK (link_open_in_browser), MASK_URL),
- E_POPUP_ITEM (N_("Copy Link Location"), G_CALLBACK (link_copy_location), MASK_URL),
+ E_POPUP_ITEM (N_("Open Link in Browser"), GTK_SIGNAL_FUNC (link_open_in_browser), MASK_URL),
+ E_POPUP_ITEM (N_("Copy Link Location"), GTK_SIGNAL_FUNC (link_copy_location), MASK_URL),
#if 0
- E_POPUP_ITEM (N_("Save Link as (FIXME)"), G_CALLBACK (link_save_as), MASK_URL),
+ E_POPUP_ITEM (N_("Save Link as (FIXME)"), GTK_SIGNAL_FUNC (link_save_as), MASK_URL),
#endif
- E_POPUP_ITEM (N_("Save Image as..."), G_CALLBACK (image_save_as), MASK_SRC),
+ E_POPUP_ITEM (N_("Save Image as..."), GTK_SIGNAL_FUNC (image_save_as), MASK_SRC),
TERMINATOR
};
@@ -2142,7 +2134,7 @@ struct _PopupInfo {
GtkWidget *win;
guint destroy_timeout;
guint widget_destroy_handle;
- Bonobo_Listener listener;
+ Bonobo_EventSource_ListenerId listener_id;
gboolean hidden;
};
@@ -2157,18 +2149,20 @@ popup_info_free (PopupInfo *pop)
gtk_timeout_remove (pop->destroy_timeout);
bonobo_event_source_client_remove_listener (bonobo_widget_get_objref (BONOBO_WIDGET (pop->w)),
- pop->listener,
+ pop->listener_id,
NULL);
- CORBA_Object_release (pop->listener, NULL);
+
g_free (pop);
}
}
static void
-popup_window_destroy_cb (PopupInfo *pop, GObject *deadbeef)
+popup_window_destroy_cb (GtkWidget *w, gpointer user_data)
{
+ PopupInfo *pop = (PopupInfo *) user_data;
+
the_popup = NULL;
-
+
popup_info_free (pop);
}
@@ -2247,31 +2241,45 @@ make_popup_window (GtkWidget *w)
{
PopupInfo *pop = g_new0 (PopupInfo, 1);
GtkWidget *fr;
-
+
/* Only allow for one popup at a time. Ugly. */
if (the_popup)
gtk_widget_destroy (the_popup);
-
+
pop->w = w;
the_popup = pop->win = gtk_window_new (GTK_WINDOW_POPUP);
fr = gtk_frame_new (NULL);
-
+
gtk_container_add (GTK_CONTAINER (pop->win), fr);
gtk_container_add (GTK_CONTAINER (fr), w);
-
+
gtk_window_set_policy (GTK_WINDOW (pop->win), FALSE, FALSE, FALSE);
-
- g_signal_connect (pop->win, "enter_notify_event", G_CALLBACK (popup_enter_cb), pop);
- g_signal_connect (pop->win, "leave_notify_event", G_CALLBACK (popup_leave_cb), pop);
- g_signal_connect_after (pop->win, "realize", G_CALLBACK (popup_realize_cb), pop);
- g_signal_connect (pop->win, "size_allocate", G_CALLBACK (popup_size_allocate_cb), pop);
-
- g_object_weak_ref ((GObject *) pop->win, (GWeakNotify) popup_window_destroy_cb, pop);
-
+
+ gtk_signal_connect (GTK_OBJECT (pop->win),
+ "destroy",
+ GTK_SIGNAL_FUNC (popup_window_destroy_cb),
+ pop);
+ gtk_signal_connect (GTK_OBJECT (pop->win),
+ "enter_notify_event",
+ GTK_SIGNAL_FUNC (popup_enter_cb),
+ pop);
+ gtk_signal_connect (GTK_OBJECT (pop->win),
+ "leave_notify_event",
+ GTK_SIGNAL_FUNC (popup_leave_cb),
+ pop);
+ gtk_signal_connect_after (GTK_OBJECT (pop->win),
+ "realize",
+ GTK_SIGNAL_FUNC (popup_realize_cb),
+ pop);
+ gtk_signal_connect (GTK_OBJECT (pop->win),
+ "size_allocate",
+ GTK_SIGNAL_FUNC (popup_size_allocate_cb),
+ pop);
+
gtk_widget_show (w);
gtk_widget_show (fr);
gtk_widget_show (pop->win);
-
+
return pop;
}
@@ -2325,7 +2333,7 @@ html_button_press_event (GtkWidget *widget, GdkEventButton *event, MailDisplay *
url = html_object_get_url (point->object);
src = html_object_get_src (point->object);
- if (url && !g_ascii_strncasecmp (url, "mailto:", 7)) {
+ if (url && !g_strncasecmp (url, "mailto:", 7)) {
PopupInfo *pop;
gchar *url_decoded;
@@ -2338,16 +2346,16 @@ html_button_press_event (GtkWidget *widget, GdkEventButton *event, MailDisplay *
CORBA_OBJECT_NIL);
bonobo_widget_set_property (BONOBO_WIDGET (popup_thing),
- "email", TC_CORBA_string, url_decoded+7,
+ "email", url_decoded+7,
NULL);
g_free (url_decoded);
pop = make_popup_window (popup_thing);
- pop->listener = bonobo_event_source_client_add_listener_full(
- bonobo_widget_get_objref (BONOBO_WIDGET (popup_thing)),
- g_cclosure_new(G_CALLBACK(listener_cb), pop, NULL),
- NULL, NULL);
+ pop->listener_id =
+ bonobo_event_source_client_add_listener (bonobo_widget_get_objref (BONOBO_WIDGET (popup_thing)),
+ listener_cb, NULL, NULL, pop);
+
} else if (url || src) {
gint hide_mask = 0;
@@ -2357,11 +2365,11 @@ html_button_press_event (GtkWidget *widget, GdkEventButton *event, MailDisplay *
if (!src)
hide_mask |= MASK_SRC;
- g_free (g_object_get_data(G_OBJECT(mail_display), "current_src_uri"));
- g_object_set_data(G_OBJECT(mail_display), "current_src_uri",
- gtk_html_get_url_object_relative (GTK_HTML (widget),
- point->object,
- src));
+ g_free (gtk_object_get_data (GTK_OBJECT (mail_display), "current_src_uri"));
+ gtk_object_set_data (GTK_OBJECT (mail_display), "current_src_uri",
+ gtk_html_get_url_object_relative (GTK_HTML (widget),
+ point->object,
+ src));
e_popup_menu_run (link_menu, (GdkEvent *) event, 0, hide_mask, mail_display);
@@ -2444,12 +2452,12 @@ html_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, MailDisplay
static void
html_iframe_created (GtkWidget *w, GtkHTML *iframe, MailDisplay *mail_display)
{
- g_signal_connect(iframe, "button_press_event",
- G_CALLBACK (html_button_press_event), mail_display);
- g_signal_connect(iframe, "motion_notify_event",
- G_CALLBACK (html_motion_notify_event), mail_display);
- g_signal_connect(iframe, "enter_notify_event",
- G_CALLBACK (html_enter_notify_event), mail_display);
+ gtk_signal_connect (GTK_OBJECT (iframe), "button_press_event",
+ GTK_SIGNAL_FUNC (html_button_press_event), mail_display);
+ gtk_signal_connect (GTK_OBJECT (iframe), "motion_notify_event",
+ GTK_SIGNAL_FUNC (html_motion_notify_event), mail_display);
+ gtk_signal_connect (GTK_OBJECT (iframe), "enter_notify_event",
+ GTK_SIGNAL_FUNC (html_enter_notify_event), mail_display);
}
static GNOME_Evolution_ShellView
@@ -2459,7 +2467,7 @@ retrieve_shell_view_interface_from_control (BonoboControl *control)
GNOME_Evolution_ShellView shell_view_interface;
CORBA_Environment ev;
- control_frame = bonobo_control_get_control_frame (control, NULL);
+ control_frame = bonobo_control_get_control_frame (control);
if (control_frame == NULL)
return CORBA_OBJECT_NIL;
@@ -2471,9 +2479,9 @@ retrieve_shell_view_interface_from_control (BonoboControl *control)
CORBA_exception_free (&ev);
if (shell_view_interface != CORBA_OBJECT_NIL)
- g_object_set_data(G_OBJECT(control),
- "mail_threads_shell_view_interface",
- shell_view_interface);
+ gtk_object_set_data (GTK_OBJECT (control),
+ "mail_threads_shell_view_interface",
+ shell_view_interface);
else
g_warning ("Control frame doesn't have Evolution/ShellView.");
@@ -2494,7 +2502,7 @@ set_status_message (const char *message, int busy)
control = BONOBO_CONTROL (e_iterator_get (it));
- shell_view_interface = g_object_get_data(G_OBJECT(control), "mail_threads_shell_view_interface");
+ shell_view_interface = gtk_object_get_data (GTK_OBJECT (control), "mail_threads_shell_view_interface");
if (shell_view_interface == CORBA_OBJECT_NIL)
shell_view_interface = retrieve_shell_view_interface_from_control (control);
@@ -2515,7 +2523,7 @@ set_status_message (const char *message, int busy)
random ones lying around otherwise. Shrug. */
break;
}
- g_object_unref(it);
+ gtk_object_unref (GTK_OBJECT(it));
}
/* For now show every url but possibly limit it to showing only http:
@@ -2541,7 +2549,7 @@ html_on_url (GtkHTML *html,
GtkWidget *
mail_display_new (void)
{
- MailDisplay *mail_display = g_object_new (mail_display_get_type (), NULL);
+ MailDisplay *mail_display = gtk_type_new (mail_display_get_type ());
GtkWidget *scroll, *html;
GdkAtom clipboard_atom;
HTMLTokenizer *tok;
@@ -2560,17 +2568,17 @@ mail_display_new (void)
html = gtk_html_new ();
tok = e_searching_tokenizer_new ();
html_engine_set_tokenizer (GTK_HTML (html)->engine, tok);
- g_object_unref((tok));
+ gtk_object_unref (GTK_OBJECT (tok));
mail_display_initialize_gtkhtml (mail_display, GTK_HTML (html));
gtk_container_add (GTK_CONTAINER (scroll), html);
gtk_widget_show (GTK_WIDGET (html));
- g_signal_connect(mail_display->invisible, "selection_get",
- G_CALLBACK (invisible_selection_get_callback), mail_display);
- g_signal_connect(mail_display->invisible, "selection_clear_event",
- G_CALLBACK (invisible_selection_clear_event_callback), mail_display);
+ gtk_signal_connect (GTK_OBJECT (mail_display->invisible), "selection_get",
+ GTK_SIGNAL_FUNC (invisible_selection_get_callback), mail_display);
+ gtk_signal_connect (GTK_OBJECT (mail_display->invisible), "selection_clear_event",
+ GTK_SIGNAL_FUNC (invisible_selection_clear_event_callback), mail_display);
gtk_selection_add_target (mail_display->invisible,
GDK_SELECTION_PRIMARY, GDK_SELECTION_TYPE_STRING, 1);
@@ -2582,7 +2590,7 @@ mail_display_new (void)
mail_display->scroll = E_SCROLL_FRAME (scroll);
mail_display->html = GTK_HTML (html);
- g_object_ref(mail_display->html);
+ gtk_object_ref (GTK_OBJECT (mail_display->html));
mail_display->last_active = NULL;
mail_display->data = g_new0 (GData *, 1);
g_datalist_init (mail_display->data);
@@ -2598,25 +2606,25 @@ mail_display_initialize_gtkhtml (MailDisplay *mail_display, GtkHTML *html)
gtk_html_set_editable (GTK_HTML (html), FALSE);
- g_signal_connect(html, "url_requested",
- G_CALLBACK (on_url_requested),
- mail_display);
- g_signal_connect(html, "object_requested",
- G_CALLBACK (on_object_requested),
- mail_display);
- g_signal_connect(html, "link_clicked",
- G_CALLBACK (on_link_clicked),
- mail_display);
- g_signal_connect(html, "button_press_event",
- G_CALLBACK (html_button_press_event), mail_display);
- g_signal_connect(html, "motion_notify_event",
- G_CALLBACK (html_motion_notify_event), mail_display);
- g_signal_connect(html, "enter_notify_event",
- G_CALLBACK (html_enter_notify_event), mail_display);
- g_signal_connect(html, "iframe_created",
- G_CALLBACK (html_iframe_created), mail_display);
- g_signal_connect(html, "on_url",
- G_CALLBACK (html_on_url), mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "url_requested",
+ GTK_SIGNAL_FUNC (on_url_requested),
+ mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "object_requested",
+ GTK_SIGNAL_FUNC (on_object_requested),
+ mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "link_clicked",
+ GTK_SIGNAL_FUNC (on_link_clicked),
+ mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "button_press_event",
+ GTK_SIGNAL_FUNC (html_button_press_event), mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "motion_notify_event",
+ GTK_SIGNAL_FUNC (html_motion_notify_event), mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "enter_notify_event",
+ GTK_SIGNAL_FUNC (html_enter_notify_event), mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "iframe_created",
+ GTK_SIGNAL_FUNC (html_iframe_created), mail_display);
+ gtk_signal_connect (GTK_OBJECT (html), "on_url",
+ GTK_SIGNAL_FUNC (html_on_url), mail_display);
}
static void
@@ -2669,7 +2677,7 @@ mail_display_get_url_for_icon (MailDisplay *md, const char *icon_name)
if (*icon_name == '/')
icon_path = g_strdup (icon_name);
else {
- icon_path = gnome_program_locate_file(NULL, GNOME_FILE_DOMAIN_PIXMAP, icon_name, TRUE, NULL);
+ icon_path = gnome_pixmap_file (icon_name);
if (!icon_path)
return "file:///dev/null";
}
diff --git a/mail/mail-preferences.c b/mail/mail-preferences.c
index 2941618608..2046859174 100644
--- a/mail/mail-preferences.c
+++ b/mail/mail-preferences.c
@@ -25,24 +25,21 @@
#include <config.h>
#endif
-#include <string.h>
-
#include "mail-preferences.h"
-#include <gconf/gconf.h>
+#include <gal/widgets/e-unicode.h>
+#include <gal/util/e-unicode-i18n.h>
#include <gtkhtml/gtkhtml-properties.h>
#include "widgets/misc/e-charset-picker.h"
#include <bonobo/bonobo-generic-factory.h>
-#include "gal/util/e-iconv.h"
-
#include "mail-config.h"
static void mail_preferences_class_init (MailPreferencesClass *class);
static void mail_preferences_init (MailPreferences *dialog);
-static void mail_preferences_finalise (GObject *obj);
+static void mail_preferences_finalise (GtkObject *obj);
static GtkVBoxClass *parent_class = NULL;
@@ -50,20 +47,20 @@ static GtkVBoxClass *parent_class = NULL;
GtkType
mail_preferences_get_type (void)
{
- static GType type = 0;
+ static GtkType type = 0;
if (!type) {
- GTypeInfo type_info = {
- sizeof (MailPreferencesClass),
- NULL, NULL,
- (GClassInitFunc) mail_preferences_class_init,
- NULL, NULL,
+ GtkTypeInfo type_info = {
+ "MailPreferences",
sizeof (MailPreferences),
- 0,
- (GInstanceInitFunc) mail_preferences_init,
+ sizeof (MailPreferencesClass),
+ (GtkClassInitFunc) mail_preferences_class_init,
+ (GtkObjectInitFunc) mail_preferences_init,
+ (GtkArgSetFunc) NULL,
+ (GtkArgGetFunc) NULL
};
- type = g_type_register_static (gtk_vbox_get_type (), "MailPreferences", &type_info, 0);
+ type = gtk_type_unique (gtk_vbox_get_type (), &type_info);
}
return type;
@@ -72,12 +69,14 @@ mail_preferences_get_type (void)
static void
mail_preferences_class_init (MailPreferencesClass *klass)
{
- GObjectClass *object_class;
+ GtkObjectClass *object_class;
- object_class = (GObjectClass *) klass;
- parent_class = g_type_class_ref (gtk_vbox_get_type ());
+ object_class = (GtkObjectClass *) klass;
+ parent_class = gtk_type_class (gtk_vbox_get_type ());
object_class->finalize = mail_preferences_finalise;
+ /* override methods */
+
}
static void
@@ -87,15 +86,15 @@ mail_preferences_init (MailPreferences *preferences)
}
static void
-mail_preferences_finalise (GObject *obj)
+mail_preferences_finalise (GtkObject *obj)
{
MailPreferences *prefs = (MailPreferences *) obj;
- g_object_unref (prefs->gui);
- g_object_unref (prefs->pman);
- g_object_unref (prefs->gconf);
+ gtk_object_unref (GTK_OBJECT (prefs->gui));
+ gtk_object_unref (GTK_OBJECT (prefs->pman));
+ gtk_object_unref (GTK_OBJECT (prefs->gconf));
- ((GObjectClass *)(parent_class))->finalize (obj);
+ ((GtkObjectClass *)(parent_class))->finalize (obj);
}
@@ -156,7 +155,7 @@ restore_labels_clicked (GtkWidget *widget, gpointer user_data)
int i;
for (i = 0; i < 5; i++) {
- gtk_entry_set_text (prefs->labels[i].name, _(label_defaults[i].name));
+ e_utf8_gtk_entry_set_text (prefs->labels[i].name, U_(label_defaults[i].name));
colorpicker_set_color (prefs->labels[i].color, label_defaults[i].color);
}
}
@@ -181,7 +180,8 @@ option_menu_connect (GtkOptionMenu *omenu, gpointer user_data)
items = GTK_MENU_SHELL (menu)->children;
while (items) {
item = items->data;
- g_signal_connect (item, "activate", G_CALLBACK (menu_changed), user_data);
+ gtk_signal_connect (GTK_OBJECT (item), "activate",
+ menu_changed, user_data);
items = items->next;
}
}
@@ -191,20 +191,15 @@ mail_preferences_construct (MailPreferences *prefs)
{
GtkWidget *widget, *toplevel, *menu;
const char *text;
- GSList *list, *l;
- GdkColor colour;
GladeXML *gui;
- gboolean bool;
- guint32 rgb;
- int i, val;
- char *buf;
+ int i;
char *names[][2] = {
{ "anim_check", "chkShowAnimatedImages" },
{ "magic_links_check", "chkAutoDetectLinks" },
{ NULL, NULL }
};
- gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "preferences_tab", NULL);
+ gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "preferences_tab");
prefs->gui = gui;
/* get our toplevel widget */
@@ -220,147 +215,122 @@ mail_preferences_construct (MailPreferences *prefs)
/* Message Display */
prefs->timeout_toggle = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkMarkTimeout"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/display/mark_seen", NULL);
- gtk_toggle_button_set_active (prefs->timeout_toggle, bool);
- g_signal_connect (prefs->timeout_toggle, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->timeout_toggle, mail_config_get_do_seen_timeout ());
+ gtk_signal_connect (GTK_OBJECT (prefs->timeout_toggle), "toggled",
+ toggle_button_toggled, prefs);
prefs->timeout = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "spinMarkTimeout"));
- val = gconf_client_get_int (prefs->gconf, "/apps/evolution/mail/display/mark_seen_timeout", NULL);
- gtk_spin_button_set_value (prefs->timeout, (1.0 * val) / 1000.0);
- g_signal_connect (prefs->timeout, "changed", G_CALLBACK (entry_changed), prefs);
+ gtk_spin_button_set_value (prefs->timeout, (1.0 * mail_config_get_mark_as_seen_timeout ()) / 1000.0);
+ gtk_signal_connect (GTK_OBJECT (prefs->timeout), "changed",
+ entry_changed, prefs);
prefs->charset = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuCharset"));
- buf = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/format/charset", NULL);
- menu = e_charset_picker_new (buf ? buf : e_iconv_locale_charset ());
+ menu = e_charset_picker_new (mail_config_get_default_charset ());
gtk_option_menu_set_menu (prefs->charset, GTK_WIDGET (menu));
option_menu_connect (prefs->charset, prefs);
- g_free (buf);
prefs->citation_highlight = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkHighlightCitations"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/display/highlight_citations", NULL);
- gtk_toggle_button_set_active (prefs->citation_highlight, bool);
- g_signal_connect (prefs->citation_highlight, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->citation_highlight, mail_config_get_citation_highlight ());
+ gtk_signal_connect (GTK_OBJECT (prefs->citation_highlight), "toggled",
+ toggle_button_toggled, prefs);
prefs->citation_color = GNOME_COLOR_PICKER (glade_xml_get_widget (gui, "colorpickerHighlightCitations"));
- buf = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/display/citation_colour", NULL);
- gdk_color_parse (buf ? buf : "#737373", &colour);
- rgb = ((colour.red & 0xff00) << 8) | (colour.green & 0xff00) | ((colour.blue & 0xff) >> 8);
- colorpicker_set_color (prefs->citation_color, rgb);
- g_signal_connect (prefs->citation_color, "color-set", G_CALLBACK (color_set), prefs);
- g_free (buf);
+ colorpicker_set_color (prefs->citation_color, mail_config_get_citation_color ());
+ gtk_signal_connect (GTK_OBJECT (prefs->citation_color), "color-set",
+ color_set, prefs);
/* Deleting Mail */
prefs->empty_trash = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkEmptyTrashOnExit"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/trash/empty_on_exit", NULL);
- gtk_toggle_button_set_active (prefs->empty_trash, bool);
- g_signal_connect (prefs->empty_trash, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->empty_trash, mail_config_get_empty_trash_on_exit ());
+ gtk_signal_connect (GTK_OBJECT (prefs->empty_trash), "toggled",
+ toggle_button_toggled, prefs);
prefs->confirm_expunge = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkConfirmExpunge"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/prompts/expunge", NULL);
- gtk_toggle_button_set_active (prefs->confirm_expunge, bool);
- g_signal_connect (prefs->confirm_expunge, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->confirm_expunge, mail_config_get_confirm_expunge ());
+ gtk_signal_connect (GTK_OBJECT (prefs->confirm_expunge), "toggled",
+ toggle_button_toggled, prefs);
/* New Mail Notification */
- val = gconf_client_get_int (prefs->gconf, "/apps/evolution/mail/notify/type", NULL);
prefs->notify_not = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radNotifyNot"));
- gtk_toggle_button_set_active (prefs->notify_not, val == MAIL_CONFIG_NOTIFY_NOT);
- g_signal_connect (prefs->notify_not, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->notify_not, mail_config_get_new_mail_notify () == MAIL_CONFIG_NOTIFY_NOT);
+ gtk_signal_connect (GTK_OBJECT (prefs->notify_not), "toggled",
+ toggle_button_toggled, prefs);
prefs->notify_beep = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radNotifyBeep"));
- gtk_toggle_button_set_active (prefs->notify_beep, val == MAIL_CONFIG_NOTIFY_BEEP);
- g_signal_connect (prefs->notify_beep, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->notify_beep, mail_config_get_new_mail_notify () == MAIL_CONFIG_NOTIFY_BEEP);
+ gtk_signal_connect (GTK_OBJECT (prefs->notify_beep), "toggled",
+ toggle_button_toggled, prefs);
prefs->notify_play_sound = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radNotifyPlaySound"));
- gtk_toggle_button_set_active (prefs->notify_play_sound, val == MAIL_CONFIG_NOTIFY_PLAY_SOUND);
- g_signal_connect (prefs->notify_play_sound, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->notify_play_sound,
+ mail_config_get_new_mail_notify () == MAIL_CONFIG_NOTIFY_PLAY_SOUND);
+ gtk_signal_connect (GTK_OBJECT (prefs->notify_play_sound), "toggled",
+ toggle_button_toggled, prefs);
prefs->notify_sound_file = GNOME_FILE_ENTRY (glade_xml_get_widget (gui, "fileNotifyPlaySound"));
- buf = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/notify/sound", NULL);
- gtk_entry_set_text (GTK_ENTRY (gnome_file_entry_gtk_entry (prefs->notify_sound_file)), buf ? buf : "");
- g_signal_connect (gnome_file_entry_gtk_entry (prefs->notify_sound_file), "changed",
- G_CALLBACK (entry_changed), prefs);
- g_free (buf);
+ text = mail_config_get_new_mail_notify_sound_file ();
+ gtk_entry_set_text (GTK_ENTRY (gnome_file_entry_gtk_entry (prefs->notify_sound_file)),
+ text ? text : "");
+ gtk_signal_connect (GTK_OBJECT (gnome_file_entry_gtk_entry (prefs->notify_sound_file)), "changed",
+ entry_changed, prefs);
/* HTML Mail tab */
/* Loading Images */
- val = gconf_client_get_int (prefs->gconf, "/apps/evolution/mail/display/load_http_images", NULL);
prefs->images_never = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radImagesNever"));
- gtk_toggle_button_set_active (prefs->images_never, val == MAIL_CONFIG_HTTP_NEVER);
- g_signal_connect (prefs->images_never, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->images_never, mail_config_get_http_mode () == MAIL_CONFIG_HTTP_NEVER);
+ gtk_signal_connect (GTK_OBJECT (prefs->images_never), "toggled",
+ toggle_button_toggled, prefs);
prefs->images_sometimes = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radImagesSometimes"));
- gtk_toggle_button_set_active (prefs->images_sometimes, val == MAIL_CONFIG_HTTP_SOMETIMES);
- g_signal_connect (prefs->images_sometimes, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->images_sometimes, mail_config_get_http_mode () == MAIL_CONFIG_HTTP_SOMETIMES);
+ gtk_signal_connect (GTK_OBJECT (prefs->images_sometimes), "toggled",
+ toggle_button_toggled, prefs);
prefs->images_always = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "radImagesAlways"));
- gtk_toggle_button_set_active (prefs->images_always, val == MAIL_CONFIG_HTTP_ALWAYS);
- g_signal_connect (prefs->images_always, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_toggle_button_set_active (prefs->images_always, mail_config_get_http_mode () == MAIL_CONFIG_HTTP_ALWAYS);
+ gtk_signal_connect (GTK_OBJECT (prefs->images_always), "toggled",
+ toggle_button_toggled, prefs);
-#warning "gtkhtml prop manager"
-#if 0
prefs->pman = GTK_HTML_PROPMANAGER (gtk_html_propmanager_new (prefs->gconf));
- g_signal_connect (prefs->pman, "changed", G_CALLBACK (toggle_button_toggled), prefs);
- g_object_ref (prefs->pman);
+ gtk_signal_connect (GTK_OBJECT (prefs->pman), "changed", toggle_button_toggled, prefs);
+ gtk_object_ref (GTK_OBJECT (prefs->pman));
gtk_html_propmanager_set_names (prefs->pman, names);
gtk_html_propmanager_set_gui (prefs->pman, gui, NULL);
for (i = 0; names[i][0] != NULL; i++) {
widget = glade_xml_get_widget (gui, names[i][1]);
- g_signal_connect (widget, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
+ gtk_signal_connect (GTK_OBJECT (widget), "toggled",
+ toggle_button_toggled, prefs);
}
-#endif
prefs->prompt_unwanted_html = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptWantHTML"));
- bool = gconf_client_get_bool (prefs->gconf, "/apps/evolution/mail/prompts/unwanted_html", NULL);
- gtk_toggle_button_set_active (prefs->prompt_unwanted_html, bool);
- g_signal_connect (prefs->prompt_unwanted_html, "toggled", G_CALLBACK (toggle_button_toggled), prefs);
-
- l = list = gconf_client_get_list (prefs->gconf, "/apps/evolution/mail/labels", GCONF_VALUE_STRING, NULL);
+ gtk_toggle_button_set_active (prefs->prompt_unwanted_html, mail_config_get_confirm_unwanted_html ());
+ gtk_signal_connect (GTK_OBJECT (prefs->prompt_unwanted_html), "toggled",
+ toggle_button_toggled, prefs);
/* Labels and Colours tab */
for (i = 0; i < 5; i++) {
- char *widget_name, *label, *p;
+ char *widget_name;
widget_name = g_strdup_printf ("txtLabel%d", i);
prefs->labels[i].name = GTK_ENTRY (glade_xml_get_widget (gui, widget_name));
g_free (widget_name);
+ text = mail_config_get_label_name (i);
+ e_utf8_gtk_entry_set_text (prefs->labels[i].name, text ? text : "");
+ gtk_signal_connect (GTK_OBJECT (prefs->labels[i].name), "changed",
+ entry_changed, prefs);
widget_name = g_strdup_printf ("colorLabel%d", i);
prefs->labels[i].color = GNOME_COLOR_PICKER (glade_xml_get_widget (gui, widget_name));
g_free (widget_name);
-
- label = l ? (char *) l->data : g_strdup (_(label_defaults[i].name));
- if ((p = strrchr (label, ':'))) {
- *p++ = '\0';
- gdk_color_parse (p, &colour);
- rgb = ((colour.red & 0xff00) << 8) | (colour.green & 0xff00) | ((colour.blue & 0xff) >> 8);
- } else {
- rgb = label_defaults[i].color;
- }
-
- gtk_entry_set_text (prefs->labels[i].name, label);
- g_free (label);
-
- g_signal_connect (prefs->labels[i].name, "changed", G_CALLBACK (entry_changed), prefs);
-
- colorpicker_set_color (prefs->labels[i].color, rgb);
- g_signal_connect (prefs->labels[i].color, "color_set", G_CALLBACK (color_set), prefs);
-
- if (l != NULL)
- l = l->next;
+ colorpicker_set_color (prefs->labels[i].color, mail_config_get_label_color (i));
+ gtk_signal_connect (GTK_OBJECT (prefs->labels[i].color), "color_set",
+ color_set, prefs);
}
-
- /* this is in case somehow the gconf list is longer than 5... */
- while (l != NULL) {
- g_free (l->data);
- l = l->next;
- }
-
- g_slist_free (list);
-
prefs->restore_labels = GTK_BUTTON (glade_xml_get_widget (gui, "cmdRestoreLabels"));
- g_signal_connect (prefs->restore_labels, "clicked", G_CALLBACK (restore_labels_clicked), prefs);
+ gtk_signal_connect (GTK_OBJECT (prefs->restore_labels), "clicked",
+ restore_labels_clicked, prefs);
}
@@ -369,7 +339,7 @@ mail_preferences_new (void)
{
MailPreferences *new;
- new = (MailPreferences *) g_object_new (mail_preferences_get_type (), NULL);
+ new = (MailPreferences *) gtk_type_new (mail_preferences_get_type ());
mail_preferences_construct (new);
return (GtkWidget *) new;
@@ -380,91 +350,70 @@ void
mail_preferences_apply (MailPreferences *prefs)
{
GtkWidget *entry, *menu;
- char *string, buf[20];
- const char *cstring;
- GSList *list, *l;
+ char *string;
guint32 rgb;
int i, val;
/* General tab */
/* Message Display */
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/display/mark_seen",
- gtk_toggle_button_get_active (prefs->timeout_toggle), NULL);
+ mail_config_set_do_seen_timeout (gtk_toggle_button_get_active (prefs->timeout_toggle));
- val = (int) (gtk_spin_button_get_value (prefs->timeout) * 1000.0);
- gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/display/mark_seen_timeout", val, NULL);
+ val = (int) (gtk_spin_button_get_value_as_float (prefs->timeout) * 1000);
+ mail_config_set_mark_as_seen_timeout (val);
menu = gtk_option_menu_get_menu (prefs->charset);
- if (!(string = e_charset_picker_get_charset (menu)))
- string = g_strdup (e_iconv_locale_charset ());
-
- gconf_client_set_string (prefs->gconf, "/apps/evolution/mail/format/charset", string, NULL);
- g_free (string);
+ string = e_charset_picker_get_charset (menu);
+ if (string) {
+ mail_config_set_default_charset (string);
+ g_free (string);
+ }
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/display/highlight_citations",
- gtk_toggle_button_get_active (prefs->citation_highlight), NULL);
+ mail_config_set_citation_highlight (gtk_toggle_button_get_active (prefs->citation_highlight));
rgb = colorpicker_get_color (prefs->citation_color);
- g_snprintf (buf, sizeof (buf), "#%0.6x", rgb);
- gconf_client_set_string (prefs->gconf, "/apps/evolution/mail/display/citation_colour", buf, NULL);
+ mail_config_set_citation_color (rgb);
/* Deleting Mail */
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/trash/empty_on_exit",
- gtk_toggle_button_get_active (prefs->empty_trash), NULL);
+ mail_config_set_empty_trash_on_exit (gtk_toggle_button_get_active (prefs->empty_trash));
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/prompts/expunge",
- gtk_toggle_button_get_active (prefs->confirm_expunge), NULL);
+ mail_config_set_confirm_expunge (gtk_toggle_button_get_active (prefs->confirm_expunge));
/* New Mail Notification */
if (gtk_toggle_button_get_active (prefs->notify_not))
- val = MAIL_CONFIG_NOTIFY_NOT;
+ mail_config_set_new_mail_notify (MAIL_CONFIG_NOTIFY_NOT);
else if (gtk_toggle_button_get_active (prefs->notify_beep))
- val = MAIL_CONFIG_NOTIFY_BEEP;
+ mail_config_set_new_mail_notify (MAIL_CONFIG_NOTIFY_BEEP);
else
- val = MAIL_CONFIG_NOTIFY_PLAY_SOUND;
-
- gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/notify/type", val, NULL);
+ mail_config_set_new_mail_notify (MAIL_CONFIG_NOTIFY_PLAY_SOUND);
entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (prefs->notify_sound_file));
- cstring = gtk_entry_get_text (GTK_ENTRY (entry));
- gconf_client_set_string (prefs->gconf, "/apps/evolution/mail/notify/sound", cstring, NULL);
+ string = gtk_entry_get_text (GTK_ENTRY (entry));
+ mail_config_set_new_mail_notify_sound_file (string);
/* HTML Mail */
if (gtk_toggle_button_get_active (prefs->images_always))
- val = MAIL_CONFIG_HTTP_ALWAYS;
+ mail_config_set_http_mode (MAIL_CONFIG_HTTP_ALWAYS);
else if (gtk_toggle_button_get_active (prefs->images_sometimes))
- val = MAIL_CONFIG_HTTP_SOMETIMES;
+ mail_config_set_http_mode (MAIL_CONFIG_HTTP_SOMETIMES);
else
- val = MAIL_CONFIG_HTTP_NEVER;
+ mail_config_set_http_mode (MAIL_CONFIG_HTTP_NEVER);
- gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/display/load_http_images", val, NULL);
-
-#warning "gtkhtml propmanager"
-#if 0
gtk_html_propmanager_apply (prefs->pman);
-#endif
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/prompts/unwanted_html",
- gtk_toggle_button_get_active (prefs->prompt_unwanted_html), NULL);
+ mail_config_set_confirm_unwanted_html (gtk_toggle_button_get_active (prefs->prompt_unwanted_html));
/* Labels and Colours */
- list = NULL;
- for (i = 4; i >= 0; i--) {
- cstring = gtk_entry_get_text (prefs->labels[i].name);
+ for (i = 0; i < 5; i++) {
+ /* save the label... */
+ string = e_utf8_gtk_entry_get_text (prefs->labels[i].name);
+ mail_config_set_label_name (i, string);
+ g_free (string);
+
+ /* save the colour... */
rgb = colorpicker_get_color (prefs->labels[i].color);
- string = g_strdup_printf ("%s:#%0.6x", cstring, rgb);
- list = g_slist_prepend (list, string);
- }
-
- gconf_client_set_list (prefs->gconf, "/apps/evolution/mail/labels", GCONF_VALUE_STRING, list, NULL);
-
- l = list;
- while (l != NULL) {
- g_free (l->data);
- l = l->next;
+ mail_config_set_label_color (i, rgb);
}
- g_slist_free (list);
- gconf_client_suggest_sync (prefs->gconf, NULL);
+ mail_config_write ();
}