static void mail_config_sendmail_backend_insert_widgets (EMailConfigServiceBackend *backend, GtkBox *parent) { CamelSettings *settings; GtkLabel *label; GtkWidget *widget; GtkWidget *container; GtkWidget *use_custom_binary_check; GtkWidget *custom_binary_entry; GtkWidget *use_custom_args_check; GtkWidget *custom_args_entry; GtkWidget *send_in_offline; gchar *markup; PangoAttribute *attr; PangoAttrList *attr_list; settings = e_mail_config_service_backend_get_settings (backend); markup = g_markup_printf_escaped ("<b>%s</b>", _("Configuration")); widget = gtk_label_new (markup); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = gtk_grid_new (); gtk_widget_set_margin_left (widget, 12); gtk_grid_set_row_spacing (GTK_GRID (widget), 6); gtk_grid_set_column_spacing (GTK_GRID (widget), 6); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); container = widget; widget = gtk_check_button_new_with_mnemonic (_("_Use custom binary, instead of 'sendmail'")); gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 2, 1); use_custom_binary_check = widget; widget = gtk_label_new_with_mnemonic (_("_Custom binary:")); gtk_widget_set_margin_left (widget, 12); gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1); label = GTK_LABEL (widget); widget = gtk_entry_new (); gtk_label_set_mnemonic_widget (label, widget); gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_hexpand (widget, TRUE); gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 1, 1); custom_binary_entry = widget; e_binding_bind_property ( use_custom_binary_check, "active", label, "sensitive", G_BINDING_SYNC_CREATE); widget = gtk_check_button_new_with_mnemonic (_("U_se custom arguments")); gtk_grid_attach (GTK_GRID (container), widget, 0, 2, 2, 1); use_custom_args_check = widget; widget = gtk_label_new_with_mnemonic (_("Cus_tom arguments:")); gtk_widget_set_margin_left (widget, 12); gtk_grid_attach (GTK_GRID (container), widget, 0, 3, 1, 1); label = GTK_LABEL (widget); widget = gtk_entry_new (); gtk_label_set_mnemonic_widget (label, widget); gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_hexpand (widget, TRUE); gtk_grid_attach (GTK_GRID (container), widget, 1, 3, 1, 1); custom_args_entry = widget; e_binding_bind_property ( use_custom_args_check, "active", label, "sensitive", G_BINDING_SYNC_CREATE); widget = gtk_label_new (_( "Default arguments are '-i -f %F -- %R', where\n" " %F - stands for the From address\n" " %R - stands for the recipient addresses")); gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_hexpand (widget, TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.0); gtk_label_set_selectable (GTK_LABEL (widget), TRUE); gtk_grid_attach (GTK_GRID (container), widget, 1, 4, 1, 1); attr_list = pango_attr_list_new (); attr = pango_attr_style_new (PANGO_STYLE_ITALIC); pango_attr_list_insert (attr_list, attr); gtk_label_set_attributes (GTK_LABEL (widget), attr_list); pango_attr_list_unref (attr_list); widget = gtk_check_button_new_with_mnemonic (_("Send mail also when in offline _mode")); gtk_grid_attach (GTK_GRID (container), widget, 0, 5, 2, 1); send_in_offline = widget; e_binding_bind_property ( use_custom_binary_check, "active", custom_binary_entry, "sensitive", G_BINDING_SYNC_CREATE); e_binding_bind_property ( settings, "use-custom-binary", use_custom_binary_check, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); e_binding_bind_object_text_property ( settings, "custom-binary", custom_binary_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); e_binding_bind_property ( use_custom_args_check, "active", custom_args_entry, "sensitive", G_BINDING_SYNC_CREATE); e_binding_bind_property ( settings, "use-custom-args", use_custom_args_check, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); e_binding_bind_object_text_property ( settings, "custom-args", custom_args_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); e_binding_bind_property ( settings, "send-in-offline", send_in_offline, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); gtk_widget_show_all (container); }
static void mail_config_remote_backend_insert_widgets (EMailConfigServiceBackend *backend, GtkBox *parent) { EMailConfigRemoteBackend *remote_backend; CamelProvider *provider; CamelSettings *settings; ESource *source; ESourceBackend *extension; EMailConfigServicePage *page; EMailConfigServicePageClass *class; GtkLabel *label; GtkWidget *widget; GtkWidget *container; const gchar *backend_name; const gchar *extension_name; const gchar *text; gchar *markup; remote_backend = E_MAIL_CONFIG_REMOTE_BACKEND (backend); page = e_mail_config_service_backend_get_page (backend); source = e_mail_config_service_backend_get_source (backend); settings = e_mail_config_service_backend_get_settings (backend); class = E_MAIL_CONFIG_SERVICE_PAGE_GET_CLASS (page); extension_name = class->extension_name; extension = e_source_get_extension (source, extension_name); backend_name = e_source_backend_get_backend_name (extension); text = _("Configuration"); markup = g_markup_printf_escaped ("<b>%s</b>", text); widget = gtk_label_new (markup); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = gtk_grid_new (); gtk_widget_set_margin_left (widget, 12); gtk_grid_set_row_spacing (GTK_GRID (widget), 6); gtk_grid_set_column_spacing (GTK_GRID (widget), 6); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); container = widget; widget = gtk_label_new_with_mnemonic (_("_Server:")); gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5); gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); widget = gtk_entry_new (); gtk_widget_set_hexpand (widget, TRUE); gtk_label_set_mnemonic_widget (label, widget); gtk_grid_attach (GTK_GRID (container), widget, 1, 0, 1, 1); remote_backend->host_entry = widget; /* do not reference */ gtk_widget_show (widget); widget = gtk_label_new_with_mnemonic (_("_Port:")); gtk_grid_attach (GTK_GRID (container), widget, 2, 0, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); widget = e_port_entry_new (); gtk_label_set_mnemonic_widget (label, widget); gtk_grid_attach (GTK_GRID (container), widget, 3, 0, 1, 1); remote_backend->port_entry = widget; /* do not reference */ gtk_widget_show (widget); widget = gtk_label_new_with_mnemonic (_("User_name:")); gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5); gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); widget = gtk_entry_new (); gtk_widget_set_hexpand (widget, TRUE); gtk_label_set_mnemonic_widget (label, widget); gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 3, 1); remote_backend->user_entry = widget; /* do not reference */ gtk_widget_show (widget); text = _("Security"); markup = g_markup_printf_escaped ("<b>%s</b>", text); widget = gtk_label_new (markup); gtk_widget_set_margin_top (widget, 6); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = gtk_grid_new (); gtk_widget_set_margin_left (widget, 12); gtk_grid_set_row_spacing (GTK_GRID (widget), 6); gtk_grid_set_column_spacing (GTK_GRID (widget), 6); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); container = widget; widget = gtk_label_new_with_mnemonic (_("Encryption _method:")); gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); /* The IDs correspond to the CamelNetworkSecurityMethod enum. */ widget = gtk_combo_box_text_new (); gtk_combo_box_text_append ( GTK_COMBO_BOX_TEXT (widget), "none", _("No encryption")); gtk_combo_box_text_append ( GTK_COMBO_BOX_TEXT (widget), "starttls-on-standard-port", _("STARTTLS after connecting")); gtk_combo_box_text_append ( GTK_COMBO_BOX_TEXT (widget), "ssl-on-alternate-port", _("SSL on a dedicated port")); gtk_label_set_mnemonic_widget (label, widget); gtk_widget_set_halign (widget, GTK_ALIGN_START); gtk_grid_attach (GTK_GRID (container), widget, 1, 0, 1, 1); remote_backend->security_combo_box = widget; /* do not reference */ gtk_widget_show (widget); provider = camel_provider_get (backend_name, NULL); if (provider != NULL && provider->port_entries != NULL) e_port_entry_set_camel_entries ( E_PORT_ENTRY (remote_backend->port_entry), provider->port_entries); text = _("Authentication"); markup = g_markup_printf_escaped ("<b>%s</b>", text); widget = gtk_label_new (markup); gtk_widget_set_margin_top (widget, 6); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = e_mail_config_auth_check_new (backend); gtk_widget_set_margin_left (widget, 12); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); remote_backend->auth_check = widget; /* do not reference */ gtk_widget_show (widget); e_binding_bind_object_text_property ( settings, "host", remote_backend->host_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property_full ( settings, "security-method", remote_backend->security_combo_box, "active-id", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE, e_binding_transform_enum_value_to_nick, e_binding_transform_enum_nick_to_value, NULL, (GDestroyNotify) NULL); g_object_bind_property ( settings, "port", remote_backend->port_entry, "port", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( settings, "security-method", remote_backend->port_entry, "security-method", G_BINDING_SYNC_CREATE); e_binding_bind_object_text_property ( settings, "user", remote_backend->user_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); /* Don't use G_BINDING_SYNC_CREATE here since the widget * chooses its initial mechanism more intelligently than * a simple property binding would. */ g_object_bind_property ( settings, "auth-mechanism", remote_backend->auth_check, "active-mechanism", G_BINDING_BIDIRECTIONAL); }