Kludge around the brokeness that is GtkOptionMenu just like we kludge
2002-04-09 Jeffrey Stedfast <fejj@ximian.com> * mail-account-gui.c (setup_service): Kludge around the brokeness that is GtkOptionMenu just like we kludge around it for the authtype option menu. svn path=/trunk/; revision=16417
This commit is contained in:

committed by
Jeffrey Stedfast

parent
35d0d166f8
commit
6b93328a40
@ -1,3 +1,9 @@
|
|||||||
|
2002-04-09 Jeffrey Stedfast <fejj@ximian.com>
|
||||||
|
|
||||||
|
* mail-account-gui.c (setup_service): Kludge around the brokeness
|
||||||
|
that is GtkOptionMenu just like we kludge around it for the
|
||||||
|
authtype option menu.
|
||||||
|
|
||||||
2002-04-09 Dan Winship <danw@ximian.com>
|
2002-04-09 Dan Winship <danw@ximian.com>
|
||||||
|
|
||||||
* component-factory.c (create_view): Add view_info arg, but don't
|
* component-factory.c (create_view): Add view_info arg, but don't
|
||||||
|
@ -908,6 +908,7 @@ setup_service (MailAccountGuiService *gsvc, MailConfigService *service)
|
|||||||
gtk_entry_set_text (gsvc->path, url->path);
|
gtk_entry_set_text (gsvc->path, url->path);
|
||||||
|
|
||||||
if (gsvc->provider->flags & CAMEL_PROVIDER_SUPPORTS_SSL) {
|
if (gsvc->provider->flags & CAMEL_PROVIDER_SUPPORTS_SSL) {
|
||||||
|
GList *children, *item;
|
||||||
const char *use_ssl;
|
const char *use_ssl;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -917,12 +918,14 @@ setup_service (MailAccountGuiService *gsvc, MailConfigService *service)
|
|||||||
else if (!*use_ssl) /* old config code just used an empty string as the value */
|
else if (!*use_ssl) /* old config code just used an empty string as the value */
|
||||||
use_ssl = "always";
|
use_ssl = "always";
|
||||||
|
|
||||||
for (i = 0; i < num_ssl_options; i++)
|
children = gtk_container_children (GTK_CONTAINER (gtk_option_menu_get_menu (gsvc->use_ssl)));
|
||||||
if (!strcmp (ssl_options[i].value, use_ssl))
|
for (item = children, i = 0; item; item = item->next, i++) {
|
||||||
|
if (!strcmp (use_ssl, ssl_options[i].value)) {
|
||||||
|
gtk_option_menu_set_history (gsvc->use_ssl, i);
|
||||||
|
gtk_signal_emit_by_name (item->data, "activate", gsvc);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
i = i < num_ssl_options ? i : num_ssl_options - 1;
|
}
|
||||||
gtk_option_menu_set_history (gsvc->use_ssl, i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url->authmech && CAMEL_PROVIDER_ALLOWS (gsvc->provider, CAMEL_URL_PART_AUTH)) {
|
if (url->authmech && CAMEL_PROVIDER_ALLOWS (gsvc->provider, CAMEL_URL_PART_AUTH)) {
|
||||||
@ -996,17 +999,17 @@ construct_ssl_menu (MailAccountGuiService *service)
|
|||||||
gtk_option_menu_set_menu (service->use_ssl, menu);
|
gtk_option_menu_set_menu (service->use_ssl, menu);
|
||||||
|
|
||||||
gtk_option_menu_set_history (service->use_ssl, i - 1);
|
gtk_option_menu_set_history (service->use_ssl, i - 1);
|
||||||
gtk_signal_emit_by_name (GTK_OBJECT (item), "activate");
|
gtk_signal_emit_by_name (GTK_OBJECT (item), "activate", service);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clear_menu (GtkWidget *menu)
|
clear_menu (GtkWidget *menu)
|
||||||
{
|
{
|
||||||
while (GTK_MENU_SHELL (menu)->children)
|
while (GTK_MENU_SHELL (menu)->children)
|
||||||
gtk_container_remove (GTK_CONTAINER (menu), GTK_MENU_SHELL (menu)->children->data);
|
gtk_container_remove (GTK_CONTAINER (menu), GTK_MENU_SHELL (menu)->children->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gint
|
static inline int
|
||||||
sig_get_index (MailConfigSignature *sig)
|
sig_get_index (MailConfigSignature *sig)
|
||||||
{
|
{
|
||||||
return sig->id + (mail_config_get_signatures_random () ? 2 : 1);
|
return sig->id + (mail_config_get_signatures_random () ? 2 : 1);
|
||||||
@ -1076,7 +1079,7 @@ static void
|
|||||||
sig_changed_text (GtkWidget *w, MailAccountGui *gui)
|
sig_changed_text (GtkWidget *w, MailAccountGui *gui)
|
||||||
{
|
{
|
||||||
GtkWidget *active;
|
GtkWidget *active;
|
||||||
gint index;
|
int index;
|
||||||
|
|
||||||
active = gtk_menu_get_active (GTK_MENU (w));
|
active = gtk_menu_get_active (GTK_MENU (w));
|
||||||
index = g_list_index (GTK_MENU_SHELL (w)->children, active);
|
index = g_list_index (GTK_MENU_SHELL (w)->children, active);
|
||||||
@ -1091,7 +1094,7 @@ static void
|
|||||||
sig_changed_html (GtkWidget *w, MailAccountGui *gui)
|
sig_changed_html (GtkWidget *w, MailAccountGui *gui)
|
||||||
{
|
{
|
||||||
GtkWidget *active;
|
GtkWidget *active;
|
||||||
gint index;
|
int index;
|
||||||
|
|
||||||
active = gtk_menu_get_active (GTK_MENU (w));
|
active = gtk_menu_get_active (GTK_MENU (w));
|
||||||
index = g_list_index (GTK_MENU_SHELL (w)->children, active);
|
index = g_list_index (GTK_MENU_SHELL (w)->children, active);
|
||||||
@ -1209,11 +1212,10 @@ sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailAccoun
|
|||||||
{
|
{
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case MAIL_CONFIG_SIG_EVENT_ADDED: {
|
case MAIL_CONFIG_SIG_EVENT_ADDED: {
|
||||||
|
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
GtkWidget *mi;
|
GtkWidget *mi;
|
||||||
|
|
||||||
printf ("accounts ADDED\n");
|
d(printf ("accounts ADDED\n"));
|
||||||
mi = gtk_menu_item_new_with_label (sig->name);
|
mi = gtk_menu_item_new_with_label (sig->name);
|
||||||
gtk_object_set_data (GTK_OBJECT (mi), "sig", sig);
|
gtk_object_set_data (GTK_OBJECT (mi), "sig", sig);
|
||||||
gtk_widget_show (mi);
|
gtk_widget_show (mi);
|
||||||
@ -1229,11 +1231,10 @@ sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailAccoun
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MAIL_CONFIG_SIG_EVENT_NAME_CHANGED: {
|
case MAIL_CONFIG_SIG_EVENT_NAME_CHANGED: {
|
||||||
|
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
GtkWidget *mi;
|
GtkWidget *mi;
|
||||||
|
|
||||||
printf ("gui NAME CHANGED\n");
|
d(printf ("gui NAME CHANGED\n"));
|
||||||
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
||||||
gtk_widget_ref (menu);
|
gtk_widget_ref (menu);
|
||||||
gtk_option_menu_remove_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
gtk_option_menu_remove_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
||||||
@ -1255,20 +1256,21 @@ sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailAccoun
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MAIL_CONFIG_SIG_EVENT_DELETED: {
|
case MAIL_CONFIG_SIG_EVENT_DELETED: {
|
||||||
|
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
GtkWidget *mi;
|
GtkWidget *mi;
|
||||||
|
|
||||||
printf ("gui DELETED\n");
|
d(printf ("gui DELETED\n"));
|
||||||
|
|
||||||
if (sig == gui->text_signature) {
|
if (sig == gui->text_signature) {
|
||||||
gui->text_signature = NULL;
|
gui->text_signature = NULL;
|
||||||
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_text), sig_get_gui_index (gui, TRUE));
|
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_text),
|
||||||
|
sig_get_gui_index (gui, TRUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sig == gui->html_signature) {
|
if (sig == gui->html_signature) {
|
||||||
gui->html_signature = NULL;
|
gui->html_signature = NULL;
|
||||||
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_html), sig_get_gui_index (gui, FALSE));
|
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_html),
|
||||||
|
sig_get_gui_index (gui, FALSE));
|
||||||
}
|
}
|
||||||
|
|
||||||
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
||||||
@ -1282,11 +1284,10 @@ sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailAccoun
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MAIL_CONFIG_SIG_EVENT_RANDOM_ON: {
|
case MAIL_CONFIG_SIG_EVENT_RANDOM_ON: {
|
||||||
|
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
GtkWidget *mi;
|
GtkWidget *mi;
|
||||||
|
|
||||||
printf ("gui RANDOM ON\n");
|
d(printf ("gui RANDOM ON\n"));
|
||||||
|
|
||||||
mi = gtk_menu_item_new_with_label (_("Random"));
|
mi = gtk_menu_item_new_with_label (_("Random"));
|
||||||
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
||||||
@ -1301,20 +1302,21 @@ sig_event_client (MailConfigSigEvent event, MailConfigSignature *sig, MailAccoun
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MAIL_CONFIG_SIG_EVENT_RANDOM_OFF: {
|
case MAIL_CONFIG_SIG_EVENT_RANDOM_OFF: {
|
||||||
|
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
GtkWidget *mi;
|
GtkWidget *mi;
|
||||||
|
|
||||||
printf ("gui RANDOM OFF\n");
|
d(printf ("gui RANDOM OFF\n"));
|
||||||
|
|
||||||
if (gui->text_random) {
|
if (gui->text_random) {
|
||||||
gui->text_random = FALSE;
|
gui->text_random = FALSE;
|
||||||
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_text), sig_get_gui_index (gui, TRUE));
|
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_text),
|
||||||
|
sig_get_gui_index (gui, TRUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gui->html_random) {
|
if (gui->html_random) {
|
||||||
gui->html_random = FALSE;
|
gui->html_random = FALSE;
|
||||||
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_html), sig_get_gui_index (gui, FALSE));
|
gtk_option_menu_set_history (GTK_OPTION_MENU (gui->sig_option_html),
|
||||||
|
sig_get_gui_index (gui, FALSE));
|
||||||
}
|
}
|
||||||
|
|
||||||
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (gui->sig_option_text));
|
||||||
@ -1721,6 +1723,7 @@ save_service (MailAccountGuiService *gsvc, GHashTable *extra_config,
|
|||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
if (!gsvc->provider) {
|
if (!gsvc->provider) {
|
||||||
|
printf ("no provider??\n");
|
||||||
g_free (service->url);
|
g_free (service->url);
|
||||||
service->url = NULL;
|
service->url = NULL;
|
||||||
return;
|
return;
|
||||||
@ -1767,7 +1770,9 @@ save_service (MailAccountGuiService *gsvc, GHashTable *extra_config,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (gsvc->provider->flags & CAMEL_PROVIDER_SUPPORTS_SSL) {
|
if (gsvc->provider->flags & CAMEL_PROVIDER_SUPPORTS_SSL) {
|
||||||
char *use_ssl = gtk_object_get_data (GTK_OBJECT (gsvc->ssl_selected), "use_ssl");
|
const char *use_ssl;
|
||||||
|
|
||||||
|
use_ssl = gtk_object_get_data (GTK_OBJECT (gsvc->ssl_selected), "use_ssl");
|
||||||
|
|
||||||
/* set the value to either "always" or "when-possible"
|
/* set the value to either "always" or "when-possible"
|
||||||
but don't bother setting it for "never" */
|
but don't bother setting it for "never" */
|
||||||
@ -1847,7 +1852,7 @@ mail_account_gui_save (MailAccountGui *gui)
|
|||||||
service_destroy (account->transport);
|
service_destroy (account->transport);
|
||||||
account->transport = g_new0 (MailConfigService, 1);
|
account->transport = g_new0 (MailConfigService, 1);
|
||||||
if (CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT (gui->transport.provider))
|
if (CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT (gui->transport.provider))
|
||||||
save_service (&gui->source, gui->extra_config, account->transport);
|
save_service (&gui->transport, gui->extra_config, account->transport);
|
||||||
else
|
else
|
||||||
save_service (&gui->transport, NULL, account->transport);
|
save_service (&gui->transport, NULL, account->transport);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user