netscape-revival
cmd/xfe/prefdialogs.c
/* -*- Mode:C; tab-width: 8 -*-
dialogs.c --- Preference dialogs.
Copyright © 1998 Netscape Communications Corporation, all rights reserved.
Created: Spence Murray <spence@netscape.com>, 30-Sep-95.
*/
#define PREFS_NET
#define PREFS_SOCKS
#define PREFS_DISK_CACHE
#define PREFS_VERIFY
#define PREFS_CLEAR_CACHE_BUTTONS
#define PREFS_SIG
#define PREFS_NEWS_MAX
#define PREFS_8BIT
/* #define PREFS_EMPTY_TRASH */
/* #define PREFS_QUEUED_DELIVERY */
#include "mozilla.h"
#include "xlate.h"
#include "xfe.h"
#include "felocale.h"
#include "nslocks.h"
#ifdef DUPLICATE_SEC_PREFS
#include "sslproto.h"
#include "secnav.h"
#include "cert.h"
#include "mozjava.h"
#endif /* DUPLICATE_SEC_PREFS */
#include "prnetdb.h"
#include "e_kit.h"
#include "pref_helpers.h"
#ifdef MOCHA
#include "libmocha.h"
#endif /* MOCHA */
#include <X11/IntrinsicP.h> /* for w->core.height */
#include <X11/Shell.h>
#include <Xm/Label.h>
#include <Xm/CascadeBG.h>
#include <Xm/PanedW.h>
#include <Xm/PushB.h>
#include <Xm/ToggleB.h>
#ifdef REQUEST_LANGUAGE
#include <Xm/ArrowBG.h>
#endif
#ifndef _STDC_
#define _STDC_ 1
#define HACKED_STDC 1
#endif
#include <XmL/Folder.h>
#ifdef HACKED_STDC
#undef HACKED_STDC
#undef _STDC_
#endif
#include "ssl.h" /* security stuff from include dir */
#include "xp_sec.h"
#include "msgcom.h"
#include "il.h" /* Image library definitions */
/* For sys_errlist and sys_nerr */
#include <sys/errno.h>
/*extern char *sys_errlist[];*/
extern int sys_nerr;
#include <nspr/prprf.h>
#include <libi18n.h>
#include "fonts.h"
/* for XP_GetString() */
#include <xpgetstr.h>
extern int XFE_FILE_DOES_NOT_EXIST;
extern int XFE_FTP_PROXY_HOST;
extern int XFE_GLOBAL_MAILCAP_FILE;
extern int XFE_GLOBAL_MIME_FILE;
extern int XFE_GOPHER_PROXY_HOST;
extern int XFE_HOST_IS_UNKNOWN;
extern int XFE_HTTPS_PROXY_HOST;
extern int XFE_HTTP_PROXY_HOST;
extern int XFE_MAIL_HOST;
extern int XFE_NEWS_HOST;
extern int XFE_NEWS_RC_DIRECTORY;
extern int XFE_NO_PORT_NUMBER;
extern int XFE_PRIVATE_MAILCAP_FILE;
extern int XFE_PRIVATE_MIME_FILE;
extern int XFE_SOCKS_HOST;
extern int XFE_TEMP_DIRECTORY;
extern int XFE_WAIS_PROXY_HOST;
extern int XFE_WARNING;
extern int XFE_ERROR_SAVING_OPTIONS;
extern int XFE_GENERAL;
extern int XFE_PASSWORDS;
extern int XFE_PERSONAL_CERTIFICATES;
extern int XFE_SITE_CERTIFICATES;
extern int XFE_UNKNOWN_ERROR;
extern int XFE_APPEARANCE;
extern int XFE_BOOKMARKS;
extern int XFE_COLORS;
extern int XFE_FONTS;
extern int XFE_APPLICATIONS;
extern int XFE_HELPERS;
extern int XFE_IMAGES;
extern int XFE_LANGUAGES;
extern int XFE_CACHE;
extern int XFE_CONNECTIONS;
extern int XFE_PROXIES;
extern int XFE_PROTOCOLS;
extern int XFE_LANG;
extern int XFE_APPEARANCE;
extern int XFE_COMPOSE_DLG;
extern int XFE_SERVERS;
extern int XFE_IDENTITY;
extern int XFE_ORGANIZATION;
extern int XFE_CHANGE_PASSWORD;
extern int XFE_SET_PASSWORD;
extern int XFE_PRIVATE_MIMETYPE_RELOAD;
extern int XFE_PRIVATE_MAILCAP_RELOAD;
extern int XFE_PRIVATE_RELOADED_MIMETYPE;
extern int XFE_PRIVATE_RELOADED_MAILCAP;
extern char* fe_mn_getmailbox(void);
void fe_attach_field_to_labels (Widget value_field, ...);
void fe_browse_file_of_text (MWContext *context, Widget text_field,
Boolean dirp);
void fe_UnmanageChild_safe (Widget w);
/* The last prefs page displayed, by folder */
static int current_general_page = xfe_GENERAL_OFFSET;
static int current_mailnews_page = xfe_MAILNEWS_OFFSET;
static int current_network_page = xfe_NETWORK_OFFSET;
static int current_security_page = xfe_SECURITY_OFFSET;
/* Preferences
*/
struct fe_prefs_data
{
MWContext *context;
Widget shell, form;
/*=== General prefs folder ===*/
Widget general_form;
/* Appearance page */
Widget styles1_selector, styles1_page;
Widget icons_p, text_p, both_p, tips_p;
Widget browser_p, mail_p, news_p;
Widget blank_p, home_p, home_text;
Widget underline_p;
Widget expire_days_p, expire_days_text, never_expire_p;
/* Applications page */
Widget apps_selector, apps_page;
Widget tmp_text;
Widget telnet_text, tn3270_text, rlogin_text, rlogin_user_text;
#if 0
/* Bookmarks page */
Widget bookmarks_selector, bookmarks_page;
Widget book_text;
#endif
/* Colors page */
Widget colors_selector, colors_page;
/* Fonts page */
Widget fonts_selector, fonts_page;
Widget prop_family_pulldown, fixed_family_pulldown;
Widget prop_family_option, fixed_family_option;
Widget prop_size_pulldown, fixed_size_pulldown;
Widget prop_size_option, fixed_size_option;
Widget prop_size_field, fixed_size_field;
Widget prop_size_toggle, fixed_size_toggle;
int fonts_changed;
/* Helpers page */
Widget helpers_selector, helpers_page;
int helpers_changed;
struct fe_prefs_helpers_data *helpers;
/* Images page */
Widget images_selector, images_page;
Widget auto_p, dither_p, closest_p;
Widget while_loading_p, after_loading_p;
#ifdef REQUEST_LANGUAGE
/* Languages page */
Widget languages_selector, languages_page;
#endif
/*=== Mail/News prefs folder ===*/
Widget mailnews_form;
/* Appearance page */
Widget appearance_selector, appearance_page;
Widget fixed_message_font_p, var_message_font_p;
Widget cite_plain_p, cite_bold_p, cite_italic_p, cite_bold_italic_p;
Widget cite_normal_p, cite_bigger_p, cite_smaller_p;
Widget cite_color_text;
Widget mail_horiz_p, mail_vert_p, mail_stack_p, mail_tall_p;
Widget news_horiz_p, news_vert_p, news_stack_p, news_tall_p;
/* Compose page */
Widget compose_selector, compose_page;
Widget eightbit_toggle, qp_toggle;
Widget deliverAuto_toggle, deliverQ_toggle;
Widget mMailOutSelf_toggle, mMailOutOther_text;
Widget nMailOutSelf_toggle, nMailOutOther_text;
Widget mCopyOut_text;
Widget nCopyOut_text;
Widget autoquote_toggle;
/* Servers page */
Widget dirs_selector, dirs_page;
Widget srvr_text, user_text;
Widget pop_toggle;
Widget movemail_text;
Widget external_toggle, builtin_toggle;
Widget no_limit, msg_limit, limit_text;
Widget msg_remove, msg_leave;
Widget check_every, check_never, check_text;
Widget smtp_text, maildir_text;
Widget newshost_text, newsrc_text, newsmax_text;
/* Identity page */
Widget identity_selector, identity_page;
Widget user_name_text, user_mail_text, user_org_text, user_sig_text;
/* Organization page */
Widget organization_selector, organization_page;
Widget emptyTrash_toggle, rememberPswd_toggle;
Widget threadmail_toggle, threadnews_toggle;
Widget mdate_toggle, mnum_toggle, msubject_toggle, msender_toggle;
Widget ndate_toggle, nnum_toggle, nsubject_toggle, nsender_toggle;
/*=== Network prefs folder ===*/
Widget network_form;
/* Cache page */
Widget cache_selector, cache_page;
Widget memory_text, memory_clear;
Widget disk_text, disk_dir, disk_clear;
Widget verify_label, once_p, every_p, expired_p;
Widget cache_ssl_p;
/* Nework page */
Widget network_selector, network_page;
Widget buf_label, buf_text;
Widget conn_label, conn_text;
/* Proxies page */
Widget proxies_selector, proxies_page;
Widget no_proxies_p, manual_p, manual_browse;
Widget auto_proxies_p, proxy_label, proxy_text;
Widget proxy_reload;
Widget ftp_text, ftp_port;
Widget gopher_text, gopher_port;
Widget http_text, http_port;
Widget https_text, https_port;
Widget wais_text, wais_port;
Widget no_text;
Widget socks_text, socks_port;
/* Protocols page */
Widget protocols_selector, protocols_page;
Widget cookie_p; /* Show alert before accepting a cookie */
Widget anon_ftp_p; /* Use email address for anon ftp */
Widget email_form_p; /* Show alert before submiting a form by email */
/* Languages page */
Widget lang_selector, lang_page;
#ifdef JAVA
Widget java_toggle;
#endif
#ifdef MOCHA
Widget javascript_toggle;
#endif
#ifdef DUPLICATE_SEC_PREFS
/*=== Security prefs folder ===*/
Widget security_form;
/* General Security page */
Widget sec_general_selector, sec_general_page;
Widget enter_toggle, leave_toggle, mixed_toggle, submit_toggle;
Widget ssl2_toggle, ssl3_toggle;
/* Security Passwords page */
Widget sec_passwords_selector, sec_passwords_page;
Widget once_toggle, every_toggle, periodic_toggle;
Widget periodic_text, change_password;
/* Personal Certificates page */
Widget personal_selector, personal_page;
Widget pers_list, pers_info, pers_delete_cert, pers_new_cert;
Widget site_default, pers_label;
Widget pers_cert_menu;
char *deleted_user_cert;
/* Site Certificates page */
Widget site_selector, site_page;
Widget all_list, all_edit_cert, all_delete_cert;
Widget all_label;
char *deleted_site_cert;
#endif /* DUPLICATE_SEC_PREFS */
};
void
FE_SetPasswordAskPrefs(MWContext *context, int askPW, int timeout)
{
/* Xfe's notions of askpassword state is 0, 1 or 2 while that of backend is
-1, 0 or 1. That is why we add 1. */
fe_globalPrefs.ask_password = askPW + 1;
if (fe_globalPrefs.ask_password == 2)
fe_globalPrefs.password_timeout = timeout;
/* Save the pref file */
if (!XFE_SavePrefs ((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
{
if (context != NULL)
fe_perror (context, XP_GetString( XFE_ERROR_SAVING_OPTIONS));
}
}
void
FE_SetPasswordEnabled(MWContext *context, PRBool usePW)
{
#ifdef DUPLICATE_SEC_PREFS
char *s;
/* If context is displaying the pref now, then change these values
rightaway in the pref that is shown to the user. */
if (context && CONTEXT_DATA(context)->currentPrefDialog &&
CONTEXT_DATA(context)->fep &&
XtIsManaged(CONTEXT_DATA(context)->fep->change_password)) {
struct fe_prefs_data *fep = CONTEXT_DATA(context)->fep;
if (usePW)
s = XP_GetString(XFE_CHANGE_PASSWORD);
else
s = XP_GetString(XFE_SET_PASSWORD);
fe_SetString (fep->change_password, XmNlabelString, s);
}
#endif /* DUPLICATE_SEC_PREFS */
}
void
fe_MarkHelpersModified(MWContext *context)
{
/* Mark that the helpers have been modified. We need this
* to detect if we need to save/reload all these helpers.
* For doing this, the condition we adopt is
* (1) User clicked on 'OK' button for the Edit Helpers Dialog
* This also covers the "New" case as the same Dialog
* is shown for the "New" and "Edit".
* (2) User deleted a mime/type and confirmed it.
*/
if (context && CONTEXT_DATA(context)->fep)
CONTEXT_DATA(context)->fep->helpers_changed = TRUE;
}
/*======================== A pile of callbacks ========================*/
static void
fe_set_proxies_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->no_proxies_p)
{
XtVaSetValues (fep->manual_p, XmNset, False, 0);
XtVaSetValues (fep->auto_proxies_p, XmNset, False, 0);
XtVaSetValues (fep->manual_browse, XmNsensitive, False, 0);
XtVaSetValues (fep->proxy_text, XmNsensitive, False, 0);
XtVaSetValues (fep->proxy_reload, XmNsensitive, False, 0);
}
else if (widget == fep->manual_p)
{
XtVaSetValues (fep->no_proxies_p, XmNset, False, 0);
XtVaSetValues (fep->auto_proxies_p, XmNset, False, 0);
XtVaSetValues (fep->manual_browse, XmNsensitive, True, 0);
XtVaSetValues (fep->proxy_text, XmNsensitive, False, 0);
XtVaSetValues (fep->proxy_reload, XmNsensitive, False, 0);
}
else if (widget == fep->auto_proxies_p)
{
XtVaSetValues (fep->manual_p, XmNset, False, 0);
XtVaSetValues (fep->no_proxies_p, XmNset, False, 0);
XtVaSetValues (fep->manual_browse, XmNsensitive, False, 0);
XtVaSetValues (fep->proxy_text, XmNsensitive, True, 0);
XtVaSetValues (fep->proxy_reload, XmNsensitive, True, 0);
}
else
abort ();
}
static void
fe_proxy_reload_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *s1;
XtVaGetValues (fep->proxy_text, XmNvalue, &s1, 0);
if (*s1) {
NET_SetProxyServer(PROXY_AUTOCONF_URL, s1);
fe_globalPrefs.proxy_url = XP_STRDUP (s1);
XP_FREE (s1);
}
NET_ReloadProxyConfig (fep->context);
}
static void fe_make_proxies_dialog (MWContext *ctx,
struct fe_prefs_data *data);
static void
fe_view_proxies_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_make_proxies_dialog (fep->context, fep);
}
/* forward definition for the cert callbacks */
static void fe_prefs_destroy_cb (Widget, XtPointer, XtPointer);
#ifdef DUPLICATE_SEC_PREFS
static void
fe_cert_pulldown_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XtPointer data;
XmStringTable str_list = 0;
int n;
int cert_type = -1;
CERTCertNicknames *certnames;
XtVaGetValues (fep->all_list, XmNitems, &str_list, XmNitemCount, &n, 0);
XmListDeleteItems (fep->all_list, str_list, n);
str_list = 0;
XtVaGetValues (widget, XmNuserData, &data, 0);
cert_type = (int) data;
/* Change the values in the Scrolled List */
certnames = CERT_GetCertNicknames (CERT_GetDefaultCertDB(), cert_type,
fep->context);
XP_ASSERT (certnames);
if (!certnames) return;
str_list = (XmStringTable) XP_ALLOC (sizeof (XmString) *
certnames->numnicknames);
for (n = 0; n < certnames->numnicknames; n++)
str_list[n] = XmStringCreateLocalized (certnames->nicknames[n]);
XtVaSetValues (fep->all_list, XmNitems, str_list, XmNitemCount, n, 0);
if (certnames->numnicknames)
XmListSelectPos (fep->all_list, 1, False);
for (n = 0; n < certnames->numnicknames; n++)
XmStringFree (str_list [n]);
XP_FREE (str_list);
CERT_FreeNicknames (certnames);
}
static void
fe_all_edit_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *certname;
XmString *str;
int n = 0;
XtVaGetValues (fep->all_list,
XmNselectedItems, &str,
XmNselectedItemCount, &n,
0);
if (n) {
XmStringGetLtoR (str[0], XmFONTLIST_DEFAULT_TAG, &certname);
if (certname) {
MWContext *context = fep->context;
SECNAV_EditSiteCertificate (context, certname);
XP_FREE (certname);
}
}
}
static void
fe_redraw_site_cert_cb (void *closure)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
if (fep->deleted_site_cert) {
XmString str = XmStringCreateLocalized (fep->deleted_site_cert);
XmListDeleteItem (fep->all_list, str);
XmStringFree (str);
XP_FREE (fep->deleted_site_cert);
}
}
static void
fe_all_delete_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *certname;
XmString *str;
int n = 0;
XtVaGetValues (fep->all_list,
XmNselectedItems, &str,
XmNselectedItemCount, &n,
0);
if (n) {
XmStringGetLtoR (str[0], XmFONTLIST_DEFAULT_TAG, &certname);
fep->deleted_site_cert = XP_STRDUP (certname);
if (certname) {
MWContext *context = fep->context;
SECNAV_DeleteSiteCertificate (context, certname,
(SECNAVDeleteCertCallback) fe_redraw_site_cert_cb, fep);
XP_FREE (certname);
}
}
}
static void
fe_cert_info_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *certname;
XmString *str;
int n = 0;
XtVaGetValues (fep->pers_list,
XmNselectedItems, &str,
XmNselectedItemCount, &n,
0);
if (n) {
XmStringGetLtoR (str[0], XmFONTLIST_DEFAULT_TAG, &certname);
if (certname) {
MWContext *context = fep->context;
SECNAV_ViewUserCertificate (context, certname);
XP_FREE (certname);
}
}
}
static void
fe_redraw_user_cert_cb (void *closure)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
if (fep->deleted_user_cert) {
XmString str = XmStringCreateLocalized (fep->deleted_user_cert);
XmListDeleteItem (fep->pers_list, str);
XmStringFree (str);
XP_FREE (fep->deleted_user_cert);
}
}
static void
fe_cert_delete_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *certname;
XmString *str;
int n = 0;
XtVaGetValues (fep->pers_list,
XmNselectedItems, &str,
XmNselectedItemCount, &n,
0);
if (n) {
XmStringGetLtoR (str[0], XmFONTLIST_DEFAULT_TAG, &certname);
fep->deleted_user_cert = XP_STRDUP (certname);
if (certname) {
MWContext *context = fep->context;
SECNAV_DeleteUserCertificate (context, certname,
(SECNAVDeleteCertCallback) fe_redraw_user_cert_cb, fep);
XP_FREE (certname);
}
}
}
static void fe_prefs_destroy_dialog (struct fe_prefs_data *);
static void
fe_cert_new_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
MWContext *context = fep->context;
fe_prefs_destroy_dialog (fep);
SECNAV_NewUserCertificate (context);
}
static void
fe_ssl_enable_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
MWContext *context = fep->context;
int ssl_version;
XtVaGetValues (widget, XmNuserData, &ssl_version, 0);
SECNAV_MakeCiphersDialog(context, ssl_version);
}
#endif /* DUPLICATE_SEC_PREFS */
static void
fe_browse_to_text_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
Widget wtext;
XtVaGetValues (widget, XmNuserData, &wtext, 0);
if (!wtext) return;
fe_browse_file_of_text (fep->context, wtext, False);
}
static void
fe_browse_movemail_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->movemail_text, True);
}
static void
fe_browse_maildir_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->maildir_text, True);
}
static void
fe_browse_tmp_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->tmp_text, True);
}
#if 0
static void
fe_browse_book_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->book_text, False);
}
#endif
/* Toggle callback for all the toggle buttons in organization pane */
static void
fe_org_toggle_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
/* mail Sorting */
else if (widget == fep->mdate_toggle) {
XtVaSetValues (fep->mnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->msender_toggle, XmNset, False, 0);
}
else if (widget == fep->mnum_toggle) {
XtVaSetValues (fep->mdate_toggle, XmNset, False, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->msender_toggle, XmNset, False, 0);
}
else if (widget == fep->msubject_toggle) {
XtVaSetValues (fep->mdate_toggle, XmNset, False, 0);
XtVaSetValues (fep->mnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->msender_toggle, XmNset, False, 0);
}
else if (widget == fep->msender_toggle) {
XtVaSetValues (fep->mdate_toggle, XmNset, False, 0);
XtVaSetValues (fep->mnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, False, 0);
}
/* news Sorting */
else if (widget == fep->ndate_toggle) {
XtVaSetValues (fep->nnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, False, 0);
}
else if (widget == fep->nnum_toggle) {
XtVaSetValues (fep->ndate_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, False, 0);
}
else if (widget == fep->nsubject_toggle) {
XtVaSetValues (fep->ndate_toggle, XmNset, False, 0);
XtVaSetValues (fep->nnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, False, 0);
}
else if (widget == fep->nsender_toggle) {
XtVaSetValues (fep->ndate_toggle, XmNset, False, 0);
XtVaSetValues (fep->nnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, False, 0);
}
else
abort ();
}
#ifdef PREFS_VERIFY
static void
fe_cache_verify_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->once_p)
{
XtVaSetValues (fep->every_p, XmNset, False, 0);
XtVaSetValues (fep->expired_p, XmNset, False, 0);
}
else if (widget == fep->every_p)
{
XtVaSetValues (fep->once_p, XmNset, False, 0);
XtVaSetValues (fep->expired_p, XmNset, False, 0);
}
else if (widget == fep->expired_p)
{
XtVaSetValues (fep->once_p, XmNset, False, 0);
XtVaSetValues (fep->every_p, XmNset, False, 0);
}
else
abort ();
}
#endif/* PREFS_VERIFY */
static void
fe_cache_dither_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->dither_p)
{
XtVaSetValues (fep->auto_p, XmNset, False, 0);
XtVaSetValues (fep->closest_p, XmNset, False, 0);
}
else if (widget == fep->closest_p)
{
XtVaSetValues (fep->auto_p, XmNset, False, 0);
XtVaSetValues (fep->dither_p, XmNset, False, 0);
}
else if (widget == fep->auto_p)
{
XtVaSetValues (fep->closest_p, XmNset, False, 0);
XtVaSetValues (fep->dither_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_cache_display_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->while_loading_p)
XtVaSetValues (fep->after_loading_p, XmNset, False, 0);
else if (widget == fep->after_loading_p)
XtVaSetValues (fep->while_loading_p, XmNset, False, 0);
else
abort ();
}
#ifdef PREFS_DISK_CACHE
static void
fe_disk_cache_browse_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->disk_dir, True);
}
#endif /* PREFS_DISK_CACHE */
#ifdef PREFS_CLEAR_CACHE_BUTTONS
static void
fe_clear_mem_cache_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
if (XFE_Confirm (fep->context, fe_globalData.clear_mem_cache_message))
{
int real_size = fe_globalPrefs.memory_cache_size * 1024;
NET_SetMemoryCacheSize (0);
NET_SetMemoryCacheSize (real_size);
}
}
#ifdef PREFS_DISK_CACHE
static void
fe_clear_disk_cache_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
if (XFE_Confirm (fep->context, fe_globalData.clear_disk_cache_message))
{
int real_size = fe_globalPrefs.disk_cache_size * 1024;
NET_SetDiskCacheSize (0);
NET_CleanupCacheDirectory (FE_CacheDir, "cache");
NET_WriteCacheFAT (0, False);
NET_SetDiskCacheSize (real_size);
}
}
#endif /* PREFS_DISK_CACHE */
#endif /* PREFS_CLEAR_CACHE_BUTTONS */
#ifdef PREFS_SIG
static void
fe_browse_sig_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->user_sig_text, False);
}
#endif
static void
fe_browse_newsrc_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_browse_file_of_text (fep->context, fep->newsrc_text, True);
}
static void
fe_mail_pop_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->pop_toggle)
{
XtVaSetValues (fep->builtin_toggle, XmNset, False, 0);
XtVaSetValues (fep->external_toggle, XmNset, False, 0);
XtVaSetValues (fep->movemail_text, XmNsensitive, False, 0);
if ( !ekit_PopServer() ) {
XtVaSetValues (fep->srvr_text, XmNsensitive, True, 0);
}
if ( !ekit_PopName() ) {
XtVaSetValues (fep->user_text, XmNsensitive, True, 0);
}
}
else if (widget == fep->builtin_toggle)
{
XtVaSetValues (fep->pop_toggle, XmNset, False, 0);
XtVaSetValues (fep->srvr_text, XmNsensitive, False, 0);
XtVaSetValues (fep->user_text, XmNsensitive, False, 0);
XtVaSetValues (fep->movemail_text, XmNsensitive, False, 0);
XtVaSetValues (fep->external_toggle, XmNset, False, 0);
}
else if (widget == fep->external_toggle)
{
XtVaSetValues (fep->pop_toggle, XmNset, False, 0);
XtVaSetValues (fep->srvr_text, XmNsensitive, False, 0);
XtVaSetValues (fep->user_text, XmNsensitive, False, 0);
XtVaSetValues (fep->builtin_toggle, XmNset, False, 0);
XtVaSetValues (fep->movemail_text, XmNsensitive, True, 0);
}
else
abort ();
}
#if 0
static void
fe_change_pass_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
MWContext *context = fep->context;
SECNAV_ChangePassword(context);
}
#endif
#ifdef DUPLICATE_SEC_PREFS
static void
fe_set_pass_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->once_toggle)
{
XtVaSetValues (fep->every_toggle, XmNset, False, 0);
XtVaSetValues (fep->periodic_toggle, XmNset, False, 0);
XtVaSetValues (fep->periodic_text, XmNsensitive, False, 0);
}
else if (widget == fep->every_toggle)
{
XtVaSetValues (fep->once_toggle, XmNset, False, 0);
XtVaSetValues (fep->periodic_toggle, XmNset, False, 0);
XtVaSetValues (fep->periodic_text, XmNsensitive, False, 0);
}
else if (widget == fep->periodic_toggle)
{
XtVaSetValues (fep->once_toggle, XmNset, False, 0);
XtVaSetValues (fep->every_toggle, XmNset, False, 0);
XtVaSetValues (fep->periodic_text, XmNsensitive, True, 0);
}
else
abort ();
}
#endif /* DUPLICATE_SEC_PREFS */
static void
fe_msg_limit_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->no_limit)
{
XtVaSetValues (fep->msg_limit, XmNset, False, 0);
XtVaSetValues (fep->limit_text, XmNsensitive, False, 0);
}
else if (widget == fep->msg_limit)
{
XtVaSetValues (fep->no_limit, XmNset, False, 0);
if ( !ekit_MsgSizeLimit() ) {
XtVaSetValues (fep->limit_text, XmNsensitive, True, 0);
}
}
else
abort ();
}
static void
fe_msg_on_server_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->msg_remove)
{
XtVaSetValues (fep->msg_leave, XmNset, False, 0);
}
else if (widget == fep->msg_leave)
{
XtVaSetValues (fep->msg_remove, XmNset, False, 0);
}
else
abort ();
}
static void
fe_msg_check_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->check_every)
{
XtVaSetValues (fep->check_never, XmNset, False, 0);
XtVaSetValues (fep->check_text, XmNsensitive, True, 0);
}
else if (widget == fep->check_never)
{
XtVaSetValues (fep->check_every, XmNset, False, 0);
XtVaSetValues (fep->check_text, XmNsensitive, False, 0);
}
else
abort ();
}
static void
fe_mail_eightbit_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
#ifdef PREFS_8BIT
else if (widget == fep->eightbit_toggle)
XtVaSetValues (fep->qp_toggle, XmNset, False, 0);
else if (widget == fep->qp_toggle)
XtVaSetValues (fep->eightbit_toggle, XmNset, False, 0);
#endif /* PREFS_8BIT */
#ifdef PREFS_QUEUED_DELIVERY
else if (widget == fep->deliverAuto_toggle)
XtVaSetValues (fep->deliverQ_toggle, XmNset, False, 0);
else if (widget == fep->deliverQ_toggle)
XtVaSetValues (fep->deliverAuto_toggle, XmNset, False, 0);
#endif
else
abort ();
}
static void
fe_styles_toolbar_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->icons_p)
{
XtVaSetValues (fep->text_p, XmNset, False, 0);
XtVaSetValues (fep->both_p, XmNset, False, 0);
}
else if (widget == fep->text_p)
{
XtVaSetValues (fep->icons_p, XmNset, False, 0);
XtVaSetValues (fep->both_p, XmNset, False, 0);
}
else if (widget == fep->both_p)
{
XtVaSetValues (fep->text_p, XmNset, False, 0);
XtVaSetValues (fep->icons_p, XmNset, False, 0);
}
else
{
abort ();
}
}
static void
fe_styles_start_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->blank_p)
{
XtVaSetValues (fep->home_p, XmNset, False, 0);
XtVaSetValues (fep->home_text, XmNsensitive, False, 0);
}
else if (widget == fep->home_p)
{
XtVaSetValues (fep->blank_p, XmNset, False, 0);
XtVaSetValues (fep->home_text, XmNsensitive, True, 0);
}
else
abort ();
}
static void
fe_styles_startup_page_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->browser_p)
{
XtVaSetValues (fep->mail_p, XmNset, False, 0);
XtVaSetValues (fep->news_p, XmNset, False, 0);
}
else if (widget == fep->mail_p)
{
XtVaSetValues (fep->browser_p, XmNset, False, 0);
XtVaSetValues (fep->news_p, XmNset, False, 0);
}
else if (widget == fep->news_p)
{
XtVaSetValues (fep->browser_p, XmNset, False, 0);
XtVaSetValues (fep->mail_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_relayout_all_contexts(void)
{
struct fe_MWContext_cons *cons;
for (cons = fe_all_MWContexts; cons; cons = cons->next)
{
switch (cons->context->type)
{
case MWContextBrowser:
case MWContextMail:
case MWContextNews:
fe_ReLayout(cons->context, 0);
break;
default:
break;
}
}
}
/* This disabled the backends notion of the font cache.
*
* FE caches fonts for each LO_TextAttr in the LO_TextAttr->FE_Data. Once
* the user changes either the default family/face, size, proportional/fixed,
* scaled/non-scaled, we will need to clear the font cache that backend
* maintains.
*/
static void
fe_InvalidateFontData(void)
{
struct fe_MWContext_cons *cons;
/*
* free the Asian font groups, which are also caches
*/
fe_FreeFontGroups();
for (cons = fe_all_MWContexts; cons; cons = cons->next)
{
switch (cons->context->type)
{
case MWContextBrowser:
case MWContextMail:
case MWContextNews:
LO_InvalidateFontData(cons->context);
break;
default:
break;
}
}
}
static void
fe_allow_font_scaling_cb(Widget widget, XtPointer closure, XtPointer call_data)
{
XmToggleButtonCallbackStruct *cb;
XtPointer data;
fe_FontFamily *family;
struct fe_prefs_data *fep;
int i;
fe_FontPitch *pitch;
unsigned int allowScaling;
cb = (XmToggleButtonCallbackStruct *) call_data;
fep = (struct fe_prefs_data *) closure;
fep->fonts_changed = 1;
XtVaGetValues(widget, XmNuserData, &data, 0);
pitch = (fe_FontPitch *) data;
family = NULL;
for (i = 0; i < pitch->numberOfFamilies; i++)
{
family = &pitch->families[i];
if (family->selected)
{
break;
}
else
{
family = NULL;
}
}
if (!family)
{
return;
}
if (cb->set)
{
allowScaling = 1;
}
else
{
allowScaling = 0;
}
/*
* sanity check
*/
if (family->pointSizes->size)
{
allowScaling = 0;
XtVaSetValues(widget, XmNset, False, 0);
XtVaSetValues(widget, XmNsensitive, False, 0);
}
else if (family->numberOfPointSizes == 1)
{
allowScaling = 1;
XtVaSetValues(widget, XmNset, True, 0);
XtVaSetValues(widget, XmNsensitive, False, 0);
}
if (allowScaling != family->allowScaling) {
fe_FreeFontSizeTable(family);
family->allowScaling = allowScaling;
fe_InvalidateFontData();
fe_relayout_all_contexts();
}
}
static void
fe_get_scaled_font_size(struct fe_prefs_data *fep)
{
char *buf;
fe_FontCharSet *charset = NULL;
char *endptr;
fe_FontFamily *family;
Widget field;
int i;
int j;
int oldSize;
fe_FontPitch *pitch;
for (i = 0; i < INTL_CHAR_SET_MAX; i++)
{
if (fe_FontCharSets[i].selected)
{
charset = &fe_FontCharSets[i];
}
}
if (!charset)
{
return;
}
for (i = 0; i < 2; i++)
{
field = (i ? fep->fixed_size_field : fep->prop_size_field);
pitch = &charset->pitches[i];
XtVaGetValues(field, XmNvalue, &buf, 0);
family = NULL;
for (j = 0; j < pitch->numberOfFamilies; j++)
{
family = &pitch->families[j];
if (family->selected)
{
break;
}
else
{
family = NULL;
}
}
if (!family)
{
continue;
}
oldSize = family->scaledSize;
errno = 0;
family->scaledSize = ((int) (strtod(buf, &endptr) * 10));
if (errno || (family->scaledSize < 0))
{
family->scaledSize = 0;
}
if (family->scaledSize != oldSize)
{
fep->fonts_changed = 1;
fe_FreeFontSizeTable(family);
fe_InvalidateFontData();
}
free(buf);
}
}
static void
fe_font_size_cb(Widget widget, XtPointer closure, XtPointer call_data)
{
XtPointer data;
fe_FontFamily *family;
struct fe_prefs_data *fep;
int i;
fe_FontPitch *pitch;
fe_FontSize *size;
int thisSize;
fep = (struct fe_prefs_data *) closure;
fep->fonts_changed = 1;
XtVaGetValues(widget, XmNuserData, &data, 0);
pitch = (fe_FontPitch *) data;
family = NULL;
for (i = 0; i < pitch->numberOfFamilies; i++)
{
family = &pitch->families[i];
if (family->selected)
{
break;
}
else
{
family = NULL;
}
}
if (!family)
{
return;
}
thisSize = atoi(XtName(widget));
for (i = 0; i < family->numberOfPointSizes; i++)
{
size = &family->pointSizes[i];
if (size->size == thisSize)
{
size->selected = 1;
}
else
{
size->selected = 0;
}
}
fe_FreeFontSizeTable(family);
fe_InvalidateFontData();
fe_relayout_all_contexts();
}
static void
fe_set_new_font_sizes(struct fe_prefs_data *fep, fe_FontPitch *pitch)
{
int ac;
Arg av[50];
Widget button;
fe_FontFamily *family;
int i;
Widget *kids;
char label[16];
char name[16];
Cardinal nkids;
Widget optionMenu;
fe_FontSize *size;
Widget toggle;
XmString xms;
xms = NULL;
if (pitch->sizeMenu == fep->prop_size_pulldown)
{
optionMenu = fep->prop_size_option;
toggle = fep->prop_size_toggle;
}
else
{
optionMenu = fep->fixed_size_option;
toggle = fep->fixed_size_toggle;
}
XtVaGetValues(pitch->sizeMenu, XmNchildren, &kids,
XmNnumChildren, &nkids, 0);
for (i = nkids - 1; i >= 0; i--)
{
XtDestroyWidget(kids[i]);
}
family = NULL;
for (i = 0; i < pitch->numberOfFamilies; i++)
{
family = &pitch->families[i];
if (family->selected)
{
break;
}
else
{
family = NULL;
}
}
if (!family)
{
return;
}
if (family->allowScaling)
{
XtVaSetValues(toggle, XmNset, True, 0);
}
else
{
XtVaSetValues(toggle, XmNset, False, 0);
}
if (family->pointSizes->size)
{
XtVaSetValues(toggle, XmNsensitive, False, 0);
}
else
{
if (family->numberOfPointSizes == 1)
{
XtVaSetValues(toggle, XmNsensitive, False, 0);
}
else
{
XtVaSetValues(toggle, XmNsensitive, True, 0);
}
}
XtVaSetValues(toggle, XmNuserData, pitch, NULL);
for (i = 0; i < family->numberOfPointSizes; i++)
{
size = &family->pointSizes[i];
(void) PR_snprintf(name, sizeof(name), "%d", size->size);
ac = 0;
if (size->size)
{
(void) PR_snprintf(label, sizeof(label), "%d.%d",
size->size / 10, size->size % 10);
xms = XmStringCreateLtoR(label,
XmFONTLIST_DEFAULT_TAG);
XtSetArg(av[ac], XmNlabelString, xms); ac++;
}
button = XmCreatePushButtonGadget(pitch->sizeMenu, name,
av, ac);
if (xms)
{
XmStringFree(xms);
xms = NULL;
}
XtVaSetValues(button, XmNuserData, pitch, NULL);
XtAddCallback (button, XmNactivateCallback, fe_font_size_cb,
fep);
if ((i == 0) || (size->selected))
{
XtVaSetValues(optionMenu, XmNmenuHistory, button, 0);
}
XtManageChild(button);
}
}
static void
fe_font_family_cb(Widget widget, XtPointer closure, XtPointer call_data)
{
XtPointer data;
fe_FontFamily *family;
struct fe_prefs_data *fep;
int i;
fe_FontPitch *pitch;
fep = (struct fe_prefs_data *) closure;
fep->fonts_changed = 1;
XtVaGetValues(widget, XmNuserData, &data, 0);
pitch = (fe_FontPitch *) data;
pitch->selectedFamily = NULL;
for (i = 0; i < pitch->numberOfFamilies; i++)
{
family = &pitch->families[i];
if (!strcmp(family->name, XtName(widget)))
{
family->selected = 1;
}
else
{
family->selected = 0;
}
}
fe_set_new_font_sizes(fep, pitch);
fe_InvalidateFontData();
fe_relayout_all_contexts();
}
static void
fe_set_new_font_families(struct fe_prefs_data *fep, fe_FontPitch *pitch,
Widget familyMenu, Widget sizeMenu)
{
int ac;
Arg av[50];
Widget button;
fe_FontFamily *family;
int i;
Widget *kids;
Cardinal nkids;
Widget optionMenu;
pitch->sizeMenu = sizeMenu;
if (pitch->sizeMenu == fep->prop_size_pulldown)
{
optionMenu = fep->prop_family_option;
}
else
{
optionMenu = fep->fixed_family_option;
}
XtVaGetValues(familyMenu, XmNchildren, &kids,
XmNnumChildren, &nkids, 0);
for (i = nkids - 1; i >= 0; i--)
{
XtDestroyWidget(kids[i]);
}
ac = 0;
for (i = 0; i < pitch->numberOfFamilies; i++)
{
family = &pitch->families[i];
button = XmCreatePushButtonGadget(familyMenu, family->name, av, ac);
XtVaSetValues(button, XmNuserData, pitch, NULL);
XtAddCallback (button, XmNactivateCallback, fe_font_family_cb,
fep);
if ((i == 0) || (family->selected))
{
XtVaSetValues(optionMenu, XmNmenuHistory, button, 0);
}
XtManageChild(button);
}
fe_set_new_font_sizes(fep, pitch);
}
static void
fe_font_charset_cb(Widget widget, XtPointer closure, XtPointer call_data)
{
fe_FontCharSet *charset;
int charsetID;
XtPointer data;
struct fe_prefs_data *fep;
int i;
fep = (struct fe_prefs_data *) closure;
XtVaGetValues(widget, XmNuserData, &data, 0);
charsetID = (int) data;
for (i = 0; i < INTL_CHAR_SET_MAX; i++)
{
fe_FontCharSets[i].selected = 0;
}
charset = &fe_FontCharSets[charsetID];
charset->selected = 1;
fe_set_new_font_families(fep, &charset->pitches[0],
fep->prop_family_pulldown, fep->prop_size_pulldown);
fe_set_new_font_families(fep, &charset->pitches[1],
fep->fixed_family_pulldown, fep->fixed_size_pulldown);
}
static void
fe_msg_font_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->fixed_message_font_p)
{
XtVaSetValues (fep->var_message_font_p, XmNset, False, 0);
}
else if (widget == fep->var_message_font_p)
{
XtVaSetValues (fep->fixed_message_font_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_styles_cite_font_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->cite_plain_p)
{
XtVaSetValues (fep->cite_bold_p, XmNset, False, 0);
XtVaSetValues (fep->cite_italic_p, XmNset, False, 0);
XtVaSetValues (fep->cite_bold_italic_p, XmNset, False, 0);
}
else if (widget == fep->cite_bold_p)
{
XtVaSetValues (fep->cite_plain_p, XmNset, False, 0);
XtVaSetValues (fep->cite_italic_p, XmNset, False, 0);
XtVaSetValues (fep->cite_bold_italic_p, XmNset, False, 0);
}
else if (widget == fep->cite_italic_p)
{
XtVaSetValues (fep->cite_plain_p, XmNset, False, 0);
XtVaSetValues (fep->cite_bold_p, XmNset, False, 0);
XtVaSetValues (fep->cite_bold_italic_p, XmNset, False, 0);
}
else if (widget == fep->cite_bold_italic_p)
{
XtVaSetValues (fep->cite_plain_p, XmNset, False, 0);
XtVaSetValues (fep->cite_bold_p, XmNset, False, 0);
XtVaSetValues (fep->cite_italic_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_styles_cite_size_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->cite_normal_p)
{
XtVaSetValues (fep->cite_bigger_p, XmNset, False, 0);
XtVaSetValues (fep->cite_smaller_p, XmNset, False, 0);
}
else if (widget == fep->cite_bigger_p)
{
XtVaSetValues (fep->cite_normal_p, XmNset, False, 0);
XtVaSetValues (fep->cite_smaller_p, XmNset, False, 0);
}
else if (widget == fep->cite_smaller_p)
{
XtVaSetValues (fep->cite_normal_p, XmNset, False, 0);
XtVaSetValues (fep->cite_bigger_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_mail_pane_layout_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->mail_horiz_p)
{
XtVaSetValues (fep->mail_vert_p, XmNset, False, 0);
XtVaSetValues (fep->mail_stack_p, XmNset, False, 0);
XtVaSetValues (fep->mail_tall_p, XmNset, False, 0);
}
else if (widget == fep->mail_vert_p)
{
XtVaSetValues (fep->mail_horiz_p, XmNset, False, 0);
XtVaSetValues (fep->mail_stack_p, XmNset, False, 0);
XtVaSetValues (fep->mail_tall_p, XmNset, False, 0);
}
else if (widget == fep->mail_stack_p)
{
XtVaSetValues (fep->mail_horiz_p, XmNset, False, 0);
XtVaSetValues (fep->mail_vert_p, XmNset, False, 0);
XtVaSetValues (fep->mail_tall_p, XmNset, False, 0);
}
else if (widget == fep->mail_tall_p)
{
XtVaSetValues (fep->mail_horiz_p, XmNset, False, 0);
XtVaSetValues (fep->mail_vert_p, XmNset, False, 0);
XtVaSetValues (fep->mail_stack_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_news_pane_layout_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->news_horiz_p)
{
XtVaSetValues (fep->news_vert_p, XmNset, False, 0);
XtVaSetValues (fep->news_stack_p, XmNset, False, 0);
XtVaSetValues (fep->news_tall_p, XmNset, False, 0);
}
else if (widget == fep->news_vert_p)
{
XtVaSetValues (fep->news_horiz_p, XmNset, False, 0);
XtVaSetValues (fep->news_stack_p, XmNset, False, 0);
XtVaSetValues (fep->news_tall_p, XmNset, False, 0);
}
else if (widget == fep->news_stack_p)
{
XtVaSetValues (fep->news_horiz_p, XmNset, False, 0);
XtVaSetValues (fep->news_vert_p, XmNset, False, 0);
XtVaSetValues (fep->news_tall_p, XmNset, False, 0);
}
else if (widget == fep->news_tall_p)
{
XtVaSetValues (fep->news_horiz_p, XmNset, False, 0);
XtVaSetValues (fep->news_vert_p, XmNset, False, 0);
XtVaSetValues (fep->news_stack_p, XmNset, False, 0);
}
else
abort ();
}
static void
fe_styles_expire_toggle_cb (Widget widget, XtPointer closure,
XtPointer call_data)
{
char *text, dummy;
int n;
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
XmToggleButtonCallbackStruct *cb = (XmToggleButtonCallbackStruct *)call_data;
XtVaGetValues (fep->expire_days_text, XmNvalue, &text, 0);
if (1 != sscanf (text, " %d %c", &n, &dummy))
n = -1;
if (!cb->set)
XtVaSetValues (widget, XmNset, True, 0);
else if (widget == fep->expire_days_p)
{
XtVaSetValues (fep->never_expire_p, XmNset, False, 0);
XtVaSetValues (fep->expire_days_text, XmNsensitive, True, 0);
if (n < 0)
XtVaSetValues (fep->expire_days_text, XmNvalue, "9", 0);
XmProcessTraversal (fep->expire_days_text, XmTRAVERSE_CURRENT);
}
else if (widget == fep->never_expire_p)
{
XtVaSetValues (fep->expire_days_p, XmNset, False, 0);
XtVaSetValues (fep->expire_days_text, XmNsensitive, False, 0);
if (n < 0)
XtVaSetValues (fep->expire_days_text, XmNvalue, "", 0);
}
else
abort ();
free (text);
}
static void
fe_styles_expire_now_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
if (XFE_Confirm (fep->context, fe_globalData.expire_now_message))
{
GH_ClearGlobalHistory ();
fe_RefreshAllAnchors ();
}
}
/*======================= Appearance Preferences ========================*/
static void
fe_make_styles1_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget toolbar_label, icons_p, text_p, both_p;
Widget tips_label, tips_p;
Widget label2, frame2, form2;
Widget startup_label, browser_p, mail_p, news_p;
Widget start_label, blank_p, home_p, home_text;
Widget label3, frame3, form3;
Widget underline_label, underline_p;
Widget expire_label, expire_days_p, never_expire_p, expire_now_button;
Widget expire_days_text, expire_days_label;
Widget kids [100];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->styles1_selector, "styles", av, ac);
XtManageChild (form);
fep->styles1_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "toolbarsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "toolbarsBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame1); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "startupFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form2 = XmCreateForm (frame2, "startupBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame3 = XmCreateFrame (form, "linkFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form3 = XmCreateForm (frame3, "linkBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "toolbarsBoxLabel", av, ac);
label2 = XmCreateLabelGadget (frame2, "startupBoxLabel", av, ac);
label3 = XmCreateLabelGadget (frame3, "linkBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = toolbar_label = XmCreateLabelGadget (form1, "toolbarLabel",
av, ac);
kids [i++] = icons_p = XmCreateToggleButtonGadget (form1, "icons", av,ac);
kids [i++] = text_p = XmCreateToggleButtonGadget (form1, "text", av,ac);
kids [i++] = both_p = XmCreateToggleButtonGadget (form1, "both", av,ac);
kids [i++] = tips_label = XmCreateLabelGadget (form1, "toolbarTipsLabel",
av, ac);
kids [i++] = tips_p = fe_CreateToolTipsDemoToggle(form1, "enabled", av,ac);
XtVaSetValues (toolbar_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, icons_p,
0);
XtVaSetValues (icons_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 30,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (text_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 54,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (both_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 74,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (tips_label,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, icons_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, icons_p,
0);
XtVaSetValues (tips_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, icons_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, icons_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
ac = 0;
i = 0;
kids [i++] = start_label = XmCreateLabelGadget (form2, "startLabel", av, ac);
kids [i++] = blank_p = XmCreateToggleButtonGadget (form2, "blank", av, ac);
kids [i++] = home_p = XmCreateToggleButtonGadget (form2, "home", av, ac);
kids [i++] = home_text = fe_CreateTextField (form2, "homeText", av, ac);
kids [i++] = startup_label =
XmCreateLabelGadget (form2, "startupLabel", av, ac);
kids [i++] = browser_p =
XmCreateToggleButtonGadget (form2, "browser", av, ac);
kids [i++] = mail_p = XmCreateToggleButtonGadget (form2, "mail", av, ac);
kids [i++] = news_p = XmCreateToggleButtonGadget (form2, "news", av, ac);
XtVaSetValues (startup_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, browser_p,
0);
XtVaSetValues (browser_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 30,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mail_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 54,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (news_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 74,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (start_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, blank_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, blank_p,
0);
XtVaSetValues (blank_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, browser_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 30,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (home_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, blank_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, blank_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (home_text,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, home_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, home_p,
XmNrightAttachment, XmATTACH_FORM,
0);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
ac = 0;
i = 0;
kids [i++] = underline_label = XmCreateLabelGadget (form3, "underlineLabel",
av, ac);
kids [i++] = underline_p = XmCreateToggleButtonGadget (form3, "underline",
av, ac);
kids [i++] = expire_label = XmCreateLabelGadget (form3, "expireLabel",
av, ac);
kids [i++] = never_expire_p = XmCreateToggleButtonGadget (form3,
"expireNever",
av, ac);
kids [i++] = expire_days_p = XmCreateToggleButtonGadget (form3,
"expireAfter",
av, ac);
kids [i++] = expire_days_text = fe_CreateTextField (form3, "expireDays",
av, ac);
kids [i++] = expire_days_label = XmCreateLabelGadget (form3,
"expireDaysLabel",
av, ac);
kids [i++] = expire_now_button = XmCreatePushButtonGadget (form3,
"expireNow",
av, ac);
XtVaSetValues (underline_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, underline_p,
0);
XtVaSetValues (underline_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (expire_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, never_expire_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, never_expire_p,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, underline_p,
0);
XtVaSetValues (never_expire_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, underline_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, underline_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (expire_days_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, underline_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, never_expire_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (expire_days_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, underline_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, expire_days_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (expire_days_label,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, underline_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, expire_days_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (expire_now_button,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, expire_days_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, expire_days_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, expire_days_label,
XmNrightAttachment, XmATTACH_NONE,
0);
fe_attach_field_to_labels (underline_p, underline_label, expire_label, 0);
{
Dimension h1, h2, h3, h4, h5, h;
XtVaGetValues (expire_label, XmNheight, &h1, 0);
XtVaGetValues (never_expire_p, XmNheight, &h2, 0);
XtVaGetValues (expire_days_p, XmNheight, &h3, 0);
XtVaGetValues (expire_days_text, XmNheight, &h4, 0);
XtVaGetValues (expire_days_label, XmNheight, &h5, 0);
h = h1;
if (h < h2) h = h2;
if (h < h3) h = h3;
if (h < h4) h = h4;
if (h < h5) h = h5;
XtVaSetValues (expire_label, XmNheight, h, 0);
XtVaSetValues (never_expire_p, XmNheight, h, 0);
XtVaSetValues (expire_days_p, XmNheight, h, 0);
XtVaSetValues (expire_days_text, XmNheight, h, 0);
XtVaSetValues (expire_days_label, XmNheight, h, 0);
XtVaSetValues (expire_now_button, XmNheight, h, 0);
}
XtManageChildren (kids, i);
XtManageChild (label3);
XtManageChild (form3);
XtAddCallback (icons_p, XmNvalueChangedCallback,
fe_styles_toolbar_toggle_cb, fep);
XtAddCallback (text_p, XmNvalueChangedCallback,
fe_styles_toolbar_toggle_cb, fep);
XtAddCallback (both_p, XmNvalueChangedCallback,
fe_styles_toolbar_toggle_cb, fep);
XtAddCallback (blank_p, XmNvalueChangedCallback,
fe_styles_start_toggle_cb, fep);
XtAddCallback (home_p, XmNvalueChangedCallback,
fe_styles_start_toggle_cb, fep);
XtAddCallback (browser_p, XmNvalueChangedCallback,
fe_styles_startup_page_toggle_cb, fep);
XtAddCallback (mail_p, XmNvalueChangedCallback,
fe_styles_startup_page_toggle_cb, fep);
XtAddCallback (news_p, XmNvalueChangedCallback,
fe_styles_startup_page_toggle_cb, fep);
XtAddCallback (expire_days_p, XmNvalueChangedCallback,
fe_styles_expire_toggle_cb, fep);
XtAddCallback (never_expire_p, XmNvalueChangedCallback,
fe_styles_expire_toggle_cb, fep);
XtAddCallback (expire_now_button, XmNactivateCallback,
fe_styles_expire_now_cb, fep);
fep->icons_p = icons_p;
fep->text_p = text_p;
fep->both_p = both_p;
fep->tips_p = tips_p;
fep->browser_p = browser_p;
fep->mail_p = mail_p;
fep->news_p = news_p;
fep->blank_p = blank_p;
fep->home_p = home_p;
fep->home_text = home_text;
fep->underline_p = underline_p;
fep->expire_days_p = expire_days_p;
fep->never_expire_p = never_expire_p;
fep->expire_days_text = expire_days_text;
i = 0;
kids [i++] = frame1;
kids [i++] = frame2;
kids [i++] = frame3;
XtManageChildren (kids, i);
}
#if 0
static void
fe_make_colors_page (MWContext *context, struct fe_prefs_data *fep)
{
fep->colors_page = 0;
}
#endif
#if 0
static void
fe_make_bookmarks_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label2, frame2, form2;
Widget book_label, book_text, book_browse;
Widget kids [100];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->bookmarks_selector, "bookmarks", av, ac);
XtManageChild (form);
fep->bookmarks_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "dirsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form2 = XmCreateForm (frame2, "dirsBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "dirsBoxLabel", av, ac);
i = 0;
ac = 0;
kids [i++] = book_label = XmCreateLabelGadget (form2, "bookLabel", av,ac);
kids [i++] = book_text = fe_CreateTextField (form2, "bookText", av, ac);
kids [i++] = book_browse =XmCreatePushButtonGadget(form2,"bookBrowse",av,ac);
XtVaSetValues (book_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, book_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, book_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, book_text,
0);
XtVaSetValues (book_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (book_browse,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, book_text,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (book_browse, XmNheight, book_text->core.height, 0);
XtAddCallback (book_browse, XmNactivateCallback, fe_browse_book_cb, fep);
fep->book_text = book_text;
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
i = 0;
kids [i++] = frame2;
XtManageChildren (kids, i);
}
#endif /* 0 */
static void
fe_make_fonts_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget kids [100];
int i;
int j;
Widget encoding_label, encoding_pulldown, encoding_menu;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Widget proportional_label, prop_size_label;
Widget fixed_label, fixed_size_label;
int selectedCharSet;
fe_FontCharSet *charset;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->fonts_selector, "fonts", av, ac);
XtManageChild (form);
fep->fonts_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "fontsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "fontsBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "fontsBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = encoding_label = XmCreateLabelGadget (form1, "encodingLabel",
av, ac);
XtVaGetValues (CONTEXT_WIDGET (context), XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
encoding_pulldown = XmCreatePulldownMenu (form1, "encodingPullDown", av, ac);
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, encoding_pulldown); ac++;
kids [i++] = encoding_menu = fe_CreateOptionMenu (form1, "encodingMenu", av,
ac);
selectedCharSet = 0;
ac = 0;
for (j = 0; j < INTL_CHAR_SET_MAX; j++) {
Widget button;
charset = &fe_FontCharSets[fe_SortedFontCharSets[j]];
if (!charset->name) {
continue;
}
button = XmCreatePushButtonGadget (encoding_pulldown, charset->name, av, ac);
XtVaSetValues(button, XmNuserData, fe_SortedFontCharSets[j], NULL);
XtAddCallback (button, XmNactivateCallback, fe_font_charset_cb, fep);
if (charset->selected) {
XtVaSetValues (encoding_menu, XmNmenuHistory, button, 0);
selectedCharSet = j;
}
XtManageChild (button);
}
charset = &fe_FontCharSets[fe_SortedFontCharSets[selectedCharSet]];
ac = 0;
kids [i++] = proportional_label = XmCreateLabelGadget (form1,
"proportionalLabel", av, ac);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
fep->prop_family_pulldown = XmCreatePulldownMenu (form1, "propPullDown", av, ac);
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, fep->prop_family_pulldown); ac++;
kids [i++] = fep->prop_family_option = fe_CreateOptionMenu (form1,
"proportionalMenu", av, ac);
ac = 0;
kids [i++] = prop_size_label = XmCreateLabelGadget (form1, "propSizeLabel",
av, ac);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
fep->prop_size_pulldown = XmCreatePulldownMenu (form1, "propSizePullDown", av, ac);
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, fep->prop_size_pulldown); ac++;
kids [i++] = fep->prop_size_option = fe_CreateOptionMenu (form1, "propSizeMenu",
av, ac);
ac = 0;
kids [i++] = fep->prop_size_field = fe_CreateTextField (form1, "propSizeField",
av, ac);
ac = 0;
kids [i++] = fep->prop_size_toggle = XmCreateToggleButtonGadget (form1,
"propSizeToggle", av,ac);
XtAddCallback(fep->prop_size_toggle, XmNvalueChangedCallback,
fe_allow_font_scaling_cb, fep);
fe_set_new_font_families(fep, &charset->pitches[0], fep->prop_family_pulldown,
fep->prop_size_pulldown);
ac = 0;
kids [i++] = fixed_label = XmCreateLabelGadget (form1,
"fixedLabel", av, ac);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
fep->fixed_family_pulldown = XmCreatePulldownMenu (form1, "fixedPullDown", av, ac);
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, fep->fixed_family_pulldown); ac++;
kids [i++] = fep->fixed_family_option = fe_CreateOptionMenu (form1,
"fixedMenu", av, ac);
ac = 0;
kids [i++] = fixed_size_label = XmCreateLabelGadget (form1, "fixedSizeLabel",
av, ac);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
fep->fixed_size_pulldown = XmCreatePulldownMenu (form1, "fixedSizePullDown",
av, ac);
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, fep->fixed_size_pulldown); ac++;
kids [i++] = fep->fixed_size_option = fe_CreateOptionMenu (form1, "fixedSizeMenu",
av, ac);
ac = 0;
kids [i++] = fep->fixed_size_field = fe_CreateTextField (form1, "fixedSizeField",
av, ac);
ac = 0;
kids [i++] = fep->fixed_size_toggle = XmCreateToggleButtonGadget (form1,
"fixedSizeToggle", av,ac);
XtAddCallback(fep->fixed_size_toggle, XmNvalueChangedCallback,
fe_allow_font_scaling_cb, fep);
fe_set_new_font_families(fep, &charset->pitches[1],
fep->fixed_family_pulldown, fep->fixed_size_pulldown);
XtVaSetValues (encoding_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, encoding_menu,
0);
XtVaSetValues (encoding_menu,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (proportional_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->prop_family_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->prop_family_option,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, encoding_menu,
0);
XtVaSetValues (fep->prop_family_option,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, encoding_menu,
XmNtopOffset, 20,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, encoding_menu,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (prop_size_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->prop_family_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->prop_family_option,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, fep->prop_family_option,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fep->prop_size_option,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->prop_family_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->prop_family_option,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, prop_size_label,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fep->prop_size_field,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->prop_size_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->prop_size_option,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, fep->prop_size_option,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (fep->prop_size_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->prop_size_field,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, prop_size_label,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fixed_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->fixed_family_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->fixed_family_option,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, fep->prop_family_option,
0);
XtVaSetValues (fep->fixed_family_option,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->prop_size_toggle,
XmNtopOffset, 20,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fep->prop_family_option,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fixed_size_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->fixed_family_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->fixed_family_option,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, fep->prop_family_option,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fep->fixed_size_option,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->fixed_family_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->fixed_family_option,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, fixed_size_label,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fep->fixed_size_field,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fep->fixed_size_option,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fep->fixed_size_option,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, fep->fixed_size_option,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (fep->fixed_size_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fep->fixed_size_field,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, fixed_size_label,
XmNrightAttachment, XmATTACH_NONE,
0);
fe_attach_field_to_labels (encoding_menu, encoding_label,
proportional_label, fixed_label, 0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_apps_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget tmp_label, tmp_text, tmp_browse;
Widget telnet_label, telnet_text;
Widget tn3270_label, tn3270_text;
Widget rlogin_label, rlogin_text;
Widget rlogin_user_label, rlogin_user_text;
Widget kids [50];
int i;
/* Create the enclosing form */
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->apps_selector, "apps", av, ac);
XtManageChild (form);
fep->apps_page = form;
/* Create the frame and form for the application files */
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "appsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "appsBox", av, ac);
/* Create labels */
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "appsBoxLabel", av, ac);
/* Create the widgets */
ac = 0;
i = 0;
kids [i++] = telnet_label = XmCreateLabelGadget (form1, "telnetLabel",av,ac);
kids [i++] = tn3270_label = XmCreateLabelGadget (form1, "tn3270Label",av,ac);
kids [i++] = rlogin_label = XmCreateLabelGadget (form1, "rloginLabel",av,ac);
kids [i++] = rlogin_user_label = XmCreateLabelGadget (form1,
"rloginUserLabel",
av, ac);
kids [i++] = telnet_text = fe_CreateTextField (form1, "telnetText", av, ac);
kids [i++] = tn3270_text = fe_CreateTextField (form1, "tn3270Text", av, ac);
kids [i++] = rlogin_text = fe_CreateTextField (form1, "rloginText", av, ac);
kids [i++] = rlogin_user_text = fe_CreateTextField (form1, "rloginUserText",
av, ac);
kids [i++] = tmp_label = XmCreateLabelGadget (form1, "tmpLabel", av,ac);
kids [i++] = tmp_text = fe_CreateTextField (form1, "tmpText", av, ac);
kids [i++] = tmp_browse = XmCreatePushButtonGadget(form1,"tmpBrowse",av,ac);
XtVaSetValues (telnet_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, telnet_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, telnet_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, telnet_text,
0);
XtVaSetValues (tn3270_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, tn3270_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, tn3270_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, tn3270_text,
0);
XtVaSetValues (rlogin_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, rlogin_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, rlogin_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, rlogin_text,
0);
XtVaSetValues (rlogin_user_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, rlogin_user_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, rlogin_user_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, rlogin_user_text,
0);
XtVaSetValues (tmp_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, tmp_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, tmp_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, tmp_text,
0);
XtVaSetValues (telnet_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (tn3270_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, telnet_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, telnet_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, telnet_text,
0);
XtVaSetValues (rlogin_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, tn3270_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, tn3270_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, tn3270_text,
0);
XtVaSetValues (rlogin_user_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, rlogin_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, rlogin_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, rlogin_text,
0);
XtVaSetValues (tmp_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, rlogin_user_text,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, rlogin_user_text,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, tmp_browse->core.width + 10,
0);
XtVaSetValues (tmp_browse,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, tmp_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (tmp_browse, XmNheight, tmp_text->core.height, 0);
fep->telnet_text = telnet_text;
fep->tn3270_text = tn3270_text;
fep->rlogin_text = rlogin_text;
fep->rlogin_user_text = rlogin_user_text;
fep->tmp_text = tmp_text;
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
if (fe_globalData.nonterminal_text_translations)
{
XtOverrideTranslations (telnet_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (tn3270_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (rlogin_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (rlogin_user_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (tmp_text,
fe_globalData.nonterminal_text_translations);
}
fe_attach_field_to_labels (telnet_text, tmp_label,
telnet_label, tn3270_label,
rlogin_label, rlogin_user_label,
0);
XtAddCallback (tmp_browse, XmNactivateCallback, fe_browse_tmp_cb, fep);
/* Manage the frames */
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_helpers_page (MWContext *context, struct fe_prefs_data *fep)
{
/* Create the HELPER page */
fep->helpers = fe_helpers_make_helpers_page(fep->context, fep->helpers_selector);
}
static void
fe_make_images_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget colors_label, dither_p, closest_p, auto_p;
Widget display_label, while_p, after_p;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->images_selector, "images", av, ac);
XtManageChild (form);
fep->images_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "imagesFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "imagesBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "imagesBox", av, ac);
ac = 0;
i = 0;
kids [i++] = colors_label = XmCreateLabelGadget (form1, "colors", av, ac);
kids [i++] = auto_p = XmCreateToggleButtonGadget (form1, "auto", av, ac);
kids [i++] = dither_p = XmCreateToggleButtonGadget (form1, "dither", av, ac);
kids [i++] = closest_p= XmCreateToggleButtonGadget (form1, "closest",av, ac);
kids [i++] = display_label = XmCreateLabelGadget (form1, "display", av, ac);
kids [i++] = while_p = XmCreateToggleButtonGadget (form1, "while", av, ac);
kids [i++] = after_p = XmCreateToggleButtonGadget (form1, "after", av, ac);
XtVaSetValues (colors_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, auto_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, auto_p,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, auto_p,
0);
XtVaSetValues (auto_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
0);
XtVaSetValues (dither_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, auto_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, auto_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (closest_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, dither_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, dither_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (display_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, while_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, while_p,
XmNleftAttachment, XmATTACH_FORM,
0);
XtVaSetValues (while_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, closest_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, closest_p,
0);
XtVaSetValues (after_p,
XmNtopAttachment, XmATTACH_NONE,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, while_p,
XmNrightAttachment, XmATTACH_FORM,
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
XtAddCallback (auto_p, XmNvalueChangedCallback,
fe_cache_dither_toggle_cb, fep);
XtAddCallback (dither_p, XmNvalueChangedCallback,
fe_cache_dither_toggle_cb, fep);
XtAddCallback (closest_p, XmNvalueChangedCallback,
fe_cache_dither_toggle_cb, fep);
XtAddCallback (while_p, XmNvalueChangedCallback,
fe_cache_display_toggle_cb, fep);
XtAddCallback (after_p, XmNvalueChangedCallback,
fe_cache_display_toggle_cb, fep);
fe_attach_field_to_labels (auto_p, colors_label, display_label, 0);
fep->auto_p = auto_p;
fep->dither_p = dither_p;
fep->closest_p = closest_p;
fep->while_loading_p = while_p;
fep->after_loading_p = after_p;
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
#ifdef REQUEST_LANGUAGE
static void
fe_make_languages_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget list1, right, left;
Widget others, text, list2, up, down;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->languages_selector, "languages", av, ac);
XtManageChild (form);
fep->languages_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "languagesFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "languagesBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "languagesBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNvisibleItemCount, 10); ac++;
list1 = XmCreateScrolledList (form1, "list1", av, ac);
ac = 0;
XtSetArg (av [ac], XmNarrowDirection, XmARROW_RIGHT); ac++;
right = XmCreateArrowButtonGadget (form1, "right", av, ac);
ac = 0;
XtSetArg (av [ac], XmNarrowDirection, XmARROW_LEFT); ac++;
left = XmCreateArrowButtonGadget (form1, "left", av, ac);
ac = 0;
others = XmCreateLabelGadget (form1, "others", av, ac);
ac = 0;
text = XmCreateTextField (form1, "text", av, ac);
ac = 0;
XtSetArg (av [ac], XmNvisibleItemCount, 10); ac++;
list2 = XmCreateScrolledList (form1, "list2", av, ac);
ac = 0;
XtSetArg (av [ac], XmNarrowDirection, XmARROW_UP); ac++;
up = XmCreateArrowButtonGadget (form1, "up", av, ac);
ac = 0;
XtSetArg (av [ac], XmNarrowDirection, XmARROW_DOWN); ac++;
down = XmCreateArrowButtonGadget (form1, "down", av, ac);
XtVaSetValues (list1,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (right,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, list2,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, list1,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (left,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, right,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, list1,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (others,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, right,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, others,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (list2,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, right,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (up,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, list2,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, list2,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (down,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, list2,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, up,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChild (list1);
XtManageChild (form1);
XtManageChild (label1);
XtManageChild (frame1);
}
#endif /* REQUEST_LANGUAGE */
/*======================== Mail/News Preferences ========================*/
/* appearance of mail and news windows
*/
static void
fe_make_appearance_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget label2, frame2, form2;
Widget fixed_label, fixed_message_font_p, var_message_font_p;
Widget quoted_label;
Widget qstyle_label, plain1_p, bold_p, italic_p, bold_italic_p;
Widget qsize_label, plain2_p, bigger_p, smaller_p;
Widget qcolor_label, qcolor_text;
Widget mPane_label, mail_horiz_p, mail_vert_p, mail_stack_p, mail_tall_p;
Widget nPane_label, news_horiz_p, news_vert_p, news_stack_p, news_tall_p;
Widget kids [60];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->appearance_selector, "appearance", av, ac);
XtManageChild (form);
fep->appearance_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "msgFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form1 = XmCreateForm (frame1, "msgBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame1); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "layoutFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form2 = XmCreateForm (frame2, "layoutBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "msgBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = qstyle_label = XmCreateLabelGadget(form1, "qstyleLabel", av,ac);
kids [i++] = plain1_p = XmCreateToggleButtonGadget (form1, "plain", av, ac);
kids [i++] = bold_p = XmCreateToggleButtonGadget (form1, "bold", av, ac);
kids [i++] = italic_p = XmCreateToggleButtonGadget (form1, "italic", av, ac);
kids [i++] = bold_italic_p = XmCreateToggleButtonGadget (form1, "boldItalic",
av, ac);
kids [i++] = qsize_label = XmCreateLabelGadget(form1, "qsizeLabel", av,ac);
kids [i++] = plain2_p = XmCreateToggleButtonGadget (form1, "normal", av, ac);
kids [i++] = bigger_p = XmCreateToggleButtonGadget (form1, "bigger", av, ac);
kids [i++] = smaller_p = XmCreateToggleButtonGadget (form1, "smaller",av,ac);
kids [i++] = qcolor_label = XmCreateLabelGadget(form1, "qcolorLabel", av,ac);
kids [i++] = qcolor_text = fe_CreateTextField (form1, "qcolorText", av, ac);
kids [i++] = fixed_label = XmCreateLabelGadget(form1, "fixedLabel", av,ac);
kids [i++] = quoted_label = XmCreateLabelGadget(form1, "quotedLabel", av,ac);
kids [i++] = fixed_message_font_p = XmCreateToggleButtonGadget (form1,
"fixedMsgFont",av,ac);
kids [i++] = var_message_font_p = XmCreateToggleButtonGadget (form1,
"varMsgFont",av,ac);
XtVaSetValues (fixed_label,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 10,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 10,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (fixed_message_font_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, fixed_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, plain1_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (var_message_font_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, fixed_message_font_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, fixed_message_font_p,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, fixed_message_font_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (quoted_label,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, 90,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 10,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (qstyle_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, plain1_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, plain1_p,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, plain1_p,
0);
XtVaSetValues (plain1_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, quoted_label,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 15,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (bold_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, plain1_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 30,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (italic_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, bold_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 45,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (bold_italic_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, italic_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 60,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (qsize_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, plain2_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, plain2_p,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, plain2_p,
0);
XtVaSetValues (plain2_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, plain1_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, plain1_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (bigger_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, plain2_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, bold_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (smaller_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, bigger_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, italic_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (qcolor_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, qcolor_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, qcolor_text,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, qcolor_text,
0);
XtVaSetValues (qcolor_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, plain2_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, plain2_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
XtAddCallback (plain1_p, XmNvalueChangedCallback,
fe_styles_cite_font_toggle_cb, fep);
XtAddCallback (bold_p, XmNvalueChangedCallback,
fe_styles_cite_font_toggle_cb, fep);
XtAddCallback (italic_p, XmNvalueChangedCallback,
fe_styles_cite_font_toggle_cb, fep);
XtAddCallback (bold_italic_p, XmNvalueChangedCallback,
fe_styles_cite_font_toggle_cb, fep);
XtAddCallback (plain2_p, XmNvalueChangedCallback,
fe_styles_cite_size_toggle_cb, fep);
XtAddCallback (bigger_p, XmNvalueChangedCallback,
fe_styles_cite_size_toggle_cb, fep);
XtAddCallback (smaller_p, XmNvalueChangedCallback,
fe_styles_cite_size_toggle_cb, fep);
XtAddCallback (fixed_message_font_p, XmNvalueChangedCallback,
fe_msg_font_toggle_cb, fep);
XtAddCallback (var_message_font_p, XmNvalueChangedCallback,
fe_msg_font_toggle_cb, fep);
fep->fixed_message_font_p = fixed_message_font_p;
fep->var_message_font_p = var_message_font_p;
fep->cite_plain_p = plain1_p;
fep->cite_bold_p = bold_p;
fep->cite_italic_p = italic_p;
fep->cite_bold_italic_p = bold_italic_p;
fep->cite_normal_p = plain2_p;
fep->cite_bigger_p = bigger_p;
fep->cite_smaller_p = smaller_p;
fep->cite_color_text = qcolor_text;
/* mail/news pane layout */
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "layoutBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = mPane_label = XmCreateLabelGadget(form2, "mPaneLabel", av,ac);
kids [i++] = mail_horiz_p = XmCreateToggleButtonGadget (form2, "mHoriz", av, ac);
kids [i++] = mail_vert_p = XmCreateToggleButtonGadget (form2, "mVert", av, ac);
kids [i++] = mail_stack_p = XmCreateToggleButtonGadget (form2, "mStack",av,ac);
kids [i++] = mail_tall_p = XmCreateToggleButtonGadget (form2, "mTall",av,ac);
kids [i++] = nPane_label = XmCreateLabelGadget(form2, "nPaneLabel", av,ac);
kids [i++] = news_horiz_p = XmCreateToggleButtonGadget (form2, "nHoriz", av, ac);
kids [i++] = news_vert_p = XmCreateToggleButtonGadget (form2, "nVert", av, ac);
kids [i++] = news_stack_p = XmCreateToggleButtonGadget (form2, "nStack",av,ac);
kids [i++] = news_tall_p = XmCreateToggleButtonGadget (form2, "nTall",av,ac);
XtVaSetValues (mPane_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mail_horiz_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mail_horiz_p,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, mail_horiz_p,
0);
XtVaSetValues (mail_horiz_p,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 15,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mail_vert_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mail_horiz_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 40,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mail_stack_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mail_horiz_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 65,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mail_tall_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mail_horiz_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 90,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nPane_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, news_horiz_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, news_horiz_p,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, news_horiz_p,
0);
XtVaSetValues (news_horiz_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mail_horiz_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mail_horiz_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (news_vert_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, news_horiz_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mail_vert_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (news_stack_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, news_vert_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mail_stack_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (news_tall_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, news_vert_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mail_tall_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
XtAddCallback (mail_horiz_p, XmNvalueChangedCallback,
fe_mail_pane_layout_toggle_cb, fep);
XtAddCallback (mail_vert_p, XmNvalueChangedCallback,
fe_mail_pane_layout_toggle_cb, fep);
XtAddCallback (mail_stack_p, XmNvalueChangedCallback,
fe_mail_pane_layout_toggle_cb, fep);
XtAddCallback (mail_tall_p, XmNvalueChangedCallback,
fe_mail_pane_layout_toggle_cb, fep);
XtAddCallback (news_horiz_p, XmNvalueChangedCallback,
fe_news_pane_layout_toggle_cb, fep);
XtAddCallback (news_vert_p, XmNvalueChangedCallback,
fe_news_pane_layout_toggle_cb, fep);
XtAddCallback (news_stack_p, XmNvalueChangedCallback,
fe_news_pane_layout_toggle_cb, fep);
XtAddCallback (news_tall_p, XmNvalueChangedCallback,
fe_news_pane_layout_toggle_cb, fep);
fep->mail_horiz_p = mail_horiz_p;
fep->mail_vert_p = mail_vert_p;
fep->mail_stack_p = mail_stack_p;
fep->mail_tall_p = mail_tall_p;
fep->news_horiz_p = news_horiz_p;
fep->news_vert_p = news_vert_p;
fep->news_stack_p = news_stack_p;
fep->news_tall_p = news_tall_p;
i = 0;
kids [i++] = frame1;
kids [i++] = frame2;
XtManageChildren (kids, i);
}
/* behavior of composition window
*/
static void
fe_make_compose_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget eightbit_label, eightbit_toggle, qp_toggle;
#ifdef PREFS_QUEUED_DELIVERY
Widget deliver_label, deliverAuto_toggle, deliverQ_toggle;
#endif
Widget label2, frame2, form2;
Widget mMailOut_label, mMailOutSelf_toggle, mMailOutOther_label,
mMailOutOther_text;
Widget nMailOut_label, nMailOutSelf_toggle, nMailOutOther_label,
nMailOutOther_text;
Widget label3, frame3, form3;
Widget mCopyOut_label, mCopyOut_text, mCopyOut_browse;
Widget nCopyOut_label, nCopyOut_text, nCopyOut_browse;
Widget autoquote_toggle;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->compose_selector, "compose", av, ac);
XtManageChild (form);
fep->compose_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
frame1 = XmCreateFrame (form, "composeFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "composeBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "composeBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = eightbit_label = XmCreateLabelGadget (form1, "8bitLabel",
av, ac);
kids [i++] = eightbit_toggle = XmCreateToggleButtonGadget (form1,
"8bitToggle",
av, ac);
kids [i++] = qp_toggle = XmCreateToggleButtonGadget (form1, "qpToggle",
av, ac);
#ifdef PREFS_QUEUED_DELIVERY
kids [i++] = deliver_label = XmCreateLabelGadget (form1, "deliverLabel",
av, ac);
kids [i++] = deliverAuto_toggle = XmCreateToggleButtonGadget (form1,
"deliverAutoToggle",
av, ac);
kids [i++] = deliverQ_toggle = XmCreateToggleButtonGadget (form1,
"deliverQToggle",
av, ac);
#endif
XtVaSetValues (eightbit_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, eightbit_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, eightbit_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, eightbit_toggle,
0);
XtVaSetValues (eightbit_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (qp_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, eightbit_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, eightbit_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, eightbit_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
#ifdef PREFS_QUEUED_DELIVERY
XtVaSetValues (deliver_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, deliverAuto_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, deliverAuto_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, deliverAuto_toggle,
0);
XtVaSetValues (deliverAuto_toggle,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, eightbit_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, eightbit_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (deliverQ_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, deliverAuto_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, deliverAuto_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, deliverAuto_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
#endif
XtAddCallback (eightbit_toggle, XmNvalueChangedCallback,
fe_mail_eightbit_toggle_cb, fep);
XtAddCallback (qp_toggle, XmNvalueChangedCallback,
fe_mail_eightbit_toggle_cb, fep);
#ifdef PREFS_QUEUED_DELIVERY
XtAddCallback (deliverAuto_toggle, XmNvalueChangedCallback,
fe_mail_eightbit_toggle_cb, fep);
XtAddCallback (deliverQ_toggle, XmNvalueChangedCallback,
fe_mail_eightbit_toggle_cb, fep);
#endif
fep->eightbit_toggle = eightbit_toggle;
fep->qp_toggle = qp_toggle;
#ifdef PREFS_QUEUED_DELIVERY
fep->deliverAuto_toggle = deliverAuto_toggle;
fep->deliverQ_toggle = deliverQ_toggle;
#endif
fe_attach_field_to_labels (eightbit_toggle, eightbit_label,
#ifdef PREFS_QUEUED_DELIVERY
deliver_label,
#endif
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
/* Email a copy of outgoing messages to */
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame1); ac++;
frame2 = XmCreateFrame (form, "mMailOutFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form2 = XmCreateForm (frame2, "mMailOutBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "mMailOutBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = mMailOut_label = XmCreateLabelGadget (form2, "mMailOutLabel",
av, ac);
kids [i++] = mMailOutSelf_toggle = XmCreateToggleButtonGadget (form2,
"mMailOutSelfToggle",
av, ac);
kids [i++] = mMailOutOther_label = XmCreateLabelGadget (form2,
"mMailOutOtherLabel",
av, ac);
kids [i++] = mMailOutOther_text = fe_CreateTextField (form2,
"mMailOutOtherText",
av, ac);
kids [i++] = nMailOut_label = XmCreateLabelGadget (form2, "nMailOutLabel",
av, ac);
kids [i++] = nMailOutSelf_toggle = XmCreateToggleButtonGadget (form2,
"nMailOutSelfToggle",
av, ac);
kids [i++] = nMailOutOther_label = XmCreateLabelGadget (form2,
"nMailOutOtherLabel",
av, ac);
kids [i++] = nMailOutOther_text = fe_CreateTextField (form2,
"nMailOutOtherText",
av, ac);
/* HACK the heights. Assumes textwidget is taller. */
mMailOut_label->core.height = mMailOutSelf_toggle->core.height =
mMailOutOther_label->core.height = mMailOutOther_text->core.height;
nMailOut_label->core.height = nMailOutSelf_toggle->core.height =
nMailOutOther_label->core.height = nMailOutOther_text->core.height;
XtVaSetValues (mMailOut_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, mMailOutSelf_toggle,
0);
XtVaSetValues (mMailOutSelf_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mMailOutOther_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, mMailOutSelf_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mMailOutOther_text,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, mMailOutOther_label,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (nMailOut_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, nMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, nMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, nMailOutSelf_toggle,
0);
XtVaSetValues (nMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mMailOutSelf_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nMailOutOther_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, nMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, nMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, nMailOutSelf_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nMailOutOther_text,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, nMailOutSelf_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, nMailOutSelf_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, nMailOutOther_label,
XmNrightAttachment, XmATTACH_FORM,
0);
fep->mMailOutSelf_toggle = mMailOutSelf_toggle;
fep->mMailOutOther_text = mMailOutOther_text;
fep->nMailOutSelf_toggle = nMailOutSelf_toggle;
fep->nMailOutOther_text = nMailOutOther_text;
fe_attach_field_to_labels (mMailOutSelf_toggle, mMailOut_label,
nMailOut_label, 0);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
/*** frame3: Copy outgoing messages to ***/
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
frame3 = XmCreateFrame (form, "mCopyOutFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form3 = XmCreateForm (frame3, "mCopyOutBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label3 = XmCreateLabelGadget (frame3, "mCopyOutBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = mCopyOut_label = XmCreateLabelGadget (form3, "mCopyOutLabel",
av, ac);
kids [i++] = mCopyOut_text = fe_CreateTextField (form3,
"mCopyOutText",
av, ac);
kids [i++] = mCopyOut_browse = XmCreatePushButtonGadget(form3,
"mCopyOutBrowse",av,ac);
kids [i++] = nCopyOut_label = XmCreateLabelGadget (form3, "nCopyOutLabel",
av, ac);
kids [i++] = nCopyOut_text = fe_CreateTextField (form3,
"nCopyOutText",
av, ac);
kids [i++] = nCopyOut_browse = XmCreatePushButtonGadget(form3,
"nCopyOutBrowse",av,ac);
/* HACK the heights. Assumes textwidget is taller. */
mCopyOut_browse->core.height = mCopyOut_label->core.height =
mCopyOut_text->core.height;
nCopyOut_browse->core.height = nCopyOut_label->core.height =
nCopyOut_text->core.height;
XtVaSetValues (mCopyOut_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mCopyOut_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mCopyOut_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, mCopyOut_text,
0);
XtVaSetValues (mCopyOut_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, mCopyOut_browse->core.width + 10,
0);
XtVaSetValues (mCopyOut_browse,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mCopyOut_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (nCopyOut_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, nCopyOut_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, nCopyOut_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, nCopyOut_text,
0);
XtVaSetValues (nCopyOut_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mCopyOut_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mCopyOut_text,
XmNbottomAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, nCopyOut_browse->core.width + 10,
0);
XtVaSetValues (nCopyOut_browse,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, nCopyOut_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
fep->mCopyOut_text = mCopyOut_text;
fep->nCopyOut_text = nCopyOut_text;
fe_attach_field_to_labels (mCopyOut_text, mCopyOut_label, nCopyOut_label, 0);
XtVaSetValues (mCopyOut_browse, XmNuserData, mCopyOut_text, 0);
XtAddCallback (mCopyOut_browse, XmNactivateCallback, fe_browse_to_text_cb,
fep);
XtVaSetValues (nCopyOut_browse, XmNuserData, nCopyOut_text, 0);
XtAddCallback (nCopyOut_browse, XmNactivateCallback, fe_browse_to_text_cb,
fep);
XtManageChildren (kids, i);
XtManageChild (label3);
XtManageChild (form3);
/*** Automatically quote messages when replying */
ac = 0;
i = 0;
kids [i++] = autoquote_toggle = XmCreateToggleButtonGadget (form,
"autoQuoteToggle", av, ac);
XtVaSetValues (autoquote_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 20,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frame3,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
fep->autoquote_toggle = autoquote_toggle;
XtManageChildren (kids, i);
/*************/
i = 0;
kids [i++] = frame1;
kids [i++] = frame2;
kids [i++] = frame3;
XtManageChildren (kids, i);
}
static void
fe_make_servers_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label2, frame2, form2;
Widget smtp_label, smtp_text;
Widget label3, frame3, form3;
Widget srvr_label, srvr_text;
Widget pop_toggle;
Widget movemail_text, movemail_browse;
Widget builtin_toggle, external_toggle;
Widget user_label, user_text;
Widget limit_label, no_limit, msg_limit;
Widget msg_label, msg_remove, msg_leave;
Widget check_label, check_every, check_never;
Widget check_text, check_suffix, limit_text, limit_suffix;
Widget maildir_label, maildir_text, maildir_browse;
Widget label4, frame4, form4;
Widget newshost_label, newshost_text;
Widget newsrc_label, newsrc_text, newsrc_browse;
#ifdef PREFS_NEWS_MAX
Widget newsmax_label, newsmax_text, newsmax_suff;
#endif
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form = XmCreateForm (fep->dirs_selector, "dirs", av, ac);
XtManageChild (form);
fep->dirs_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "outMailFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form2 = XmCreateForm (frame2, "outMailBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "outMailBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame3 = XmCreateFrame (form, "inMailFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form3 = XmCreateForm (frame3, "inMailBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label3 = XmCreateLabelGadget (frame3, "inMailBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame3); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame4 = XmCreateFrame (form, "newsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form4 = XmCreateForm (frame4, "newsBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label4 = XmCreateLabelGadget (frame4, "newsBoxLabel", av, ac);
i = 0;
ac = 0;
kids [i++] = smtp_label = XmCreateLabelGadget (form2, "smtpLabel", av,ac);
kids [i++] = smtp_text = fe_CreateTextField (form2, "smtpText", av, ac);
XtVaSetValues (smtp_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, smtp_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, smtp_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, smtp_text,
0);
XtVaSetValues (smtp_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
XmNbottomOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
0);
fe_attach_field_to_labels (smtp_text, smtp_label, 0);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
i = 0;
ac = 0;
kids [i++] = srvr_label = XmCreateLabelGadget (form3, "srvrLabel", av,ac);
kids [i++] = srvr_text = fe_CreateTextField (form3, "srvrText", av, ac);
kids [i++] = pop_toggle = XmCreateToggleButtonGadget (form3, "popToggle",
av, ac);
kids [i++] = movemail_text = fe_CreateTextField (form3,
"movemailText", av, ac);
kids [i++] = movemail_browse = XmCreatePushButtonGadget(form3,
"movemailBrowse",av,ac);
kids [i++] = builtin_toggle = XmCreateToggleButtonGadget (form3,
"builtinToggle", av, ac);
kids [i++] = external_toggle = XmCreateToggleButtonGadget (form3,
"externalToggle", av, ac);
kids [i++] = user_label = XmCreateLabelGadget (form3,
"userLabel", av,ac);
kids [i++] = user_text = fe_CreateTextField (form3,
"userText", av, ac);
kids [i++] = limit_label = XmCreateLabelGadget (form3, "limitLabel",
av, ac);
kids [i++] = no_limit = XmCreateToggleButtonGadget (form3, "noLimit",
av, ac);
kids [i++] = msg_limit = XmCreateToggleButtonGadget (form3, "msgLimit",
av, ac);
kids [i++] = limit_text = fe_CreateTextField (form3, "limitText", av, ac);
kids [i++] = limit_suffix = XmCreateLabelGadget (form3, "limitSuffix",
av, ac);
/* This assumes that the text widget's height is the largest */
limit_label->core.height = no_limit->core.height =
msg_limit->core.height = limit_suffix->core.height = limit_text->core.height;
kids [i++] = msg_label = XmCreateLabelGadget (form3, "msgLabel",
av, ac);
kids [i++] = msg_remove = XmCreateToggleButtonGadget (form3, "msgRemove",
av, ac);
kids [i++] = msg_leave = XmCreateToggleButtonGadget (form3, "msgLeave",
av, ac);
kids [i++] = check_label = XmCreateLabelGadget (form3, "checkLabel",
av, ac);
kids [i++] = check_every = XmCreateToggleButtonGadget (form3, "checkEvery",
av, ac);
kids [i++] = check_never = XmCreateToggleButtonGadget (form3, "checkNever",
av, ac);
kids [i++] = check_text = fe_CreateTextField (form3, "checkText", av, ac);
kids [i++] = check_suffix = XmCreateLabelGadget (form3, "checkSuffix",
av, ac);
/* This assumes that the text widget's height is the largest */
check_label->core.height = check_every->core.height = check_never->core.height =
check_suffix->core.height = check_text->core.height;
kids [i++] = maildir_label = XmCreateLabelGadget (form3, "mailDirLabel",av,ac);
kids [i++] = maildir_text = fe_CreateTextField(form3, "mailDirText",av,ac);
kids [i++] = maildir_browse = XmCreatePushButtonGadget (form3, "mailDirBrowse",
av, ac);
/* This assumes that the text widget's height is the largest */
maildir_label->core.height = maildir_browse->core.height
= maildir_text->core.height;
XtVaSetValues (pop_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, srvr_text,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, srvr_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (builtin_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, user_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, pop_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (external_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, movemail_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, movemail_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, builtin_toggle,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, movemail_text,
XmNalignment, XmALIGNMENT_BEGINNING,
0);
XtVaSetValues (srvr_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, srvr_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, srvr_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, srvr_text,
0);
XtVaSetValues (srvr_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (user_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, user_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, user_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, user_text,
0);
XtVaSetValues (user_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, srvr_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, srvr_text,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (movemail_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, builtin_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, user_text,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, movemail_browse->core.width + 10,
0);
XtVaSetValues (movemail_browse,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, movemail_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, movemail_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (limit_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, no_limit,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, no_limit,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, no_limit,
0);
XtVaSetValues (no_limit,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, movemail_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, movemail_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (msg_limit,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, no_limit,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, no_limit,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, no_limit,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (limit_text,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, no_limit,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, no_limit,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, msg_limit,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (limit_suffix,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, no_limit,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, no_limit,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, limit_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (msg_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, msg_remove,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, msg_remove,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, msg_remove,
0);
XtVaSetValues (msg_remove,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, no_limit,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, no_limit,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (msg_leave,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, msg_remove,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, msg_remove,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, msg_remove,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (check_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, check_every,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, check_every,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, check_every,
0);
XtVaSetValues (check_every,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, msg_remove,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, msg_remove,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (check_text,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, check_every,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, check_every,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, check_every,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (check_suffix,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, check_every,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, check_every,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, check_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (check_never,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, check_every,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, check_every,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, check_suffix,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (maildir_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, maildir_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, maildir_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, maildir_text,
0);
XtVaSetValues (maildir_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, check_every,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, check_every,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, maildir_browse->core.width + 10,
0);
XtVaSetValues (maildir_browse,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, maildir_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, maildir_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtAddCallback (pop_toggle, XmNvalueChangedCallback,
fe_mail_pop_toggle_cb, fep);
XtAddCallback (builtin_toggle, XmNvalueChangedCallback,
fe_mail_pop_toggle_cb, fep);
XtAddCallback (external_toggle, XmNvalueChangedCallback,
fe_mail_pop_toggle_cb, fep);
XtAddCallback (movemail_browse, XmNactivateCallback,
fe_browse_movemail_cb, fep);
XtAddCallback (no_limit, XmNvalueChangedCallback,
fe_msg_limit_toggle_cb, fep);
XtAddCallback (msg_limit, XmNvalueChangedCallback,
fe_msg_limit_toggle_cb, fep);
XtAddCallback (msg_remove, XmNvalueChangedCallback,
fe_msg_on_server_toggle_cb, fep);
XtAddCallback (msg_leave, XmNvalueChangedCallback,
fe_msg_on_server_toggle_cb, fep);
XtAddCallback (check_every, XmNvalueChangedCallback,
fe_msg_check_toggle_cb, fep);
XtAddCallback (check_never, XmNvalueChangedCallback,
fe_msg_check_toggle_cb, fep);
XtAddCallback (maildir_browse, XmNactivateCallback,
fe_browse_maildir_cb, fep);
XtManageChildren (kids, i);
XtManageChild (label3);
XtManageChild (form3);
fe_attach_field_to_labels (srvr_text, pop_toggle, builtin_toggle,
external_toggle, no_limit, msg_remove,
check_every, maildir_text, 0);
if (fe_globalData.nonterminal_text_translations)
{
XtOverrideTranslations (smtp_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (srvr_text,
fe_globalData.nonterminal_text_translations);
}
/**/
ac = 0;
i = 0;
kids [i++] = newshost_label = XmCreateLabelGadget (form4, "newshostLabel",
av, ac);
kids [i++] = newsrc_label = XmCreateLabelGadget (form4, "newsrcLabel",av,ac);
kids [i++] = newshost_text = fe_CreateTextField(form4, "newshostText",av,ac);
kids [i++] = newsrc_text = fe_CreateTextField (form4, "newsrcText", av, ac);
kids [i++] = newsrc_browse = XmCreatePushButtonGadget (form4, "newsrcBrowse",
av, ac);
#ifdef PREFS_NEWS_MAX
kids [i++] = newsmax_label= XmCreateLabelGadget (form4,"newsMaxLabel",av,ac);
kids [i++] = newsmax_text = fe_CreateTextField(form4, "newsMaxText", av, ac);
kids [i++] = newsmax_suff = XmCreateLabelGadget(form4,"newsMaxSuffix",av,ac);
#endif
XtVaSetValues (newshost_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, newshost_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, newshost_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, newshost_text,
0);
XtVaSetValues (newsrc_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, newsrc_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, newsrc_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, newsrc_text,
0);
#ifdef PREFS_NEWS_MAX
XtVaSetValues (newsmax_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, newsmax_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, newsmax_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, newsmax_text,
0);
#endif
XtVaSetValues (newshost_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (newsrc_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, newshost_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, newshost_text,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, newsrc_browse->core.width + 10,
0);
XtVaSetValues (newsrc_browse,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, newsrc_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, newsrc_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
#ifdef PREFS_NEWS_MAX
XtVaSetValues (newsmax_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, newsrc_text,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, newsrc_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (newsmax_suff,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, newsmax_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, newsmax_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, newsmax_text,
XmNrightAttachment, XmATTACH_FORM,
0);
#endif
fe_attach_field_to_labels (newshost_text, newshost_label, newsrc_label,
#ifdef PREFS_NEWS_MAX
newsmax_label,
#endif
0);
XtVaSetValues (newsrc_browse, XmNheight, newsrc_text->core.height, 0);
XtAddCallback (newsrc_browse, XmNactivateCallback, fe_browse_newsrc_cb, fep);
fep->newshost_text = newshost_text;
fep->newsrc_text = newsrc_text;
#ifdef PREFS_NEWS_MAX
fep->newsmax_text = newsmax_text;
#endif
XtManageChildren (kids, i);
XtManageChild (label4);
XtManageChild (form4);
if (fe_globalData.nonterminal_text_translations)
{
XtOverrideTranslations (newshost_text,
fe_globalData.nonterminal_text_translations);
#ifdef PREFS_NEWS_MAX
XtOverrideTranslations (newsrc_text,
fe_globalData.nonterminal_text_translations);
#endif
}
/**/
fep->user_text = user_text;
fep->smtp_text = smtp_text;
fep->srvr_text = srvr_text;
fep->pop_toggle = pop_toggle;
fep->movemail_text = movemail_text;
fep->builtin_toggle = builtin_toggle;
fep->external_toggle = external_toggle;
fep->limit_text = limit_text;
fep->no_limit = no_limit;
fep->msg_limit = msg_limit;
fep->msg_remove = msg_remove;
fep->msg_leave = msg_leave;
fep->check_text = check_text;
fep->check_every = check_every;
fep->check_never = check_never;
fep->maildir_text = maildir_text;
i = 0;
kids [i++] = frame2;
kids [i++] = frame3;
kids [i++] = frame4;
XtManageChildren (kids, i);
}
static void
fe_make_identity_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget name_label, name_text;
Widget mail_label, mail_text;
Widget org_label, org_text;
#ifdef PREFS_SIG
Widget sig_label, sig_text, sig_browse;
#endif
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->identity_selector, "identity", av, ac);
XtManageChild (form);
fep->identity_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "identityFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form1 = XmCreateForm (frame1, "identityBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "identityBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = name_label = XmCreateLabelGadget (form1, "nameLabel", av,ac);
kids [i++] = mail_label = XmCreateLabelGadget (form1, "mailLabel", av,ac);
kids [i++] = org_label = XmCreateLabelGadget (form1, "orgLabel", av,ac);
#ifdef PREFS_SIG
kids [i++] = sig_label = XmCreateLabelGadget (form1, "sigLabel", av,ac);
#endif
kids [i++] = name_text = fe_CreateTextField (form1, "nameText", av, ac);
kids [i++] = mail_text = fe_CreateTextField (form1, "mailText", av, ac);
kids [i++] = org_text = fe_CreateTextField (form1, "orgText", av, ac);
#ifdef PREFS_SIG
kids [i++] = sig_text = fe_CreateTextField (form1, "sigText", av, ac);
kids [i++] = sig_browse= XmCreatePushButtonGadget (form1, "sigBrowse",av,ac);
#endif
XtVaSetValues (name_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, name_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, name_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, name_text,
0);
XtVaSetValues (mail_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mail_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mail_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, mail_text,
0);
XtVaSetValues (org_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, org_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, org_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, org_text,
0);
#ifdef PREFS_SIG
XtVaSetValues (sig_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, sig_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, sig_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, sig_text,
0);
#endif
XtVaSetValues (name_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (mail_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, name_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, name_text,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (org_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mail_text,
#ifdef PREFS_SIG
XmNbottomAttachment, XmATTACH_NONE,
#else
XmNbottomAttachment, XmATTACH_FORM,
#endif
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mail_text,
XmNrightAttachment, XmATTACH_FORM,
0);
#ifdef PREFS_SIG
XtVaSetValues (sig_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, org_text,
XmNbottomAttachment, XmATTACH_FORM,
XmNbottomOffset, 10,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, org_text,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, sig_browse->core.width + 10,
0);
XtVaSetValues (sig_browse,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, org_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (sig_browse, XmNheight, sig_text->core.height, 0);
XtAddCallback (sig_browse, XmNactivateCallback, fe_browse_sig_cb, fep);
#endif
fep->user_name_text = name_text;
fep->user_mail_text = mail_text;
fep->user_org_text = org_text;
#ifdef PREFS_SIG
fep->user_sig_text = sig_text;
#endif
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
if (fe_globalData.nonterminal_text_translations)
{
XtOverrideTranslations (name_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (mail_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (org_text,
fe_globalData.nonterminal_text_translations);
#ifdef PREFS_SIG
XtOverrideTranslations (sig_text,
fe_globalData.nonterminal_text_translations);
#endif
}
fe_attach_field_to_labels (name_text,
name_label, mail_label, org_label,
#ifdef PREFS_SIG
sig_label,
#endif
0);
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_organization_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
#if PREFS_EMPTY_TRASH
Widget emptyTrash_toggle;
#endif
Widget rememberPswd_toggle;
Widget label2, frame2, form2;
Widget line1, line2, threadmail_toggle, threadnews_toggle;
Widget label3, frame3, form3;
Widget msort_label, mdate_toggle, mnum_toggle, msubject_toggle,
msender_toggle;
Widget nsort_label, ndate_toggle, nnum_toggle, nsubject_toggle,
nsender_toggle;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->organization_selector, "organization", av, ac);
XtManageChild (form);
fep->organization_page = form;
/*** frame1: General ***/
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
frame1 = XmCreateFrame (form, "organizationFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form1 = XmCreateForm (frame1, "organizationBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "organizationBoxLabel", av, ac);
ac = 0;
i = 0;
#if PREFS_EMPTY_TRASH
kids [i++] = emptyTrash_toggle = XmCreateToggleButtonGadget (form1, "trashToggle", av,ac);
#endif /* PREFS_EMPTY_TRASH */
kids [i++] = rememberPswd_toggle = XmCreateToggleButtonGadget (form1, "passwordToggle", av,ac);
#if PREFS_EMPTY_TRASH
XtVaSetValues (emptyTrash_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (rememberPswd_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, emptyTrash_toggle,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
#else
XtVaSetValues (rememberPswd_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
#endif
#if PREFS_EMPTY_TRASH
fep->emptyTrash_toggle = emptyTrash_toggle;
#endif
fep->rememberPswd_toggle = rememberPswd_toggle;
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
/*** frame2: threading ***/
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame1); ac++;
frame2 = XmCreateFrame (form, "threadFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form2 = XmCreateForm (frame2, "threadBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "threadBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = line1 = XmCreateLabelGadget (form2, "line1Label", av,ac);
kids [i++] = line2 = XmCreateLabelGadget (form2, "line2Label", av,ac);
kids [i++] = threadmail_toggle = XmCreateToggleButtonGadget (form2, "threadMailToggle", av, ac);
kids [i++] = threadnews_toggle = XmCreateToggleButtonGadget (form2, "threadNewsToggle", av, ac);
XtVaSetValues (line1,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (line2,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, line1,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (threadmail_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, line2,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (threadnews_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, threadmail_toggle,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
fep->threadmail_toggle = threadmail_toggle;
fep->threadnews_toggle = threadnews_toggle;
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
/*** frame3: sorting ***/
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
frame3 = XmCreateFrame (form, "mnSortFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
form3 = XmCreateForm (frame3, "mnSortBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label3 = XmCreateLabelGadget (frame3, "mnSortBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = msort_label = XmCreateLabelGadget (form3, "mSortLabel", av,ac);
kids [i++] = mdate_toggle = XmCreateToggleButtonGadget (form3, "mSortDateToggle", av, ac);
kids [i++] = mnum_toggle = XmCreateToggleButtonGadget (form3, "mSortNumToggle", av, ac);
kids [i++] = msubject_toggle = XmCreateToggleButtonGadget (form3, "mSortSubjectToggle", av, ac);
kids [i++] = msender_toggle = XmCreateToggleButtonGadget (form3, "mSortSenderToggle", av, ac);
kids [i++] = nsort_label = XmCreateLabelGadget (form3, "nSortLabel", av,ac);
kids [i++] = ndate_toggle = XmCreateToggleButtonGadget (form3, "nSortDateToggle", av, ac);
kids [i++] = nnum_toggle = XmCreateToggleButtonGadget (form3, "nSortNumToggle", av, ac);
kids [i++] = nsubject_toggle = XmCreateToggleButtonGadget (form3, "nSortSubjectToggle", av, ac);
kids [i++] = nsender_toggle = XmCreateToggleButtonGadget (form3, "nSortSenderToggle", av, ac);
XtAddCallback (mdate_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (mnum_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (msubject_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (msender_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (ndate_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (nnum_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (nsubject_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtAddCallback (nsender_toggle, XmNvalueChangedCallback, fe_org_toggle_cb, fep);
XtVaSetValues (msort_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mdate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mdate_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, mdate_toggle,
0);
XtVaSetValues (mdate_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mnum_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mdate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mdate_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, mdate_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (msubject_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mdate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mdate_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, mnum_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (msender_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mdate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mdate_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, msubject_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nsort_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, ndate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, ndate_toggle,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, ndate_toggle,
0);
XtVaSetValues (ndate_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mdate_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mdate_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nnum_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, ndate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, ndate_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, ndate_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nsubject_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, ndate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, ndate_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, nnum_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (nsender_toggle,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, ndate_toggle,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, ndate_toggle,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, nsubject_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
fe_attach_field_to_labels (mdate_toggle, msort_label, nsort_label, 0);
fep->mdate_toggle = mdate_toggle;
fep->mnum_toggle = mnum_toggle;
fep->msubject_toggle = msubject_toggle;
fep->msender_toggle = msender_toggle;
fep->ndate_toggle = ndate_toggle;
fep->nnum_toggle = nnum_toggle;
fep->nsubject_toggle = nsubject_toggle;
fep->nsender_toggle = nsender_toggle;
XtManageChildren (kids, i);
XtManageChild (label3);
XtManageChild (form3);
/*** final ***/
i = 0;
kids [i++] = frame1;
kids [i++] = frame2;
kids [i++] = frame3;
XtManageChildren (kids, i);
}
/*======================== Network Preferences ========================*/
static void
fe_make_cache_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget mem_label, mem_text, mem_k, mem_clear = 0;
#ifdef PREFS_DISK_CACHE
Widget disk_label, disk_text, disk_k, disk_clear = 0;
Widget disk_dir_label, disk_dir, browse;
#endif
#ifdef PREFS_VERIFY
Widget verify_label, once_p, every_p, expired_p;
#endif
Widget cache_ssl_p;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->cache_selector, "cache", av, ac);
XtManageChild (form);
fep->cache_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "cacheFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "cacheBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "cacheBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = mem_label = XmCreateLabelGadget (form1, "memoryLabel",
av, ac);
kids [i++] = mem_text = fe_CreateTextField (form1, "memoryText", av, ac);
kids [i++] = mem_k = XmCreateLabelGadget (form1, "k", av, ac);
#ifdef PREFS_CLEAR_CACHE_BUTTONS
kids [i++] = mem_clear = XmCreatePushButtonGadget (form1, "memClear", av,ac);
XtAddCallback (mem_clear, XmNactivateCallback, fe_clear_mem_cache_cb, fep);
#endif
XtVaSetValues (mem_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mem_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mem_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, mem_text,
0);
XtVaSetValues (mem_text,
XmNtopAttachment, XmATTACH_FORM,
#ifdef PREFS_DISK_CACHE
XmNbottomAttachment, XmATTACH_NONE,
#else
XmNbottomAttachment, XmATTACH_FORM,
#endif
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mem_k,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mem_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mem_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, mem_text,
XmNrightAttachment, XmATTACH_NONE,
0);
#ifdef PREFS_CLEAR_CACHE_BUTTONS
XtVaSetValues (mem_clear,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, mem_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, mem_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, mem_k,
XmNrightAttachment, XmATTACH_NONE,
0);
#endif
#ifdef PREFS_DISK_CACHE
kids [i++] = disk_label = XmCreateLabelGadget (form1, "diskLabel",
av, ac);
kids [i++] = disk_text = fe_CreateTextField (form1, "diskText", av, ac);
kids [i++] = disk_k = XmCreateLabelGadget (form1, "k", av, ac);
#ifdef PREFS_CLEAR_CACHE_BUTTONS
kids [i++] = disk_clear = XmCreatePushButtonGadget (form1,"diskClear",av,ac);
#endif
kids [i++] = disk_dir_label = XmCreateLabelGadget (form1, "dirLabel",
av, ac);
kids [i++] = disk_dir = fe_CreateTextField (form1, "cacheDirText", av, ac);
kids [i++] = browse = XmCreatePushButtonGadget (form1, "browse", av, ac);
#endif
#ifdef PREFS_VERIFY
kids [i++] = verify_label = XmCreateLabelGadget (form1, "verifyLabel",
av, ac);
kids [i++] = once_p = XmCreateToggleButtonGadget (form1, "onceToggle",
av, ac);
kids [i++] = every_p = XmCreateToggleButtonGadget (form1, "everyToggle",
av, ac);
kids [i++] = expired_p = XmCreateToggleButtonGadget (form1, "expiredToggle",
av, ac);
#endif
#ifdef PREFS_CLEAR_CACHE_BUTTONS
XtAddCallback (disk_clear, XmNactivateCallback, fe_clear_disk_cache_cb, fep);
#endif
kids [i++] = cache_ssl_p =
XmCreateToggleButtonGadget (form1, "cacheSSLToggle", av, ac);
XtVaSetValues (disk_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, disk_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, disk_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, disk_text,
0);
XtVaSetValues (disk_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mem_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mem_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (disk_k,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, disk_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, disk_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, disk_text,
XmNrightAttachment, XmATTACH_NONE,
0);
#ifdef PREFS_CLEAR_CACHE_BUTTONS
XtVaSetValues (disk_clear,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, disk_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, disk_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, disk_k,
XmNrightAttachment, XmATTACH_NONE,
0);
if (disk_clear->core.width < mem_clear->core.width)
XtVaSetValues (disk_clear, XmNwidth, mem_clear->core.width, 0);
#endif
XtVaSetValues (disk_dir_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, disk_dir,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, disk_dir,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, disk_dir,
0);
XtVaSetValues (disk_dir,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, disk_text,
#ifdef PREFS_VERIFY
XmNbottomAttachment, XmATTACH_NONE,
#else
XmNbottomAttachment, XmATTACH_FORM,
#endif
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, disk_text,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, browse,
0);
XtVaSetValues (browse,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, disk_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
#ifdef PREFS_VERIFY
XtVaSetValues (verify_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, once_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, once_p,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, once_p,
0);
XtVaSetValues (once_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, disk_dir,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, disk_dir,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (every_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, once_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, once_p,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, once_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (expired_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, every_p,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, every_p,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, every_p,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (cache_ssl_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, once_p,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtAddCallback (once_p, XmNvalueChangedCallback,
fe_cache_verify_toggle_cb, fep);
XtAddCallback (every_p, XmNvalueChangedCallback,
fe_cache_verify_toggle_cb, fep);
XtAddCallback (expired_p, XmNvalueChangedCallback,
fe_cache_verify_toggle_cb, fep);
XtVaSetValues (browse, XmNheight, disk_dir->core.height, 0);
XtAddCallback (browse, XmNactivateCallback, fe_disk_cache_browse_cb, fep);
#endif /* PREFS_DISK_CACHE */
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
fe_attach_field_to_labels (mem_text,
mem_label, disk_label, disk_dir_label,
#ifdef PREFS_VERIFY
verify_label,
#endif
0);
XtManageChildren (kids, i);
fep->memory_text = mem_text;
fep->memory_clear = mem_clear;
#ifdef PREFS_DISK_CACHE
fep->disk_text = disk_text;
fep->disk_dir = disk_dir;
fep->disk_clear = disk_clear;
#endif
#ifdef PREFS_VERIFY
fep->verify_label = verify_label;
fep->once_p = once_p;
fep->every_p = every_p;
fep->expired_p = expired_p;
#endif
fep->cache_ssl_p = cache_ssl_p;
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_network_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
#ifdef PREFS_NET
Widget label2, frame2, form2;
Widget buf_explain, buf_label, buf_text, buf_k;
Widget conn_explain, conn_label, conn_text, conn_suffix;
#endif
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->network_selector, "cache", av, ac);
XtManageChild (form);
fep->network_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "netFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form2 = XmCreateForm (frame2, "netBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "netBoxLabel", av, ac);
i = 0;
ac = 0;
kids [i++] = conn_explain = XmCreateLabelGadget (form2, "connExplain",
av, ac);
kids [i++] = conn_label = XmCreateLabelGadget (form2, "connLabel", av, ac);
kids [i++] = conn_text = fe_CreateTextField (form2, "connText", av, ac);
kids [i++] = conn_suffix = XmCreateLabelGadget (form2, "connSuffix", av, ac);
kids [i++] = buf_explain = XmCreateLabelGadget (form2, "bufExplain", av, ac);
kids [i++] = buf_label = XmCreateLabelGadget (form2, "bufLabel", av, ac);
kids [i++] = buf_text = fe_CreateTextField (form2, "bufText", av, ac);
kids [i++] = buf_k = XmCreateLabelGadget (form2, "k", av, ac);
XtVaSetValues (conn_explain,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (conn_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, conn_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, conn_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, conn_text,
0);
XtVaSetValues (conn_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, conn_explain,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (conn_suffix,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, conn_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, conn_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, conn_text,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (buf_explain,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, conn_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (buf_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, buf_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, buf_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, buf_text,
0);
XtVaSetValues (buf_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, buf_explain,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, conn_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (buf_k,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, buf_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, buf_text,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, buf_text,
XmNrightAttachment, XmATTACH_FORM,
0);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
fe_attach_field_to_labels (conn_text, buf_label, conn_label, 0);
XtManageChildren (kids, i);
fep->buf_label = buf_label;
fep->buf_text = buf_text;
fep->conn_label = conn_label;
fep->conn_text = conn_text;
i = 0;
kids [i++] = frame2;
XtManageChildren (kids, i);
}
static void
fe_make_protocols_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget frame1, label1, form1;
Widget cookie_p, anon_ftp_p, email_form_p;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->protocols_selector, "protocols", av, ac);
XtManageChild (form);
fep->protocols_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "alertsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "alertsBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "alertsBoxLabel", av, ac);
i = 0;
ac = 0;
kids[i++] = cookie_p =
XmCreateToggleButtonGadget (form1, "cookieToggle", av, ac);
kids[i++] = email_form_p =
XmCreateToggleButtonGadget (form1, "emailformToggle", av, ac);
XtVaSetValues (cookie_p,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (email_form_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, cookie_p,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
i = 0;
ac = 0;
kids[i++] = anon_ftp_p =
XmCreateToggleButtonGadget (form, "anonftpToggle", av, ac);
XtVaSetValues (anon_ftp_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, frame1,
XmNleftAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChildren (kids, i);
fep->cookie_p = cookie_p;
fep->anon_ftp_p = anon_ftp_p;
fep->email_form_p = email_form_p;
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_lang_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget java_toggle, javascript_toggle;
Widget kids[10];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->lang_selector, "languages", av, ac);
XtManageChild (form);
fep->lang_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "javaFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "javaBox", av, ac);
#if defined(JAVA) || defined(MOCHA)
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "javaBoxLabel", av, ac);
ac = 0;
i = 0;
#ifdef JAVA
kids [i++] = java_toggle =
XmCreateToggleButtonGadget (form1, "javaToggle", av, ac);
XtVaSetValues (java_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
fep->java_toggle = java_toggle;
#endif /* JAVA */
#ifdef MOCHA
kids [i++] = javascript_toggle =
XmCreateToggleButtonGadget (form1, "javascriptToggle", av, ac);
XtVaSetValues (javascript_toggle,
#ifdef JAVA
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, java_toggle,
#else /* JAVA */
XmNtopAttachment, XmATTACH_FORM,
#endif /* JAVA */
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
fep->javascript_toggle = javascript_toggle;
#endif /* MOCHA */
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
#endif /* JAVA || MOCHA */
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_proxies_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget proxies_label, no_proxies_p;
Widget manual_p, manual_browse;
Widget auto_proxies_p, proxy_label, proxy_text;
Widget proxy_reload;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->proxies_selector, "proxies", av, ac);
XtManageChild (form);
fep->proxies_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame1 = XmCreateFrame (form, "proxiesFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "proxiesBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "proxiesBox", av, ac);
ac = 0;
i = 0;
kids[i++] = proxies_label =
XmCreateLabelGadget (form1, "proxiesLabel", av, ac);
kids[i++] = no_proxies_p =
XmCreateToggleButtonGadget (form1, "noProxiesToggle", av, ac);
kids[i++] = manual_p =
XmCreateToggleButtonGadget (form1, "manualToggle", av, ac);
kids[i++] = manual_browse =
XmCreatePushButtonGadget (form1, "manualBrowse", av, ac);
kids[i++] = auto_proxies_p =
XmCreateToggleButtonGadget (form1, "autoToggle", av, ac);
kids[i++] = proxy_label =
XmCreateLabelGadget (form1, "locationLabel", av, ac);
kids[i++] = proxy_text =
fe_CreateTextField (form1, "locationText", av, ac);
kids[i++] = proxy_reload =
XmCreatePushButtonGadget (form1, "proxyReload", av, ac);
XtVaSetValues (proxies_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 40,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (no_proxies_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, proxies_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 50,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (manual_p,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, manual_browse,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, manual_browse,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 50,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, manual_browse,
0);
XtVaSetValues (manual_browse,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, no_proxies_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, manual_p->core.width + 50,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (auto_proxies_p,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, manual_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 50,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (proxy_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, proxy_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, proxy_text,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, proxy_text,
0);
XtVaSetValues (proxy_text,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, auto_proxies_p,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, manual_browse,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, proxy_reload->core.width + 20,
0);
XtVaSetValues (proxy_reload,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, proxy_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, proxy_text,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtAddCallback (manual_browse, XmNactivateCallback,
fe_view_proxies_cb, fep);
XtAddCallback (no_proxies_p, XmNvalueChangedCallback,
fe_set_proxies_cb, fep);
XtAddCallback (manual_p, XmNvalueChangedCallback,
fe_set_proxies_cb, fep);
XtAddCallback (auto_proxies_p, XmNvalueChangedCallback,
fe_set_proxies_cb, fep);
XtAddCallback (proxy_reload, XmNactivateCallback,
fe_proxy_reload_cb, fep);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
fep->no_proxies_p = no_proxies_p;
fep->manual_p = manual_p;
fep->manual_browse = manual_browse;
fep->auto_proxies_p = auto_proxies_p;
fep->proxy_text = proxy_text;
fep->proxy_reload = proxy_reload;
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
#define PREFS_PROXIES_DIALOG 1
static int proxies_done = -1;
static void fe_proxy_verify_page (struct fe_prefs_data *fep);
static void fe_proxy_reset (struct fe_prefs_data *fep, XFE_GlobalPrefs *prefs);
static void
fe_proxy_cancel_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
proxies_done = 0;
}
static void
fe_proxy_destroy_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
proxies_done = 0;
}
static void
fe_proxy_done_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *s1, *s2, buf [1024];
/* Been here - we should really look at the call_data */
if (!proxies_done) return;
proxies_done = 0;
fe_proxy_verify_page (fep);
/* XtUnmanageChild (fep->shell); */
#define SNARF(SLOT1,SLOT2) \
if (fe_globalPrefs.SLOT1) free (fe_globalPrefs.SLOT1); \
XtVaGetValues (fep->SLOT2, XmNvalue, &fe_globalPrefs.SLOT1, 0)
SNARF (no_proxy, no_text);
#define SNARFP(NAME,SUFFIX,empty_port_ok) \
/*if (fe_globalPrefs.NAME##_##SUFFIX) free (fe_globalPrefs.NAME##_##SUFFIX);*/ \
XtVaGetValues (fep->NAME##_text, XmNvalue, &s1, 0); \
XtVaGetValues (fep->NAME##_port, XmNvalue, &s2, 0); \
if (*s1 && *s2) PR_snprintf (buf, sizeof (buf), "%.400s:%.400s", s1, s2); \
else if (*s1 && empty_port_ok) PR_snprintf (buf, \
sizeof (buf), "%.900s", s1); \
else *buf = 0; \
fe_globalPrefs.NAME##_##SUFFIX = strdup (buf)
SNARFP (ftp, proxy, False);
SNARFP (gopher, proxy, False);
SNARFP (http, proxy, False);
#ifdef HAVE_SECURITY
SNARFP (https, proxy, False);
#endif
SNARFP (wais, proxy, False);
#ifdef PREFS_SOCKS
SNARFP (socks, host, True);
#endif
#undef SNARFP
/* ============================================================ */
/* Install the new preferences first, in case the news host changed
or something. */
NET_SetSocksHost (fe_globalPrefs.socks_host);
NET_SetProxyServer (FTP_PROXY, fe_globalPrefs.ftp_proxy);
NET_SetProxyServer (HTTP_PROXY, fe_globalPrefs.http_proxy);
#ifdef HAVE_SECURITY
NET_SetProxyServer (HTTPS_PROXY, fe_globalPrefs.https_proxy);
#endif
NET_SetProxyServer (GOPHER_PROXY, fe_globalPrefs.gopher_proxy);
NET_SetProxyServer (WAIS_PROXY, fe_globalPrefs.wais_proxy);
NET_SetProxyServer (NO_PROXY, fe_globalPrefs.no_proxy);
/* Save the preferences at the end, so that if we've found some setting that
crashes, it won't get saved... */
if (!XFE_SavePrefs ((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
fe_perror (fep->context, XP_GetString( XFE_ERROR_SAVING_OPTIONS ) );
}
static void
fe_make_proxies_dialog (MWContext *context, struct fe_prefs_data *fep)
{
Widget mainw = CONTEXT_WIDGET (context);
Widget dialog, form;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Arg av [20];
int ac;
int i;
Widget kids [50];
Widget label1, frame1, form1;
#ifdef PREFS_SOCKS
Widget socks_label, socks_text, socks_plabel, socks_port;
#endif
Widget ftp_label, ftp_text, ftp_plabel, ftp_port;
Widget gopher_label, gopher_text, gopher_plabel, gopher_port;
Widget http_label, http_text, http_plabel, http_port;
#ifdef HAVE_SECURITY
Widget https_label, https_text, https_plabel, https_port;
#endif
Widget wais_label, wais_text, wais_plabel, wais_port;
Widget no_label, no_text;
XtVaGetValues (mainw, XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
XtSetArg (av[ac], XmNallowShellResize, TRUE); ac++;
XtSetArg (av[ac], XmNtransientFor, mainw); ac++;
XtSetArg (av[ac], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); ac++;
XtSetArg (av[ac], XmNdialogType, XmDIALOG_QUESTION); ac++;
XtSetArg (av[ac], XmNdeleteResponse, XmDESTROY); ac++;
XtSetArg (av[ac], XmNautoUnmanage, False); ac++;
XtSetArg (av[ac], XmNnoResize, True); ac++;
dialog = XmCreatePromptDialog (mainw, "proxies_prefs", av, ac);
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_SEPARATOR));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_TEXT));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog,
XmDIALOG_SELECTION_LABEL));
XtManageChild (XmSelectionBoxGetChild (dialog, XmDIALOG_APPLY_BUTTON));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog,
XmDIALOG_APPLY_BUTTON));
#ifdef NO_HELP
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_HELP_BUTTON));
#endif
XtAddCallback (dialog, XmNokCallback, fe_proxy_done_cb, fep);
XtAddCallback (dialog, XmNcancelCallback, fe_proxy_cancel_cb, fep);
XtAddCallback (dialog, XmNapplyCallback, fe_proxy_done_cb, fep);
XtAddCallback (dialog, XmNdestroyCallback, fe_proxy_destroy_cb, fep);
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (dialog, "proxies", av, ac);
XtManageChild (form);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame1 = XmCreateFrame (form, "proxiesFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "proxiesBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "proxiesBox", av, ac);
ac = 0;
i = 0;
kids[i++] = ftp_label = XmCreateLabelGadget (form1, "ftpLabel", av, ac);
kids[i++] = gopher_label = XmCreateLabelGadget (form1, "gopherLabel",av,ac);
kids[i++] = http_label = XmCreateLabelGadget (form1, "httpLabel", av, ac);
#ifdef HAVE_SECURITY
kids[i++] = https_label = XmCreateLabelGadget (form1, "httpsLabel", av, ac);
#endif
kids[i++] = wais_label = XmCreateLabelGadget (form1, "waisLabel", av, ac);
kids[i++] = no_label = XmCreateLabelGadget (form1, "noLabel", av, ac);
#ifdef PREFS_SOCKS
kids[i++] = socks_label = XmCreateLabelGadget (form1, "socksLabel", av, ac);
#endif
ac = 0;
kids[i++] = ftp_text = fe_CreateTextField (form1, "ftpText", av, ac);
kids[i++] = gopher_text = fe_CreateTextField (form1, "gopherText", av, ac);
kids[i++] = http_text = fe_CreateTextField (form1, "httpText", av, ac);
#ifdef HAVE_SECURITY
kids[i++] = https_text = fe_CreateTextField (form1, "httpsText", av, ac);
#endif
kids[i++] = wais_text = fe_CreateTextField (form1, "waisText", av, ac);
kids[i++] = no_text = fe_CreateTextField (form1, "noText", av, ac);
#ifdef PREFS_SOCKS
kids[i++] = socks_text = fe_CreateTextField (form1, "socksText", av, ac);
#endif
ac = 0;
kids[i++] = ftp_port = fe_CreateTextField (form1, "ftpPort", av, ac);
kids[i++] = gopher_port = fe_CreateTextField (form1, "gopherPort", av, ac);
kids[i++] = http_port = fe_CreateTextField (form1, "httpPort", av, ac);
#ifdef HAVE_SECURITY
kids[i++] = https_port = fe_CreateTextField (form1, "httpsPort", av, ac);
#endif
kids[i++] = wais_port = fe_CreateTextField (form1, "waisPort", av, ac);
#ifdef PREFS_SOCKS
kids[i++] = socks_port = fe_CreateTextField (form1, "socksPort", av, ac);
#endif
ac = 0;
kids[i++] = ftp_plabel = XmCreateLabelGadget (form1, "portLabel", av,ac);
kids[i++] = gopher_plabel = XmCreateLabelGadget (form1, "portLabel", av,ac);
kids[i++] = http_plabel = XmCreateLabelGadget (form1, "portLabel", av,ac);
#ifdef HAVE_SECURITY
kids[i++] = https_plabel = XmCreateLabelGadget (form1, "portLabel", av,ac);
#endif
kids[i++] = wais_plabel = XmCreateLabelGadget (form1, "portLabel", av,ac);
#ifdef PREFS_SOCKS
kids[i++] = socks_plabel = XmCreateLabelGadget (form1, "portLabel", av,ac);
#endif
XtVaSetValues (ftp_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, ftp_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, ftp_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, ftp_text,
0);
XtVaSetValues (gopher_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, gopher_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, gopher_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, gopher_text,
0);
XtVaSetValues (http_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, http_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, http_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, http_text,
0);
#ifdef HAVE_SECURITY
XtVaSetValues (https_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, https_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, https_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, https_text,
0);
#endif
XtVaSetValues (wais_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, wais_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, wais_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, wais_text,
0);
XtVaSetValues (no_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, no_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, no_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, no_text,
0);
#ifdef PREFS_SOCKS
XtVaSetValues (socks_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, socks_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, socks_text,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, socks_text,
0);
#endif
XtVaSetValues (ftp_text,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
#if 1
XmNrightAttachment, XmATTACH_FORM,
#else
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, ftp_plabel,
#endif
0);
XtVaSetValues (gopher_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, ftp_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, ftp_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, ftp_text,
0);
XtVaSetValues (http_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, gopher_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, gopher_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, gopher_text,
0);
#ifdef HAVE_SECURITY
XtVaSetValues (https_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, http_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, http_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, http_text,
0);
#endif
XtVaSetValues (wais_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNtopAttachment, XmATTACH_WIDGET,
#ifdef HAVE_SECURITY
XmNtopWidget, https_text,
#else
XmNtopWidget, http_text,
#endif
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, http_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, http_text,
0);
XtVaSetValues (no_text,
#ifdef PREFS_SOCKS
XmNbottomAttachment, XmATTACH_NONE,
#else
XmNbottomAttachment, XmATTACH_FORM,
#endif
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, wais_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, wais_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, wais_text,
0);
#ifdef PREFS_SOCKS
XtVaSetValues (socks_text,
XmNbottomAttachment, XmATTACH_FORM,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, no_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, no_text,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, no_text,
0);
#endif
XtVaSetValues (ftp_plabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, ftp_port,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, ftp_port,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, ftp_port,
0);
XtVaSetValues (gopher_plabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, gopher_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, gopher_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, ftp_plabel,
XmNleftOffset, 0,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (http_plabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, http_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, http_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, gopher_plabel,
XmNleftOffset, 0,
XmNrightAttachment, XmATTACH_NONE,
0);
#ifdef HAVE_SECURITY
XtVaSetValues (https_plabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, https_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, https_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, http_plabel,
XmNleftOffset, 0,
XmNrightAttachment, XmATTACH_NONE,
0);
#endif
XtVaSetValues (wais_plabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, wais_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, wais_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, http_plabel,
XmNleftOffset, 0,
XmNrightAttachment, XmATTACH_NONE,
0);
#ifdef PREFS_SOCKS
XtVaSetValues (socks_plabel,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, socks_text,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, socks_text,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, wais_plabel,
XmNleftOffset, 0,
XmNrightAttachment, XmATTACH_NONE,
0);
#endif
XtVaSetValues (ftp_port,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (gopher_port,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, gopher_plabel,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, gopher_plabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, ftp_port,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, ftp_port,
0);
XtVaSetValues (http_port,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, http_plabel,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, http_plabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, gopher_port,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, gopher_port,
0);
#ifdef HAVE_SECURITY
XtVaSetValues (https_port,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, https_plabel,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, https_plabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, http_port,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, http_port,
0);
#endif
XtVaSetValues (wais_port,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, wais_plabel,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, wais_plabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, http_port,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, http_port,
0);
#ifdef PREFS_SOCKS
XtVaSetValues (socks_port,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, socks_plabel,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, socks_plabel,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, wais_port,
XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNrightWidget, wais_port,
0);
#endif
fe_attach_field_to_labels (ftp_text,
ftp_label, gopher_label, http_label,
#ifdef HAVE_SECURITY
https_label,
#endif
wais_label, no_label,
#ifdef PREFS_SOCKS
socks_label,
#endif
0);
XtVaSetValues (ftp_text,
XmNrightOffset, (ftp_plabel->core.width + 10 +
ftp_port->core.width + 10),
0);
if (fe_globalData.nonterminal_text_translations)
{
XtOverrideTranslations (ftp_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (ftp_port,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (gopher_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (gopher_port,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (http_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (http_port,
fe_globalData.nonterminal_text_translations);
#ifdef HAVE_SECURITY
XtOverrideTranslations (https_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (https_port,
fe_globalData.nonterminal_text_translations);
#endif
XtOverrideTranslations (wais_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (wais_port,
fe_globalData.nonterminal_text_translations);
#ifdef PREFS_SOCKS
XtOverrideTranslations (no_text,
fe_globalData.nonterminal_text_translations);
XtOverrideTranslations (socks_text,
fe_globalData.nonterminal_text_translations);
#endif
}
fep->ftp_text = ftp_text;
fep->ftp_port = ftp_port;
fep->gopher_text = gopher_text;
fep->gopher_port = gopher_port;
fep->http_text = http_text;
fep->http_port = http_port;
#ifdef HAVE_SECURITY
fep->https_text = https_text;
fep->https_port = https_port;
#endif
fep->wais_text = wais_text;
fep->wais_port = wais_port;
fep->no_text = no_text;
#ifdef PREFS_SOCKS
fep->socks_text = socks_text;
fep->socks_port = socks_port;
#endif
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
fe_NukeBackingStore (dialog);
XtManageChild (dialog);
fe_proxy_verify_page (fep);
fe_proxy_reset (fep, &fe_globalPrefs);
/* Reset this for next time */
proxies_done = -1;
while (proxies_done)
fe_EventLoop ();
/* Destroy the dialog */
/* This needs to be commented out, otherwise it hangs on Solaris 2.5
in the Japanese environment when you click inside a text widget and
give it focus, and then try to quit the dialog using OK or Cancel.
-- erik
XtUnrealizeWidget (dialog);
*/
XtDestroyWidget (dialog);
}
#ifdef DUPLICATE_SEC_PREFS
/*======================== Security Preferences ========================*/
static void
fe_make_sec_passwords_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label2, frame2, form2;
Widget pass_label;
Widget banner_label;
Widget ask_label, periodic_text, periodic_label;
Widget once_toggle, every_toggle, periodic_toggle;
Widget change_password;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->sec_passwords_selector, "passwords", av, ac);
XtManageChild (form);
fep->sec_passwords_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame2 = XmCreateFrame (form, "passwordsFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form2 = XmCreateForm (frame2, "passwordsBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "passwordsBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = pass_label = XmCreateLabelGadget (form2, "passLabel", av, ac);
kids [i++] = ask_label = XmCreateLabelGadget (form2, "askLabel", av, ac);
kids [i++] = once_toggle =
XmCreateToggleButtonGadget (form2, "onceToggle", av, ac);
kids [i++] = every_toggle =
XmCreateToggleButtonGadget (form2, "everyToggle", av, ac);
kids [i++] = periodic_toggle =
XmCreateToggleButtonGadget (form2, "periodicToggle", av, ac);
kids [i++] = periodic_text =
fe_CreateTextField (form2, "periodicText", av, ac);
kids [i++] = periodic_label =
XmCreateLabelGadget (form2, "periodicLabel", av, ac);
kids [i++] = banner_label =
XmCreateLabelGadget (form2, "bannerLabel", av, ac);
kids [i++] = change_password =
XmCreatePushButtonGadget (form2, "changePassword", av, ac);
XtVaSetValues (change_password, XmNsensitive, False, 0);
XtVaSetValues (banner_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (pass_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, change_password,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, change_password,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, change_password,
0);
XtVaSetValues (change_password,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, banner_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_POSITION,
XmNleftPosition, 30,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (ask_label,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, pass_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, once_toggle,
0);
XtVaSetValues (once_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, change_password,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, change_password,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (every_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, once_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, once_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (periodic_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, every_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, every_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (periodic_text,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, periodic_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, periodic_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (periodic_label,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, periodic_text,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, periodic_text,
XmNrightAttachment, XmATTACH_NONE,
0);
XtAddCallback (once_toggle, XmNvalueChangedCallback,
fe_set_pass_toggle_cb, fep);
XtAddCallback (every_toggle, XmNvalueChangedCallback,
fe_set_pass_toggle_cb, fep);
XtAddCallback (periodic_toggle, XmNvalueChangedCallback,
fe_set_pass_toggle_cb, fep);
#if 0
XtAddCallback (change_password, XmNactivateCallback,
fe_change_pass_toggle_cb, fep);
#endif
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
fep->once_toggle = once_toggle;
fep->every_toggle = every_toggle;
fep->periodic_toggle = periodic_toggle;
fep->periodic_text = periodic_text;
fep->change_password = change_password;
i = 0;
kids [i++] = frame2;
XtManageChildren (kids, i);
}
static void
fe_make_sec_general_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label2, frame2, form2;
Widget label3, frame3, form3;
Widget alert_label;
Widget enter_toggle, leave_toggle, mixed_toggle, submit_toggle;
Widget ssl2_toggle, ssl3_toggle, ssl2_configure, ssl3_configure;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->sec_general_selector, "images", av, ac);
XtManageChild (form);
fep->sec_general_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame2 = XmCreateFrame (form, "securityFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form2 = XmCreateForm (frame2, "securityBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNtopWidget, frame2); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame3 = XmCreateFrame (form, "sslFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form3 = XmCreateForm (frame3, "sslBox", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label2 = XmCreateLabelGadget (frame2, "securityBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = alert_label = XmCreateLabelGadget (form2, "alertLabel", av, ac);
kids [i++] = enter_toggle =
XmCreateToggleButtonGadget (form2, "enterToggle", av, ac);
kids [i++] = leave_toggle =
XmCreateToggleButtonGadget (form2, "leaveToggle", av, ac);
kids [i++] = mixed_toggle =
XmCreateToggleButtonGadget (form2, "mixedToggle", av, ac);
kids [i++] = submit_toggle =
XmCreateToggleButtonGadget (form2, "submitToggle", av, ac);
XtVaSetValues (alert_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (enter_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, alert_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (leave_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, enter_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, enter_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (mixed_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, leave_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, leave_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (submit_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, mixed_toggle,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, mixed_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtManageChildren (kids, i);
XtManageChild (label2);
XtManageChild (form2);
fep->enter_toggle = enter_toggle;
fep->leave_toggle = leave_toggle;
fep->mixed_toggle = mixed_toggle;
fep->submit_toggle = submit_toggle;
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label3 = XmCreateLabelGadget (frame3, "sslBoxLabel", av, ac);
ac = 0;
i = 0;
kids [i++] = ssl2_toggle =
XmCreateToggleButtonGadget (form3, "ssl2Toggle", av, ac);
kids [i++] = ssl3_toggle =
XmCreateToggleButtonGadget (form3, "ssl3Toggle", av, ac);
kids [i++] = ssl2_configure =
XmCreatePushButtonGadget (form3, "configure", av, ac);
kids [i++] = ssl3_configure =
XmCreatePushButtonGadget (form3, "configure", av, ac);
XtVaSetValues (ssl2_toggle,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (ssl3_toggle,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, ssl2_toggle,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (ssl2_configure,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, ssl2_toggle,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (ssl3_configure,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, ssl2_configure,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, ssl2_configure,
XmNrightAttachment, XmATTACH_NONE,
0);
XtAddCallback (ssl2_configure, XmNactivateCallback,
fe_ssl_enable_cb, fep);
XtAddCallback (ssl3_configure, XmNactivateCallback,
fe_ssl_enable_cb, fep);
XtVaSetValues(ssl2_configure, XmNuserData, SSL_LIBRARY_VERSION_2, 0);
XtVaSetValues(ssl3_configure, XmNuserData, SSL_LIBRARY_VERSION_3_0, 0);
XtManageChildren (kids, i);
XtManageChild (label3);
XtManageChild (form3);
fep->ssl2_toggle= ssl2_toggle;
fep->ssl3_toggle = ssl3_toggle;
i = 0;
kids [i++] = frame2;
kids [i++] = frame3;
XtManageChildren (kids, i);
}
static void
fe_make_personal_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget pers_list, pers_info, pers_delete_cert, pers_new_cert;
Widget site_default/*, site_text*/, pers_label;
Widget pers_cert_pulldown, pers_cert_menu;
Widget kids [50];
int i;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->personal_selector, "personal", av, ac);
XtManageChild (form);
fep->personal_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
frame1 = XmCreateFrame (form, "personalFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "personalBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "personalBox", av, ac);
ac = 0;
i = 0;
/* Setup the scrolled List */
{
XmStringTable str_list = 0;
int n;
CERTCertNicknames *certnames;
certnames = CERT_GetCertNicknames (CERT_GetDefaultCertDB(),
SEC_CERT_NICKNAMES_USER,
fep->context);
if (!certnames) abort;
str_list = (XmStringTable) XP_ALLOC (sizeof (XmString) *
certnames->numnicknames);
for (n = 0; n < certnames->numnicknames; n++)
str_list[n] = XmStringCreateLocalized (certnames->nicknames[n]);
ac = 0;
XtSetArg (av[ac], XmNvisibleItemCount, 5); ac++;
XtSetArg (av[ac], XmNselectionPolicy, XmBROWSE_SELECT); ac++;
if (certnames->numnicknames) {
XtSetArg (av[ac], XmNitemCount, n); ac++;
XtSetArg (av[ac], XmNitems, str_list); ac++;
}
pers_list = XmCreateScrolledList (form1, "persList", av, ac);
XtManageChild (pers_list);
kids [i++] = XtParent (pers_list);
if (certnames->numnicknames)
XmListSelectPos (pers_list, 1, False);
for (n = 0; n < certnames->numnicknames; n++)
XtFree (str_list [n]);
XP_FREE (str_list);
CERT_FreeNicknames (certnames);
}
kids [i++] = pers_label = XmCreateLabelGadget (form1, "persLabel", av, ac);
kids [i++] = pers_info = XmCreatePushButtonGadget (form1, "persInfo", av, ac);
kids [i++] = pers_delete_cert =
XmCreatePushButtonGadget (form1, "persDeleteCert", av, ac);
kids [i++] = pers_new_cert =
XmCreatePushButtonGadget (form1, "persNewCert",av, ac);
kids [i++] = site_default =
XmCreateLabelGadget (form1, "siteDefault", av, ac);
XtVaGetValues (CONTEXT_WIDGET (context), XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
pers_cert_pulldown = XmCreatePulldownMenu (form1, "personalCertPulldown", av, ac);
{
CERTCertNicknames *sec_nicknames =
SECNAV_GetDefUserCertList(CERT_GetDefaultCertDB(), fep->context);
int tmpi;
Widget b;
for (tmpi=0; tmpi<sec_nicknames->numnicknames; tmpi++)
{
b = XmCreatePushButtonGadget(pers_cert_pulldown,
"personalCerts", av, ac);
fe_SetString(b, XmNlabelString, sec_nicknames->nicknames[tmpi]);
XtManageChild(b);
}
/* Free the nicknames */
CERT_FreeNicknames(sec_nicknames);
}
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, pers_cert_pulldown); ac++;
kids [i++] = pers_cert_menu = fe_CreateOptionMenu (form1, "personalCertMenu", av, ac);
XtVaSetValues (pers_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (XtParent (pers_list),
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, pers_label,
XmNbottomAttachment, XmATTACH_FORM,
XmNbottomOffset, pers_cert_menu->core.height + 20,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, pers_new_cert->core.width + 10,
0);
XtVaSetValues (pers_info,
XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, pers_label->core.height, /* + 10, */
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, pers_list,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (pers_delete_cert,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, pers_info,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, pers_info,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (pers_new_cert,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, pers_delete_cert,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, pers_info,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (site_default,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, pers_cert_menu,
XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNbottomWidget, pers_cert_menu,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_WIDGET,
XmNrightWidget, pers_cert_menu,
0);
XtVaSetValues (pers_cert_menu,
XmNtopAttachment, XmATTACH_NONE,
XmNbottomAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_NONE,
XmNrightAttachment, XmATTACH_FORM,
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
XtAddCallback (pers_info, XmNactivateCallback,
fe_cert_info_cb, fep);
XtAddCallback (pers_delete_cert, XmNactivateCallback,
fe_cert_delete_cb, fep);
XtAddCallback (pers_new_cert, XmNactivateCallback,
fe_cert_new_cb, fep);
fep->pers_list = pers_list;
fep->pers_info = pers_info;
fep->pers_delete_cert = pers_delete_cert;
fep->pers_new_cert = pers_new_cert;
fep->pers_cert_menu = pers_cert_menu;
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
static void
fe_make_site_cert_page (MWContext *context, struct fe_prefs_data *fep)
{
Arg av [50];
int ac;
Widget form;
Widget label1, frame1, form1;
Widget all_label, all_list, all_edit_cert, all_delete_cert;
Widget cert_pulldown, cert_menu;
int cert_type;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Widget kids [50];
int i;
ac = 0;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
form = XmCreateForm (fep->site_selector, "site", av, ac);
XtManageChild (form);
fep->site_page = form;
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
frame1 = XmCreateFrame (form, "siteFrame", av, ac);
ac = 0;
XtSetArg (av [ac], XmNchildType, XmFRAME_TITLE_CHILD); ac++;
label1 = XmCreateLabelGadget (frame1, "siteBoxLabel", av, ac);
ac = 0;
XtSetArg (av [ac], XmNleftAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNrightAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNtopAttachment, XmATTACH_FORM); ac++;
XtSetArg (av [ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
form1 = XmCreateForm (frame1, "siteBox", av, ac);
XtVaGetValues (CONTEXT_WIDGET (context), XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
i = 0;
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
cert_pulldown = XmCreatePulldownMenu (form1, "certPulldown", av, ac);
{
Widget b;
kids [i++] = b = XmCreatePushButtonGadget (cert_pulldown, "allCerts", av, ac);
cert_type = SEC_CERT_NICKNAMES_ALL;
XtVaSetValues(b, XmNuserData, cert_type, NULL);
XtAddCallback (b, XmNactivateCallback, fe_cert_pulldown_cb, fep);
kids [i++] = b = XmCreatePushButtonGadget (cert_pulldown, "siteCerts", av, ac);
cert_type = SEC_CERT_NICKNAMES_SERVER;
XtVaSetValues(b, XmNuserData, cert_type, NULL);
XtAddCallback (b, XmNactivateCallback, fe_cert_pulldown_cb, fep);
kids [i++] = b = XmCreatePushButtonGadget (cert_pulldown, "authCerts", av, ac);
cert_type = SEC_CERT_NICKNAMES_CA;
XtVaSetValues(b, XmNuserData, cert_type, NULL);
XtAddCallback (b, XmNactivateCallback, fe_cert_pulldown_cb, fep);
XtManageChildren (kids, i);
}
i = 0;
ac = 0;
XtSetArg (av [ac], XmNsubMenuId, cert_pulldown); ac++;
kids [i++] = cert_menu = fe_CreateOptionMenu (form1, "certMenu", av, ac);
/* Setup the scrolled List */
{
XmStringTable str_list = 0;
int n;
CERTCertNicknames *certnames;
certnames = CERT_GetCertNicknames (CERT_GetDefaultCertDB(),
SEC_CERT_NICKNAMES_ALL,
fep->context);
if (!certnames) return;
str_list = (XmStringTable) XP_ALLOC (sizeof (XmString) *
certnames->numnicknames);
for (n = 0; n < certnames->numnicknames; n++)
str_list[n] = XmStringCreateLocalized (certnames->nicknames[n]);
ac = 0;
XtSetArg (av[ac], XmNvisibleItemCount, 5); ac++;
XtSetArg (av[ac], XmNselectionPolicy, XmBROWSE_SELECT); ac++;
if (certnames->numnicknames) {
XtSetArg (av[ac], XmNitemCount, n); ac++;
XtSetArg (av[ac], XmNitems, str_list); ac++;
}
all_list = XmCreateScrolledList (form1, "allList", av, ac);
XtManageChild (all_list);
kids [i++] = XtParent (all_list);
if (certnames->numnicknames)
XmListSelectPos (all_list, 1, False);
for (n = 0; n < certnames->numnicknames; n++)
XtFree (str_list [n]);
XP_FREE (str_list);
CERT_FreeNicknames (certnames);
}
kids [i++] = all_label = XmCreateLabelGadget (form1, "allLabel", av, ac);
kids [i++] = all_edit_cert =
XmCreatePushButtonGadget (form1, "allEditCert", av, ac);
kids [i++] = all_delete_cert =
XmCreatePushButtonGadget (form1, "allDeleteCert", av, ac);
XtVaSetValues (all_label,
XmNtopAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (cert_menu,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, all_label,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (XtParent (all_list),
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, cert_menu,
XmNbottomAttachment, XmATTACH_FORM,
XmNbottomOffset, 10,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, 10,
XmNrightAttachment, XmATTACH_NONE,
0);
XtVaSetValues (all_edit_cert,
XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNtopWidget, XtParent (all_list),
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_WIDGET,
XmNleftWidget, XtParent (all_list),
XmNleftOffset, 10,
XmNrightAttachment, XmATTACH_FORM,
0);
XtVaSetValues (all_delete_cert,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, all_edit_cert,
XmNbottomAttachment, XmATTACH_NONE,
XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
XmNleftWidget, all_edit_cert,
XmNrightAttachment, XmATTACH_FORM,
0);
XtManageChildren (kids, i);
XtManageChild (label1);
XtManageChild (form1);
XtAddCallback (all_edit_cert, XmNactivateCallback,
fe_all_edit_cb, fep);
XtAddCallback (all_delete_cert, XmNactivateCallback,
fe_all_delete_cb, fep);
#if 0
fe_attach_field_to_labels (auto_p, colors_label, display_label, 0);
#endif
fep->all_list = all_list;
fep->all_edit_cert = all_edit_cert;
fep->all_delete_cert = all_delete_cert;
i = 0;
kids [i++] = frame1;
XtManageChildren (kids, i);
}
#endif /* DUPLICATE_SEC_PREFS */
/*======================== Preferences functions ========================*/
IL_ColorRenderMode
fe_pref_string_to_dither_mode (char *s)
{
if (!strcasecmp (s, "True") || !strcasecmp (s, "Dither"))
return ilDither;
else if (!strcasecmp (s, "False") || !strcasecmp (s, "ClosestColor"))
return ilClosestColor;
/* In the absence of a reasonable value, dithering is auto-selected */
return ilAuto;
}
static char*
fep_to_dither_mode_pref_string (struct fe_prefs_data *fep)
{
Boolean b;
XtVaGetValues (fep->auto_p, XmNset, &b, 0);
if (b)
return "Auto";
XtVaGetValues (fep->dither_p, XmNset, &b, 0);
if (b)
return "Dither";
XtVaGetValues (fep->closest_p, XmNset, &b, 0);
if (b)
return "ClosestColor";
assert(0);
return NULL; /* Satisfy the compiler */
}
/*
* fe_general_reset_1
*/
static void
fe_general_reset_1 (struct fe_prefs_data *fep, XFE_GlobalPrefs *prefs)
{
char buf [1024];
if (current_general_page == xfe_PREFS_STYLES)
{
int state = (prefs->toolbar_icons_p && prefs->toolbar_text_p ? 0
: prefs->toolbar_icons_p ? 1 : 2);
/*#### XP_Bool fixed_message_font_p; */
/*#### int msg_sort_style; */
/*#### int msg_thread_p; */
XtVaSetValues (fep->both_p, XmNset, (state == 0), 0);
XtVaSetValues (fep->icons_p, XmNset, (state == 1), 0);
XtVaSetValues (fep->text_p, XmNset, (state == 2), 0);
XtVaSetValues (fep->tips_p, XmNset, prefs->toolbar_tips_p, 0);
XtVaSetValues (fep->blank_p, XmNset,
(!prefs->home_document ||
!*prefs->home_document), 0);
XtVaSetValues (fep->home_p, XmNset,
(prefs->home_document &&
*prefs->home_document), 0);
XtVaSetValues (fep->home_text,
XmNvalue, prefs->home_document,
XmNsensitive, (prefs->home_document &&
*prefs->home_document &&
!ekit_HomePage()),
0);
state = prefs->startup_mode;
XtVaSetValues (fep->browser_p, XmNset, (state == 0), 0);
XtVaSetValues (fep->mail_p, XmNset, (state == 1), 0);
XtVaSetValues (fep->news_p, XmNset, (state == 2), 0);
XtVaSetValues (fep->underline_p, XmNset, prefs->underline_links_p, 0);
XtVaSetValues (fep->expire_days_p,
XmNset, prefs->global_history_expiration >= 0, 0);
if (prefs->global_history_expiration >= 0)
PR_snprintf (buf, sizeof (buf), "%d", prefs->global_history_expiration);
else
*buf = 0;
XtVaSetValues (fep->expire_days_text,
XmNsensitive, prefs->global_history_expiration >= 0,
XmNvalue, buf, 0);
XtVaSetValues (fep->never_expire_p,
XmNset, prefs->global_history_expiration < 0, 0);
}
else if (current_general_page == xfe_PREFS_FONTS)
{
}
else if (current_general_page == xfe_PREFS_APPS)
{
XtVaSetValues (fep->telnet_text, XmNvalue, prefs->telnet_command, 0);
XtVaSetValues (fep->tn3270_text, XmNvalue, prefs->tn3270_command, 0);
XtVaSetValues (fep->rlogin_text, XmNvalue, prefs->rlogin_command, 0);
XtVaSetValues (fep->rlogin_user_text, XmNvalue,
prefs->rlogin_user_command, 0);
XtVaSetValues (fep->rlogin_text, XmNvalue, prefs->rlogin_command, 0);
XtVaSetValues (fep->tmp_text, XmNvalue, prefs->tmp_dir, 0);
}
else if (current_general_page == xfe_PREFS_HELPERS)
{
/* Parse stuff out of the .mime.types and .mailcap files.
*/
fe_helpers_build_mime_list(fep->helpers);
}
else if (current_general_page == xfe_PREFS_IMAGES)
{
IL_ColorRenderMode render_mode =
fe_pref_string_to_dither_mode(prefs->dither_images);
XtVaSetValues (fep->auto_p, XmNset, render_mode == ilAuto, 0);
XtVaSetValues (fep->dither_p, XmNset, render_mode == ilDither, 0);
XtVaSetValues (fep->closest_p, XmNset, render_mode == ilClosestColor, 0);
XtVaSetValues (fep->while_loading_p, XmNset, prefs->streaming_images, 0);
XtVaSetValues (fep->after_loading_p, XmNset,!prefs->streaming_images, 0);
}
else if (current_general_page == xfe_PREFS_LANGUAGES)
{
/* @@@ not done yet -- erik */
} else
{
abort ();
}
}
static void
fe_mailnews_reset_1 (struct fe_prefs_data *fep, XFE_GlobalPrefs *prefs)
{
if (current_mailnews_page == xfe_PREFS_APPEARANCE)
{
XtVaSetValues (fep->cite_plain_p,
XmNset, prefs->citation_font == MSG_PlainFont, 0);
XtVaSetValues (fep->cite_bold_p,
XmNset, prefs->citation_font == MSG_BoldFont, 0);
XtVaSetValues (fep->cite_italic_p,
XmNset, prefs->citation_font == MSG_ItalicFont, 0);
XtVaSetValues (fep->cite_bold_italic_p,
XmNset, prefs->citation_font == MSG_BoldItalicFont, 0);
XtVaSetValues (fep->cite_normal_p,
XmNset, prefs->citation_size == MSG_NormalSize, 0);
XtVaSetValues (fep->cite_bigger_p,
XmNset, prefs->citation_size == MSG_Bigger, 0);
XtVaSetValues (fep->cite_smaller_p,
XmNset, prefs->citation_size == MSG_Smaller, 0);
XmTextFieldSetString(fep->cite_color_text, prefs->citation_color);
XtVaSetValues (fep->fixed_message_font_p,
XmNset, prefs->fixed_message_font_p, 0);
XtVaSetValues (fep->var_message_font_p,
XmNset, !prefs->fixed_message_font_p, 0);
XtVaSetValues (fep->mail_horiz_p,
XmNset, prefs->mail_pane_style == FE_PANES_NORMAL, 0);
XtVaSetValues (fep->mail_vert_p,
XmNset, prefs->mail_pane_style == FE_PANES_HORIZONTAL, 0);
XtVaSetValues (fep->mail_stack_p,
XmNset, prefs->mail_pane_style == FE_PANES_STACKED, 0);
XtVaSetValues (fep->mail_tall_p,
XmNset, prefs->mail_pane_style == FE_PANES_TALL_FOLDERS, 0);
XtVaSetValues (fep->news_horiz_p,
XmNset, prefs->news_pane_style == FE_PANES_NORMAL, 0);
XtVaSetValues (fep->news_vert_p,
XmNset, prefs->news_pane_style == FE_PANES_HORIZONTAL, 0);
XtVaSetValues (fep->news_stack_p,
XmNset, prefs->news_pane_style == FE_PANES_STACKED, 0);
XtVaSetValues (fep->news_tall_p,
XmNset, prefs->news_pane_style == FE_PANES_TALL_FOLDERS, 0);
}
else if (current_mailnews_page == xfe_PREFS_COMPOSITION)
{
#ifdef PREFS_8BIT
XtVaSetValues (fep->eightbit_toggle, XmNset, !prefs->qp_p, 0);
XtVaSetValues (fep->qp_toggle, XmNset, prefs->qp_p, 0);
#endif
#ifdef PREFS_QUEUED_DELIVERY
XtVaSetValues (fep->deliverAuto_toggle,
XmNset, !prefs->queue_for_later_p, 0);
XtVaSetValues (fep->deliverQ_toggle,
XmNset, prefs->queue_for_later_p, 0);
#endif
XtVaSetValues (fep->mMailOutOther_text, XmNvalue, prefs->mail_bcc, 0);
XtVaSetValues (fep->nMailOutOther_text, XmNvalue, prefs->news_bcc, 0);
XtVaSetValues (fep->mCopyOut_text, XmNvalue, prefs->mail_fcc, 0);
XtVaSetValues (fep->nCopyOut_text, XmNvalue, prefs->news_fcc, 0);
XtVaSetValues (fep->autoquote_toggle,
XmNset, prefs->autoquote_reply, 0);
XtVaSetValues (fep->mMailOutSelf_toggle, XmNset, prefs->mailbccself_p, 0);
XtVaSetValues (fep->nMailOutSelf_toggle, XmNset, prefs->newsbccself_p, 0);
/*#### XP_Bool send_formatted_text_p; */
}
else if (current_mailnews_page == xfe_PREFS_SERVERS)
{
XP_Bool b;
#ifdef PREFS_NEWS_MAX
char buf [1024];
#endif
XtVaSetValues (fep->newshost_text, XmNvalue, prefs->newshost, 0);
XtVaSetValues (fep->newsrc_text, XmNvalue, prefs->newsrc_directory, 0);
#ifdef PREFS_NEWS_MAX
{
if (prefs->news_max_articles > 0) {
if (prefs->news_max_articles > 3500)
prefs->news_max_articles = 3500;
PR_snprintf (buf, sizeof (buf), "%d", prefs->news_max_articles);
} else
*buf = 0;
XtVaSetValues (fep->newsmax_text, XmNvalue, buf, 0);
}
#endif
XtVaSetValues (fep->smtp_text, XmNvalue, prefs->mailhost, 0);
XtVaSetValues (fep->movemail_text, XmNvalue, prefs->movemail_program, 0);
XtVaSetValues (fep->srvr_text, XmNvalue, prefs->pop3_host, 0);
XtVaSetValues (fep->user_text, XmNvalue, prefs->pop3_user_id, 0);
if (prefs->use_movemail_p) {
b = prefs->builtin_movemail_p;
XtVaSetValues (fep->builtin_toggle, XmNset, b, 0);
XtVaSetValues (fep->external_toggle, XmNset, !b, 0);
XtVaSetValues (fep->movemail_text, XmNsensitive, !b, 0);
XtVaSetValues (fep->pop_toggle, XmNset, False, 0);
XtVaSetValues (fep->srvr_text, XmNsensitive, False, 0);
XtVaSetValues (fep->user_text, XmNsensitive, False, 0);
} else {
XtVaSetValues (fep->pop_toggle, XmNset, True, 0);
if ( !ekit_PopServer() ) {
XtVaSetValues (fep->srvr_text, XmNsensitive, True, 0);
}
if ( !ekit_PopName() ) {
XtVaSetValues (fep->user_text, XmNsensitive, True, 0);
}
XtVaSetValues (fep->builtin_toggle, XmNset, False, 0);
XtVaSetValues (fep->external_toggle, XmNset, False, 0);
XtVaSetValues (fep->movemail_text, XmNsensitive, False, 0);
}
/* int pop3_msg_size_limit; */
b = prefs->pop3_msg_size_limit_p;
XtVaSetValues (fep->no_limit, XmNset, !b, 0);
XtVaSetValues (fep->msg_limit, XmNset, b, 0);
if ( !ekit_MsgSizeLimit() ) {
XtVaSetValues (fep->limit_text, XmNsensitive, b, 0);
}
PR_snprintf (buf, sizeof (buf), "%d", abs(prefs->pop3_msg_size_limit));
XtVaSetValues (fep->limit_text, XmNvalue, buf, 0);
/* XP_Bool pop3_leave_mail_on_server; */
b = prefs->pop3_leave_mail_on_server;
XtVaSetValues (fep->msg_remove, XmNset, !b, 0);
XtVaSetValues (fep->msg_leave, XmNset, b, 0);
/* int biff_interval; */
b = prefs->auto_check_mail;
XtVaSetValues (fep->check_never, XmNset, !b, 0);
XtVaSetValues (fep->check_every, XmNset, b, 0);
XtVaSetValues (fep->check_text, XmNsensitive, b, 0);
PR_snprintf (buf, sizeof (buf), "%d", prefs->biff_interval);
XtVaSetValues (fep->check_text, XmNvalue, buf, 0);
XtVaSetValues (fep->maildir_text, XmNvalue, prefs->mail_directory, 0);
/*#### char *history_file; */
}
else if (current_mailnews_page == xfe_PREFS_IDENTITY)
{
fe_SetTextField (fep->user_name_text, prefs->real_name);
XtVaSetValues (fep->user_mail_text, XmNvalue,
prefs->email_address, 0);
fe_SetTextField (fep->user_org_text, prefs->organization);
#ifdef PREFS_SIG
XtVaSetValues (fep->user_sig_text, XmNvalue,
prefs->signature_file, 0);
#endif
/* #### int anonymity_level; */
}
else if (current_mailnews_page == xfe_PREFS_ORGANIZATION)
{
#ifdef PREFS_EMPTY_TRASH
XtVaSetValues (fep->emptyTrash_toggle, XmNset, prefs->emptyTrash, 0);
#endif
XtVaSetValues (fep->rememberPswd_toggle, XmNset, prefs->rememberPswd, 0);
XtVaSetValues (fep->threadmail_toggle, XmNset, prefs->mail_thread_p, 0);
XtVaSetValues (fep->threadnews_toggle, XmNset,
!prefs->no_news_thread_p, 0);
switch (prefs->mail_sort_style) {
default: /* FALL THROUGH */
case 0: /* DATE by default */
XtVaSetValues (fep->mdate_toggle, XmNset, True, 0);
XtVaSetValues (fep->mnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->msender_toggle, XmNset, False, 0);
break;
case 1: /* Message Number by default */
XtVaSetValues (fep->mdate_toggle, XmNset, False, 0);
XtVaSetValues (fep->mnum_toggle, XmNset, True, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->msender_toggle, XmNset, False, 0);
break;
case 2: /* Subject by default */
XtVaSetValues (fep->mdate_toggle, XmNset, False, 0);
XtVaSetValues (fep->mnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, True, 0);
XtVaSetValues (fep->msender_toggle, XmNset, False, 0);
break;
case 3: /* Sender by default */
XtVaSetValues (fep->mdate_toggle, XmNset, False, 0);
XtVaSetValues (fep->mnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->msubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->msender_toggle, XmNset, True, 0);
break;
}
switch (prefs->news_sort_style) {
default: /* FALL THROUGH */
case 0: /* DATE by default */
XtVaSetValues (fep->ndate_toggle, XmNset, True, 0);
XtVaSetValues (fep->nnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, False, 0);
break;
case 1: /* Message Number by default */
XtVaSetValues (fep->ndate_toggle, XmNset, False, 0);
XtVaSetValues (fep->nnum_toggle, XmNset, True, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, False, 0);
break;
case 2: /* Subject by default */
XtVaSetValues (fep->ndate_toggle, XmNset, False, 0);
XtVaSetValues (fep->nnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, True, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, False, 0);
break;
case 3: /* Sender by default */
XtVaSetValues (fep->ndate_toggle, XmNset, False, 0);
XtVaSetValues (fep->nnum_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsubject_toggle, XmNset, False, 0);
XtVaSetValues (fep->nsender_toggle, XmNset, True, 0);
break;
}
#ifdef PREFS_EMPTY_TRASH
XtVaSetValues (fep->emptyTrash_toggle, XmNsensitive, False, 0);
#endif
}
else
{
abort ();
}
}
static void
fe_proxy_reset (struct fe_prefs_data *fep, XFE_GlobalPrefs *prefs)
{
char buf [1024];
char *s;
#define FROB(SLOT,SUFFIX,DEF) \
strcpy (buf, prefs->SLOT##_##SUFFIX); \
s = strrchr (buf, ':'); \
if (s) \
*s++ = 0; \
else \
s = DEF; \
XtVaSetValues (fep->SLOT##_text, XmNvalue, buf, 0); \
XtVaSetValues (fep->SLOT##_port, XmNvalue, s, 0)
FROB (ftp, proxy, "");
FROB (gopher, proxy, "");
FROB (http, proxy, "");
#ifdef HAVE_SECURITY
FROB (https, proxy, "");
#endif
FROB (wais, proxy, "");
#ifdef PREFS_SOCKS
FROB (socks, host, "1080");
#endif
#undef FROB
XtVaSetValues (fep->no_text, XmNvalue, prefs->no_proxy, 0);
}
static void
fe_network_reset_1 (struct fe_prefs_data *fep, XFE_GlobalPrefs *prefs)
{
if (current_network_page == xfe_PREFS_CACHE)
{
char buf [255];
PR_snprintf (buf, sizeof (buf), "%d", prefs->memory_cache_size);
XtVaSetValues (fep->memory_text, XmNvalue, buf, 0);
#ifdef PREFS_DISK_CACHE
PR_snprintf (buf, sizeof (buf), "%d", prefs->disk_cache_size);
XtVaSetValues (fep->disk_text, XmNvalue, buf, 0);
XtVaSetValues (fep->disk_dir, XmNvalue, prefs->cache_dir, 0);
#endif
#ifdef PREFS_VERIFY
XtVaSetValues (fep->once_p, XmNset, prefs->verify_documents == 0, 0);
XtVaSetValues (fep->every_p, XmNset, prefs->verify_documents == 1, 0);
XtVaSetValues (fep->expired_p, XmNset, prefs->verify_documents == 2, 0);
#endif
XtVaSetValues (fep->cache_ssl_p, XmNset, prefs->cache_ssl_p, 0);
}
else if (current_network_page == xfe_PREFS_NETWORK)
{
#ifdef PREFS_NET
char buf [1024];
PR_snprintf (buf, sizeof (buf), "%d", prefs->max_connections);
XtVaSetValues (fep->conn_text, XmNvalue, buf, 0);
PR_snprintf (buf, sizeof (buf), "%d", prefs->network_buffer_size);
XtVaSetValues (fep->buf_text, XmNvalue, buf, 0);
#endif /* PREFS_NET */
}
else if (current_network_page == xfe_PREFS_PROXIES)
{
int state = 0;
state = prefs->proxy_mode;
XtVaSetValues (fep->no_proxies_p, XmNset, (state == 0), 0);
XtVaSetValues (fep->manual_p, XmNset, (state == 1), 0);
XtVaSetValues (fep->manual_browse, XmNsensitive, (state == 1), 0);
XtVaSetValues (fep->auto_proxies_p, XmNset, (state == 2), 0);
XtVaSetValues (fep->proxy_text, XmNvalue, prefs->proxy_url, 0);
if (state != 2) {
XtVaSetValues (fep->proxy_text, XmNsensitive, False, 0);
XtVaSetValues (fep->proxy_reload, XmNsensitive, False, 0);
}
}
else if (current_network_page == xfe_PREFS_PROTOCOLS)
{
/* accept_cookie has 3 states. We are not implementing the disable cookie
state. */
XtVaSetValues (fep->cookie_p, XmNset,
prefs->accept_cookie==NET_WhineAboutCookies, 0);
XtVaSetValues (fep->anon_ftp_p, XmNset, prefs->email_anonftp, 0);
XtVaSetValues (fep->email_form_p, XmNset, prefs->email_submit, 0);
}
else if (current_network_page == xfe_PREFS_LANG)
{
#ifdef JAVA
XtVaSetValues (fep->java_toggle, XmNset, !prefs->disable_java, 0);
#endif
#ifdef MOCHA
XtVaSetValues (fep->javascript_toggle, XmNset, !prefs->disable_javascript, 0);
#endif
}
else
{
abort ();
}
}
#ifdef DUPLICATE_SEC_PREFS
static void
fe_security_reset_1 (struct fe_prefs_data *fep, XFE_GlobalPrefs *prefs)
{
if (current_security_page == xfe_PREFS_SEC_GENERAL)
{
#ifdef HAVE_SECURITY
XtVaSetValues (fep->enter_toggle, XmNset, prefs->enter_warn, 0);
XtVaSetValues (fep->leave_toggle, XmNset, prefs->leave_warn, 0);
XtVaSetValues (fep->mixed_toggle, XmNset, prefs->mixed_warn, 0);
XtVaSetValues (fep->submit_toggle, XmNset, prefs->submit_warn, 0);
XtVaSetValues (fep->ssl2_toggle, XmNset, prefs->ssl2_enable, 0);
XtVaSetValues (fep->ssl3_toggle, XmNset, prefs->ssl3_enable, 0);
#endif /* HAVE_SECURITY */
}
else if (current_security_page == xfe_PREFS_SEC_PASSWORDS)
{
int state = prefs->ask_password;
char buf[255];
char *s;
#if 0
if (SECNAV_GetPasswordEnabled())
s = XP_GetString(XFE_CHANGE_PASSWORD);
else
#endif
s = XP_GetString(XFE_SET_PASSWORD);
fe_SetString (fep->change_password, XmNlabelString, s);
XtVaSetValues (fep->every_toggle, XmNset, (state == 0), 0);
XtVaSetValues (fep->once_toggle, XmNset, (state == 1), 0);
XtVaSetValues (fep->periodic_toggle, XmNset, (state == 2), 0);
PR_snprintf (buf, sizeof (buf), "%d", prefs->password_timeout);
XtVaSetValues (fep->periodic_text, XmNvalue, buf, 0);
if (state != 2)
XtVaSetValues (fep->periodic_text, XmNsensitive, False, 0);
}
else if (current_security_page == xfe_PREFS_SEC_PERSONAL)
{
Widget w;
int nkids = 0;
Widget *kids;
int i;
XtVaGetValues(fep->pers_cert_menu, XmNsubMenuId, &w, 0);
XtVaGetValues(w, XmNnumChildren, &nkids, XmNchildren, &kids, 0);
for (i=0; i<nkids; i++) {
XmString xms;
char *s = NULL;
XtVaGetValues(kids[i], XmNlabelString, &xms, 0);
XmStringGetLtoR(xms, XmFONTLIST_DEFAULT_TAG, &s);
XmStringFree(xms);
if (s && !strcmp(s, prefs->def_user_cert)) {
XtVaSetValues(fep->pers_cert_menu, XmNmenuHistory, kids[i], 0);
XtFree(s);
break;
}
if (s) XtFree(s);
}
}
else if (current_security_page == xfe_PREFS_SEC_SITE)
{
}
else
{
abort ();
}
}
#endif /* DUPLICATE_SEC_PREFS */
static void fe_prefs_destroy_dialog (struct fe_prefs_data *);
static Widget
fe_prefs_get_form (struct fe_prefs_data *fep)
{
Widget w = NULL;
if (fep->general_form)
{
w = fep->general_form;
}
else if (fep->mailnews_form)
{
w = fep->mailnews_form;
}
else if (fep->network_form)
{
w = fep->network_form;
}
#ifdef DUPLICATE_SEC_PREFS
else if (fep->security_form)
{
w = fep->security_form;
}
#endif /* DUPLICATE_SEC_PREFS */
return w;
}
/*
* fe_prefs_set_current_page
*/
static void
fe_prefs_set_current_page (struct fe_prefs_data *fep, int reset)
{
int current_page;
if (fep->general_form)
{
XtVaGetValues (fep->general_form, XmNactiveTab, ¤t_page, 0);
current_general_page = current_page + xfe_GENERAL_OFFSET;
if (reset)
{
/* Throw away the current information about mime types */
NET_CleanupFileFormat(NULL);
fe_globalData.privateMimetypeFileModifiedTime = 0;
NET_CleanupMailCapList(NULL);
fe_globalData.privateMailcapFileModifiedTime = 0;
/* Re-load the default settings */
fe_RegisterConverters();
fe_general_reset_1 (fep, &fe_defaultPrefs);
}
}
else if (fep->mailnews_form)
{
XtVaGetValues (fep->mailnews_form, XmNactiveTab, ¤t_page, 0);
current_mailnews_page = current_page + xfe_MAILNEWS_OFFSET;
if (reset) fe_mailnews_reset_1 (fep, &fe_defaultPrefs);
}
else if (fep->network_form)
{
XtVaGetValues (fep->network_form, XmNactiveTab, ¤t_page, 0);
current_network_page = current_page + xfe_NETWORK_OFFSET;
if (reset) fe_network_reset_1 (fep, &fe_defaultPrefs);
}
#ifdef DUPLICATE_SEC_PREFS
else if (fep->security_form)
{
XtVaGetValues (fep->security_form, XmNactiveTab, ¤t_page, 0);
current_security_page = current_page + xfe_SECURITY_OFFSET;
if (reset) fe_security_reset_1 (fep, &fe_defaultPrefs);
}
#endif /* DUPLICATE_SEC_PREFS */
}
static void
fe_prefs_reset_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_prefs_set_current_page(fep, TRUE);
}
static void fe_prefs_cancel_cb (Widget widget,
XtPointer closure,
XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
/* On a cancel of the general page, we will need undo any converter
* changes that were made in the helpers page
*/
if (fep->general_form && fep->helpers_changed)
fe_prefs_set_current_page (fep, TRUE);
fe_prefs_destroy_dialog (fep);
}
static void
fe_prefs_destroy_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
/* struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;*/
/* Simulate a cancel on destroy */
fe_prefs_cancel_cb(widget, closure, call_data);
}
static void fe_general_verify_page (struct fe_prefs_data *);
static void fe_mailnews_verify_page (struct fe_prefs_data *);
static void fe_network_verify_page (struct fe_prefs_data *);
static void fe_security_verify_page (struct fe_prefs_data *);
static void
fe_general_done_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
MWContext *context = fep->context;
Boolean b; /* paranoia: possibility of sizeof(Bool) != sizeof(Boolean) */
XP_Bool old_underline_links = fe_globalPrefs.underline_links_p;
#if 0
int old_followed_color = fe_globalPrefs.followed_link_color;
int old_unfollowed_color = fe_globalPrefs.unfollowed_link_color;
#endif
int old_history_expiration = fe_globalPrefs.global_history_expiration;
Boolean regenerate_p = False;
fe_general_verify_page (fep);
/* XtUnmanageChild (fep->shell); */
#define SNARF(SLOT1,SLOT2) \
if (fe_globalPrefs.SLOT1) free (fe_globalPrefs.SLOT1); \
XtVaGetValues (fep->SLOT2, XmNvalue, &fe_globalPrefs.SLOT1, 0)
/* ============================================================ Bookmarks */
SNARF (tmp_dir, tmp_text);
#if 0
SNARF (bookmark_file, book_text);
#endif
/* ============================================================ Helpers */
/* ============================================================ Apps */
SNARF (telnet_command, telnet_text);
SNARF (tn3270_command, tn3270_text);
SNARF (rlogin_command, rlogin_text);
SNARF (rlogin_user_command, rlogin_user_text);
/* ============================================================ Styles */
XtVaGetValues (fep->icons_p, XmNset, &b, 0);
fe_globalPrefs.toolbar_icons_p = b;
XtVaGetValues (fep->text_p, XmNset, &b, 0);
fe_globalPrefs.toolbar_text_p = b;
XtVaGetValues (fep->both_p, XmNset, &b, 0);
if (b)
fe_globalPrefs.toolbar_icons_p = fe_globalPrefs.toolbar_text_p = True;
XtVaGetValues (fep->tips_p, XmNset, &b, 0);
fe_globalPrefs.toolbar_tips_p = b;
XtVaGetValues (fep->browser_p, XmNset, &b, 0);
if (b) fe_globalPrefs.startup_mode = 0;
XtVaGetValues (fep->mail_p, XmNset, &b, 0);
if (b) fe_globalPrefs.startup_mode = 1;
XtVaGetValues (fep->news_p, XmNset, &b, 0);
if (b) fe_globalPrefs.startup_mode = 2;
{
char *old_home = fe_globalPrefs.home_document;
struct fe_MWContext_cons *cons = NULL;
XtVaGetValues (fep->blank_p, XmNset, &b, 0);
if (b)
fe_globalPrefs.home_document = strdup ("");
else
XtVaGetValues (fep->home_text, XmNvalue,&fe_globalPrefs.home_document,0);
fe_globalPrefs.home_document = fe_StringTrim(fe_globalPrefs.home_document);
/* Sensitize home menu item and toolbar button in all contexts */
b = (fe_globalPrefs.home_document && *fe_globalPrefs.home_document);
for (cons = fe_all_MWContexts; cons; cons = cons->next) {
if (cons->context->type == MWContextBrowser) {
if (CONTEXT_DATA (cons->context)->home_menuitem)
XtVaSetValues (CONTEXT_DATA (cons->context)->home_menuitem,
XmNsensitive, b, 0);
if (CONTEXT_DATA (cons->context)->show_toolbar_p &&
CONTEXT_DATA (cons->context)->home_button)
XtVaSetValues (CONTEXT_DATA (cons->context)->home_button,
XmNsensitive, b, 0);
}
}
if (old_home) free (old_home);
}
/* ============================================================ Fonts */
fe_get_scaled_font_size(fep);
XtVaGetValues (fep->underline_p, XmNset, &b, 0);
fe_globalPrefs.underline_links_p = b;
XtVaGetValues (fep->never_expire_p, XmNset, &b, 0);
fe_globalPrefs.global_history_expiration = -1;
if (! b)
{
char *text, dummy;
XtVaGetValues (fep->expire_days_text, XmNvalue, &text, 0);
sscanf (text, " %d %c", &fe_globalPrefs.global_history_expiration,
&dummy);
if (fe_globalPrefs.global_history_expiration < 0)
fe_globalPrefs.global_history_expiration = -1;
free (text);
}
/* ============================================================ Images */
if (fe_globalPrefs.dither_images)
free (fe_globalPrefs.dither_images);
fe_globalPrefs.dither_images = strdup (fep_to_dither_mode_pref_string (fep));
XtVaGetValues (fep->while_loading_p, XmNset, &b, 0);
fe_globalPrefs.streaming_images = b;
/* ============================================================ */
#undef SNARF
/* Install the new preferences first, in case the news host changed
or something. */
fe_InstallPreferences (fep->context);
if ((fe_globalPrefs.toolbar_icons_p !=
CONTEXT_DATA (fep->context)->show_toolbar_icons_p) ||
(fe_globalPrefs.toolbar_text_p !=
CONTEXT_DATA (fep->context)->show_toolbar_text_p))
{
CONTEXT_DATA (fep->context)->show_toolbar_icons_p
= fe_globalPrefs.toolbar_icons_p;
CONTEXT_DATA (fep->context)->show_toolbar_text_p
= fe_globalPrefs.toolbar_text_p;
if (CONTEXT_DATA (fep->context)->show_toolbar_p)
regenerate_p = True;
}
if (fep->fonts_changed)
{
fep->fonts_changed = 0;
fe_ReLayout (fep->context, 0);
}
else if (
#if 0
old_followed_color != fe_globalPrefs.followed_link_color ||
old_unfollowed_color != fe_globalPrefs.unfollowed_link_color ||
#endif
old_history_expiration != fe_globalPrefs.global_history_expiration)
{
fe_RefreshAllAnchors ();
}
if (old_underline_links != fe_globalPrefs.underline_links_p)
{
struct fe_MWContext_cons *rest;
for (rest = fe_all_MWContexts; rest; rest = rest->next)
{
Dimension w = 0, h = 0;
/* Should we allow mail/news? ### */
if (rest->context->type != MWContextBrowser) continue;
XtVaGetValues (CONTEXT_DATA (rest->context)->drawing_area,
XmNwidth, &w, XmNheight, &h, 0);
fe_ClearArea (rest->context, 0, 0, w, h);
fe_RefreshArea (rest->context,
CONTEXT_DATA (rest->context)->document_x,
CONTEXT_DATA (rest->context)->document_y, w, h);
}
}
/* Rebuilding a mail/news window results in a core dump right now.
*/
if (regenerate_p && (fep->context->type == MWContextBrowser))
{
#if 0
/* AAAAUUUUGGGHHHH!!! AAAAUUUUUUUUGGGGGHHHHHHHH!!! AAAAAAUUUUGGGGGHHH!!!
Motif is such a categorical piece of shit. I hate my job, I hate
my life, I want to destroy passers-by.
We can't destroy the widget which is the parent of the dialog box
here, because if we do, once we return to the command loop, we get
a free memory reference processing ButtonUp on the Preferences
button on the Options menu in the menubar. That's right, in the
menubar. It's processing a ButtonUp there after this dialog goes
away, probably because of some bullshit to do with it being a modal
dialog. And it gets destroyed prematurely, which I THOUGHT was
exactly what that fucking two-stage-destroy bullshit was supposed to
prevent.
AAAUUUUGGGGHHHHHH!!!!!! Some sonofabitch is gonna pay for this one
of these days, I fucking swear. I'm going to go Postal Worker and
take the whole lot of them out.
So, instead of calling fe_RebuildWindow(), let's try just munging
the widgets in the toolbar.
*/
Dimension w, h, old_h;
/* Dimension top_w = CONTEXT_DATA (fep->context)->top_area->core.width;*/
Dimension top_h = CONTEXT_DATA (fep->context)->top_area->core.height;
int delta;
Widget *kids = 0;
Cardinal nkids = 0;
int i;
/* XtUnmanageChild (CONTEXT_DATA (fep->context)->toolbar);*/
XtUnrealizeWidget (CONTEXT_DATA (fep->context)->top_area);
XtVaGetValues (CONTEXT_DATA (fep->context)->toolbar,
XmNwidth, &w, XmNheight, &h,
XmNchildren, &kids, XmNnumChildren, &nkids, 0);
old_h = kids[0]->core.height;
/* Gag!! The fucking toolbar keeps wanting to go to two lines... */
XtVaGetValues (XtParent (CONTEXT_DATA (fep->context)->toolbar),
XmNwidth, &w, 0);
CONTEXT_DATA (fep->context)->show_toolbar_icons_p
= fe_globalPrefs.toolbar_icons_p;
for (i = 0; i < nkids; i++)
{
Pixmap p, ip;
if (!strcmp ("spacer", XtName (kids [i]))) /* gag me */
continue;
p = fe_ToolbarPixmap (fep->context, i, False, False);
ip = fe_ToolbarPixmap (fep->context, i, True, False);
if (! ip) ip = p;
XtVaSetValues (kids [i],
XmNlabelType, (fe_globalPrefs.toolbar_icons_p
? XmPIXMAP : XmSTRING),
XmNlabelPixmap, p,
XmNlabelInsensitivePixmap, ip,
0);
}
/* Maybe it will help to break this all the way down. */
/* XtUnrealizeWidget (CONTEXT_DATA (fep->context)->top_area);*/
h = kids[0]->core.height;
XtVaSetValues (CONTEXT_DATA (fep->context)->toolbar,
XmNwidth, w, XmNheight, h, 0);
XtManageChild (CONTEXT_DATA (fep->context)->toolbar);
/* Force the width back to what it was before. Don't force the height
back, since that might legitimately have changed.
*/
/* XtManageChild (CONTEXT_DATA (fep->context)->top_area);*/
XtRealizeWidget (CONTEXT_DATA (fep->context)->top_area);
XtManageChild (CONTEXT_DATA (fep->context)->top_area);
delta = h - old_h;
XtVaSetValues (CONTEXT_DATA (fep->context)->top_area,
XmNheight, top_h + delta, 0);
/* XtResizeWidget (CONTEXT_DATA (fep->context)->top_area,
top_w, top_h + delta, 0); */
XtUnmanageChild (XtParent (CONTEXT_DATA (fep->context)->top_area));
XtManageChild (XtParent (CONTEXT_DATA (fep->context)->top_area));
#endif
}
/* This seems like a better way to do things.
*
* First destroy the dialog and it's children. We've extracted
* the user-entered pref data, so we don't need it any more.
* Then call our event loop and let all the X events get handled.
* Finally, call fe_RebuildWindow() to blow away the toolbar
* widgets, and reconstruct them correctly.
*/
/* Destroy the folder widget */
fe_prefs_destroy_dialog (fep);
fe_EventLoop ();
/* Now rebuild the window if necessary */
if (regenerate_p && (context->type == MWContextBrowser))
fe_RebuildWindow (context);
/* Save the preferences at the end, so that if we've found some setting that
crashes, it won't get saved... */
if (!XFE_SavePrefs ((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
fe_perror (context, XP_GetString( XFE_ERROR_SAVING_OPTIONS));
}
static void
fe_mailnews_done_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
MWContext *fep_context = fep->context;
Boolean b; /* paranoia: possibility of sizeof(Bool) != sizeof(Boolean) */
int i;
Boolean reload_required_p = False;
char *s;
MSG_FONT citation_font;
MSG_CITATION_SIZE citation_size;
char *citation_color;
fe_mailnews_verify_page (fep);
/* XtUnmanageChild (fep->shell); */
#define SNARF(SLOT1,SLOT2) \
if (fe_globalPrefs.SLOT1) free (fe_globalPrefs.SLOT1); \
XtVaGetValues (fep->SLOT2, XmNvalue, &fe_globalPrefs.SLOT1, 0)
/* ============================================================ Appearance */
XtVaGetValues (fep->fixed_message_font_p, XmNset, &b, 0);
if (b != fe_globalPrefs.fixed_message_font_p) reload_required_p = True;
fe_globalPrefs.fixed_message_font_p = b;
citation_font = fe_globalPrefs.citation_font;
XtVaGetValues (fep->cite_plain_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_font = MSG_PlainFont;
XtVaGetValues (fep->cite_bold_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_font = MSG_BoldFont;
XtVaGetValues (fep->cite_italic_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_font = MSG_ItalicFont;
XtVaGetValues (fep->cite_bold_italic_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_font = MSG_BoldItalicFont;
if (citation_font != fe_globalPrefs.citation_font) reload_required_p = True;
citation_size = fe_globalPrefs.citation_size;
XtVaGetValues (fep->cite_normal_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_size = MSG_NormalSize;
XtVaGetValues (fep->cite_bigger_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_size = MSG_Bigger;
XtVaGetValues (fep->cite_smaller_p, XmNset, &b, 0);
if (b) fe_globalPrefs.citation_size = MSG_Smaller;
if (citation_size != fe_globalPrefs.citation_size) reload_required_p = True;
citation_color = fe_globalPrefs.citation_color;
fe_globalPrefs.citation_color = XmTextFieldGetString(fep->cite_color_text);
if (citation_color && fe_globalPrefs.citation_color &&
strcasecmp(citation_color, fe_globalPrefs.citation_color))
reload_required_p = True;
if (citation_color) XtFree(citation_color);
MSG_SetCitationStyle (fep->context,
fe_globalPrefs.citation_font,
fe_globalPrefs.citation_size,
fe_globalPrefs.citation_color);
XtVaGetValues (fep->mail_horiz_p, XmNset, &b, 0);
if (b) fe_globalPrefs.mail_pane_style = FE_PANES_NORMAL;
XtVaGetValues (fep->mail_vert_p, XmNset, &b, 0);
if (b) fe_globalPrefs.mail_pane_style = FE_PANES_HORIZONTAL;
XtVaGetValues (fep->mail_stack_p, XmNset, &b, 0);
if (b) fe_globalPrefs.mail_pane_style = FE_PANES_STACKED;
XtVaGetValues (fep->mail_tall_p, XmNset, &b, 0);
if (b) fe_globalPrefs.mail_pane_style = FE_PANES_TALL_FOLDERS;
XtVaGetValues (fep->news_horiz_p, XmNset, &b, 0);
if (b) fe_globalPrefs.news_pane_style = FE_PANES_NORMAL;
XtVaGetValues (fep->news_vert_p, XmNset, &b, 0);
if (b) fe_globalPrefs.news_pane_style = FE_PANES_HORIZONTAL;
XtVaGetValues (fep->news_stack_p, XmNset, &b, 0);
if (b) fe_globalPrefs.news_pane_style = FE_PANES_STACKED;
XtVaGetValues (fep->news_tall_p, XmNset, &b, 0);
if (b) fe_globalPrefs.news_pane_style = FE_PANES_TALL_FOLDERS;
/* ============================================================ Mail */
SNARF (movemail_program, movemail_text);
SNARF (pop3_host, srvr_text);
SNARF (pop3_user_id, user_text);
XtVaGetValues (fep->pop_toggle, XmNset, &b, 0);
fe_globalPrefs.use_movemail_p = !b;
if (fe_globalPrefs.use_movemail_p) {
XtVaGetValues (fep->builtin_toggle, XmNset, &b, 0);
fe_globalPrefs.builtin_movemail_p = b;
}
SNARF (mailhost, smtp_text);
if (fe_globalPrefs.real_name) {
free (fe_globalPrefs.real_name);
}
fe_globalPrefs.real_name = fe_GetTextField (fep->user_name_text);
SNARF (email_address, user_mail_text);
if (fe_globalPrefs.organization) {
free (fe_globalPrefs.organization);
}
fe_globalPrefs.organization = fe_GetTextField (fep->user_org_text);
/* Backend doesn't store mail_directory. So it doesn't know if this
really changed or not when we install the prefs. We have to do this
explicitly here. */
XtVaGetValues(fep->maildir_text, XmNvalue, &s, 0);
if (strcmp(s, fe_globalPrefs.mail_directory)) {
if (fe_globalPrefs.mail_directory) free(fe_globalPrefs.mail_directory);
fe_globalPrefs.mail_directory = s;
MSG_MailDirectoryChanged (fep->context);
}
#ifdef PREFS_SIG
SNARF (signature_file, user_sig_text);
#endif
XtVaGetValues (fep->msg_limit, XmNset, &b, 0);
fe_globalPrefs.pop3_msg_size_limit_p = b;
{
char c, *s = 0;
int n;
XtVaGetValues (fep->limit_text, XmNvalue, &s, 0);
fe_globalPrefs.pop3_msg_size_limit = 0;
if (1 == sscanf (s, " %d %c", &n, &c))
fe_globalPrefs.pop3_msg_size_limit = n;
free (s);
}
XtVaGetValues (fep->msg_leave, XmNset, &b, 0);
fe_globalPrefs.pop3_leave_mail_on_server = b;
XtVaGetValues (fep->check_every, XmNset, &b, 0);
fe_globalPrefs.auto_check_mail = b;
if (b)
{
char c, *s = 0;
int n;
XtVaGetValues (fep->check_text, XmNvalue, &s, 0);
fe_globalPrefs.biff_interval = 0;
if (1 == sscanf (s, " %d %c", &n, &c))
fe_globalPrefs.biff_interval = n;
free (s);
}
#ifdef PREFS_8BIT
XtVaGetValues (fep->qp_toggle, XmNset, &b, 0);
fe_globalPrefs.qp_p = b;
/* eightbit_toggle?? */
#endif
#ifdef PREFS_QUEUED_DELIVERY
XtVaGetValues (fep->deliverQ_toggle,
XmNset, &fe_globalPrefs.queue_for_later_p, 0);
#endif
SNARF (mail_bcc, mMailOutOther_text);
SNARF (news_bcc, nMailOutOther_text);
SNARF (mail_fcc, mCopyOut_text);
SNARF (news_fcc, nCopyOut_text);
XtVaGetValues (fep->autoquote_toggle, XmNset,
&fe_globalPrefs.autoquote_reply, 0);
XtVaGetValues (fep->mMailOutSelf_toggle, XmNset,
&fe_globalPrefs.mailbccself_p, 0);
XtVaGetValues (fep->nMailOutSelf_toggle, XmNset,
&fe_globalPrefs.newsbccself_p, 0);
SNARF (newshost, newshost_text);
/* SNARF (newsrc_directory, newsrc_text); */
/* Backend doesn't store newsrc_directory. So it doesn't know if this
really changed or not when we install the prefs. We have to do this
explicitly here. */
XtVaGetValues(fep->newsrc_text, XmNvalue, &s, 0);
if (strcmp(s, fe_globalPrefs.newsrc_directory)) {
if (fe_globalPrefs.newsrc_directory) free(fe_globalPrefs.newsrc_directory);
fe_globalPrefs.newsrc_directory = s;
/* set FE_UserNewsRC to the new newsrc directory */
FE_UserNewsRC = s;
MSG_NewsDirectoryChanged (fep->context);
}
/* SNARF (news_max_articles, newsmax_text); */
#ifdef PREFS_NEWS_MAX
{
char c, *s = 0;
int n;
XtVaGetValues (fep->newsmax_text, XmNvalue, &s, 0);
fe_globalPrefs.news_max_articles = 0;
if (1 == sscanf (s, " %d %c", &n, &c))
fe_globalPrefs.news_max_articles = n;
free (s);
}
#endif
/* ============================================================ Organization */
#ifdef PREFS_EMPTY_TRASH
XtVaGetValues (fep->emptyTrash_toggle, XmNset, &fe_globalPrefs.emptyTrash, 0);
#endif
XtVaGetValues (fep->rememberPswd_toggle, XmNset, &fe_globalPrefs.rememberPswd, 0);
XtVaGetValues (fep->threadmail_toggle, XmNset, &fe_globalPrefs.mail_thread_p, 0);
XtVaGetValues (fep->threadnews_toggle, XmNset, &b, 0);
fe_globalPrefs.no_news_thread_p = !b;
i = 0;
XtVaGetValues (fep->mdate_toggle, XmNset, &b, 0);
if (!b) {
i++;
XtVaGetValues (fep->mnum_toggle, XmNset, &b, 0);
if (!b) {
i++;
XtVaGetValues (fep->msubject_toggle, XmNset, &b, 0);
if (!b) {
i++;
XtVaGetValues (fep->msender_toggle, XmNset, &b, 0);
}
}
}
if (i < 0 || i > 3) i = 0;
fe_globalPrefs.mail_sort_style = i;
i = 0;
XtVaGetValues (fep->ndate_toggle, XmNset, &b, 0);
if (!b) {
i++;
XtVaGetValues (fep->nnum_toggle, XmNset, &b, 0);
if (!b) {
i++;
XtVaGetValues (fep->nsubject_toggle, XmNset, &b, 0);
if (!b) {
i++;
XtVaGetValues (fep->nsender_toggle, XmNset, &b, 0);
}
}
}
if (i < 0 || i > 3) i = 0;
fe_globalPrefs.news_sort_style = i;
/* ============================================================ */
/* Install the new preferences first, in case the news host changed
or something. */
fe_InstallPreferences (fep->context);
/* Save the preferences at the end, so that if we've found some setting that
crashes, it won't get saved... */
if (!XFE_SavePrefs ((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
fe_perror (fep->context, XP_GetString( XFE_ERROR_SAVING_OPTIONS));
/* Destroy the folder widget */
fe_prefs_destroy_dialog (fep);
/* Reload the mail/news window, if required */
if (reload_required_p)
fe_ReLayout (fep_context, NET_NORMAL_RELOAD);
}
static void
fe_network_done_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
char *s1;
Boolean b; /* paranoia: possibility of sizeof(Bool) != sizeof(Boolean) */
fe_network_verify_page (fep);
/* XtUnmanageChild (fep->shell); */
#define SNARF(SLOT1,SLOT2) \
if (fe_globalPrefs.SLOT1) free (fe_globalPrefs.SLOT1); \
XtVaGetValues (fep->SLOT2, XmNvalue, &fe_globalPrefs.SLOT1, 0)
# define SNARFB(SLOT1,SLOT2) \
XtVaGetValues (fep->SLOT1, XmNset, &b, 0); \
fe_globalPrefs.SLOT2 = b
/* ============================================================ Cache */
{
char *text, dummy;
int size = 0;
XtVaGetValues (fep->memory_text, XmNvalue, &text, 0);
if (1 == sscanf (text, " %d %c", &size, &dummy) &&
size >= 0)
fe_globalPrefs.memory_cache_size = size;
free (text);
#ifdef PREFS_DISK_CACHE
XtVaGetValues (fep->disk_text, XmNvalue, &text, 0);
if (1 == sscanf (text, " %d %c", &size, &dummy) &&
size >= 0)
fe_globalPrefs.disk_cache_size = size;
free (text);
SNARF (cache_dir, disk_dir);
#endif /* PREFS_DISK_CACHE */
#ifdef PREFS_VERIFY
XtVaGetValues (fep->once_p, XmNset, &b, 0);
if (b) fe_globalPrefs.verify_documents = 0;
XtVaGetValues (fep->every_p, XmNset, &b, 0);
if (b) fe_globalPrefs.verify_documents = 1;
XtVaGetValues (fep->expired_p, XmNset, &b, 0);
if (b) fe_globalPrefs.verify_documents = 2;
XtVaGetValues (fep->cache_ssl_p, XmNset, &b, 0);
fe_globalPrefs.cache_ssl_p = b;
#endif
#ifdef PREFS_NET
XtVaGetValues (fep->buf_text, XmNvalue, &text, 0);
if (1 == sscanf (text, " %d %c", &size, &dummy) &&
size > 0)
fe_globalPrefs.network_buffer_size = size;
free (text);
XtVaGetValues (fep->conn_text, XmNvalue, &text, 0);
if (1 == sscanf (text, " %d %c", &size, &dummy) &&
size > 0)
{
if (size > 20) size = 20;
fe_globalPrefs.max_connections = size;
}
free (text);
#endif /* PREFS_NET */
}
/* ============================================================ Proxies */
XtVaGetValues (fep->proxy_text, XmNvalue, &s1, 0);
if (*s1) {
NET_SetProxyServer(PROXY_AUTOCONF_URL, s1);
fe_globalPrefs.proxy_url = XP_STRDUP (s1);
} else {
if (fe_globalPrefs.proxy_url) XP_FREE (fe_globalPrefs.proxy_url);
fe_globalPrefs.proxy_url = 0;
}
XtVaGetValues (fep->no_proxies_p, XmNset, &b, 0);
if (b) {
NET_SelectProxyStyle(PROXY_STYLE_NONE);
fe_globalPrefs.proxy_mode = 0;
}
XtVaGetValues (fep->manual_p, XmNset, &b, 0);
if (b) {
NET_SelectProxyStyle(PROXY_STYLE_MANUAL);
fe_globalPrefs.proxy_mode = 1;
}
XtVaGetValues (fep->auto_proxies_p, XmNset, &b, 0);
if (b) {
NET_SelectProxyStyle(PROXY_STYLE_AUTOMATIC);
fe_globalPrefs.proxy_mode = 2;
}
/* ============================================================ Protocols */
XtVaGetValues (fep->cookie_p, XmNset, &b, 0);
if (b)
fe_globalPrefs.accept_cookie = NET_WhineAboutCookies;
else
fe_globalPrefs.accept_cookie = NET_SilentCookies;
XtVaGetValues (fep->anon_ftp_p, XmNset, &b, 0);
fe_globalPrefs.email_anonftp = b;
XtVaGetValues (fep->email_form_p, XmNset, &b, 0);
fe_globalPrefs.email_submit = b;
/* ============================================================ Languages */
#ifdef JAVA
XtVaGetValues (fep->java_toggle, XmNset, &b, 0);
fe_globalPrefs.disable_java = !b;
LJ_SetJavaEnabled(!fe_globalPrefs.disable_java);
#endif
#ifdef MOCHA
XtVaGetValues (fep->javascript_toggle, XmNset, &b, 0);
fe_globalPrefs.disable_javascript = !b;
LM_SwitchMocha(!fe_globalPrefs.disable_javascript);
#endif
/* ============================================================ */
/* Install the new preferences first, in case the news host changed
or something. */
fe_InstallPreferences (fep->context);
/* Save the preferences at the end, so that if we've found some setting that
crashes, it won't get saved... */
if (!XFE_SavePrefs ((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
fe_perror (fep->context, XP_GetString( XFE_ERROR_SAVING_OPTIONS));
/* Destroy the folder widget */
fe_prefs_destroy_dialog (fep);
}
#ifdef DUPLICATE_SEC_PREFS
static void
fe_security_done_cb (Widget widget, XtPointer closure, XtPointer call_data)
{
struct fe_prefs_data *fep = (struct fe_prefs_data *) closure;
fe_security_verify_page (fep);
/* XtUnmanageChild (fep->shell); */
#define SNARF(SLOT1,SLOT2) \
if (fe_globalPrefs.SLOT1) free (fe_globalPrefs.SLOT1); \
XtVaGetValues (fep->SLOT2, XmNvalue, &fe_globalPrefs.SLOT1, 0)
/* ============================================================ Security */
#ifdef HAVE_SECURITY
{
Boolean b;
# define SNARFB(SLOT1,SLOT2) \
XtVaGetValues (fep->SLOT1, XmNset, &b, 0); \
fe_globalPrefs.SLOT2 = b
SNARFB (enter_toggle, enter_warn);
SNARFB (leave_toggle, leave_warn);
SNARFB (mixed_toggle, mixed_warn);
SNARFB (submit_toggle, submit_warn);
SNARFB (ssl2_toggle, ssl2_enable);
SSL_EnableDefault(SSL_ENABLE_SSL2, fe_globalPrefs.ssl2_enable);
SNARFB (ssl3_toggle, ssl3_enable);
SSL_EnableDefault(SSL_ENABLE_SSL3, fe_globalPrefs.ssl3_enable);
# undef SNARFB
}
#endif /* HAVE_SECURITY */
/* ============================================================ Security */
{
Boolean ask_pass, b;
char *s1;
int timeout;
XtVaGetValues (fep->every_toggle, XmNset, &b, 0);
if (b) fe_globalPrefs.ask_password = ask_pass = 0;
XtVaGetValues (fep->once_toggle, XmNset, &b, 0);
if (b) fe_globalPrefs.ask_password = ask_pass = 1;
XtVaGetValues (fep->periodic_toggle, XmNset, &b, 0);
if (b) fe_globalPrefs.ask_password = ask_pass = 2;
XtVaGetValues (fep->periodic_text, XmNvalue, &s1, 0);
fe_globalPrefs.password_timeout = timeout = atoi (s1);
XP_FREE (s1);
}
/* ============================================================ */
{
char *s = NULL;
Widget w;
XmString xms;
XtVaGetValues(fep->pers_cert_menu, XmNmenuHistory, &w, 0);
XtVaGetValues(w, XmNlabelString, &xms, 0);
XmStringGetLtoR(xms, XmFONTLIST_DEFAULT_TAG, &s);
if (s) {
fe_globalPrefs.def_user_cert = s;
}
}
/* ============================================================ */
/* Install the new preferences first, in case the news host changed
or something. */
fe_InstallPreferences (fep->context);
/* Save the preferences at the end, so that if we've found some setting that
crashes, it won't get saved... */
if (!XFE_SavePrefs ((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
fe_perror (fep->context, XP_GetString( XFE_ERROR_SAVING_OPTIONS));
/* Destroy the folder widget */
fe_prefs_destroy_dialog (fep);
}
#endif /* DUPLICATE_SEC_PREFS */
void
_myDestroyWidget (Widget widget)
{
XP_ASSERT (widget);
XtDestroyWidget (widget);
}
static void
fe_prefs_destroy_dialog (struct fe_prefs_data *fep)
{
int i;
WidgetList tabs;
fe_prefs_set_current_page(fep, FALSE);
/* This seems to be the only way to make the Microline
* folder widget happy. Without doing this, BuildTabList
* in Folder.c dumps in XtIsSubclass.
* Yes, hack central.
*/
XtVaGetValues (fe_prefs_get_form (fep),
XmNtabCount, &i,
XmNtabWidgetList, &tabs,
NULL);
/* XtUnrealizeWidget (fep->shell); */
while (i--) {
/* printf("deleting %d\n", i); */
_myDestroyWidget (tabs[i]);
}
/* ### not the best way to do this */
XtRemoveCallback (fep->shell, XmNokCallback, fe_general_done_cb, fep);
XtRemoveCallback (fep->shell, XmNokCallback, fe_mailnews_done_cb, fep);
XtRemoveCallback (fep->shell, XmNokCallback, fe_network_done_cb, fep);
#ifdef DUPLICATE_SEC_PREFS
XtRemoveCallback (fep->shell, XmNokCallback, fe_security_done_cb, fep);
#endif /* DUPLICATE_SEC_PREFS */
XtRemoveCallback (fep->shell, XmNcancelCallback, fe_prefs_reset_cb, fep);
XtRemoveCallback (fep->shell, XmNapplyCallback, fe_prefs_cancel_cb, fep);
XtRemoveCallback (fep->shell, XmNdestroyCallback, fe_prefs_destroy_cb, fep);
if (CONTEXT_DATA (fep->context)->currentPrefDialog) {
XP_ASSERT (fep->shell == CONTEXT_DATA (fep->context)->currentPrefDialog);
CONTEXT_DATA (fep->context)->currentPrefDialog = 0;
CONTEXT_DATA (fep->context)->fep = NULL;
}
_myDestroyWidget (fep->shell);
/* Cleanup helpers */
if (fep->helpers) {
fe_helpers_prepareForDestroy(fep->helpers);
XP_FREE(fep->helpers);
}
/* Proxies page has been implemented using a local event loop and as a
* modal widget of the context (and not the prefdialog). So if the pref
* dialog got destroyed, the proxies page would still remain. Bring it
* down.
*/
proxies_done = 0;
free (fep);
}
#define CHECK_FILE(W,DESC,MSG,N) \
{ \
char *text = 0; \
XtVaGetValues (W, XmNvalue, &text, 0); \
text = fe_StringTrim (text); \
if (!text || !*text || stat (text, &st)) \
{ \
PR_snprintf (MSG, 200, \
XP_GetString(XFE_FILE_DOES_NOT_EXIST), \
DESC, (text ? text : "")); \
MSG += strlen (MSG); \
} \
if (text) free (text); \
}
#define CHECK_HOST_1(TEXT,DESC,MSG,N) \
{ \
int d; char c; \
PRHostEnt hpbuf; \
char dbbuf[PR_NETDB_BUF_SIZE]; \
if (TEXT && 4 == sscanf (TEXT, " %d.%d.%d.%d %c", \
&d, &d, &d, &d, &c)) \
/* IP addresses are ok */ ; \
else if (!TEXT || !*TEXT || \
!PR_gethostbyname(TEXT,&hpbuf, dbbuf, sizeof(dbbuf), 0)) \
{ \
PR_snprintf (MSG, 200, \
XP_GetString(XFE_HOST_IS_UNKNOWN), \
DESC, (TEXT ? TEXT : "")); \
MSG += strlen (MSG); \
} \
}
#define CHECK_HOST(W,DESC,MSG,N) \
{ \
char *text = 0; \
XtVaGetValues (W, XmNvalue, &text, 0); \
text = fe_StringTrim (text); \
CHECK_HOST_1 (text, DESC, MSG, N); \
if (text) free (text); \
}
#define CHECK_PROXY(W1,W2,DESC,PORT_REQUIRED,MSG,N) \
{ \
char *text = 0; \
XtVaGetValues (W1, XmNvalue, &text, 0); \
text = fe_StringTrim (text); \
if (text && *text) \
{ \
CHECK_HOST_1 (text, DESC, MSG, N); \
free (text); \
text = 0; \
XtVaGetValues (W2, XmNvalue, &text, 0); \
text = fe_StringTrim (text); \
if ((!text || !*text) && PORT_REQUIRED) \
{ \
PR_snprintf (MSG, 200, \
XP_GetString(XFE_NO_PORT_NUMBER), DESC); \
MSG += strlen (MSG); \
} \
} \
if (text) free (text); \
}
static void
fe_general_verify_page (struct fe_prefs_data *fep)
{
char buf [10000];
char *buf2, *warning;
struct stat st;
int size;
buf2 = buf;
strcpy (buf, XP_GetString(XFE_WARNING));
buf2 = buf + strlen (buf);
warning = buf2;
size = buf + sizeof (buf) - warning;
if (current_general_page == xfe_PREFS_APPS)
{
CHECK_FILE (fep->tmp_text,
XP_GetString(XFE_TEMP_DIRECTORY), warning, size);
}
else if (current_general_page == xfe_PREFS_FONTS)
{
/* Nothing to check here */
}
else if (current_general_page == xfe_PREFS_HELPERS)
{
/* No longer needs, these files is not modifiable via dialog*/
}
else if (current_general_page == xfe_PREFS_IMAGES)
{
/* Nothing to check here */
}
else if (current_general_page == xfe_PREFS_STYLES)
{
/* Nothing to check here */
/* #### home page is a URL - should search for a file if "file:",
or should check host name if anything else. */
}
else if (current_general_page == xfe_PREFS_LANGUAGES)
{
/* Nothing to check here */
}
else if (current_general_page)
{
abort ();
}
if (*buf2)
FE_Alert (fep->context, fe_StringTrim (buf));
}
static void
fe_mailnews_verify_page (struct fe_prefs_data *fep)
{
char buf [10000];
char *buf2, *warning;
struct stat st;
int size;
buf2 = buf;
strcpy (buf, XP_GetString(XFE_WARNING));
buf2 = buf + strlen (buf);
warning = buf2;
size = buf + sizeof (buf) - warning;
if (current_mailnews_page == xfe_PREFS_APPEARANCE)
{
/* Nothing to check here yet */
}
else if (current_mailnews_page == xfe_PREFS_COMPOSITION)
{
/* Nothing to check here */
/* #### validate bcc addresses somehow? */
}
else if (current_mailnews_page == xfe_PREFS_SERVERS)
{
CHECK_HOST (fep->smtp_text, XP_GetString(XFE_MAIL_HOST), warning, size);
CHECK_HOST (fep->newshost_text,
XP_GetString(XFE_NEWS_HOST), warning, size);
CHECK_FILE (fep->newsrc_text,
XP_GetString(XFE_NEWS_RC_DIRECTORY),
warning, size);
}
else if (current_mailnews_page == xfe_PREFS_IDENTITY)
{
/* Nothing to check here */
}
else if (current_mailnews_page == xfe_PREFS_ORGANIZATION)
{
/* Nothing to check here */
}
else if (current_mailnews_page)
{
abort ();
}
if (*buf2)
FE_Alert (fep->context, fe_StringTrim (buf));
}
void
fe_SetMailNewsSortBehavior(MWContext* context, XP_Bool thread, int sortcode)
{
XP_ASSERT(context->type == MWContextMail || context->type == MWContextNews);
if (context->type == MWContextMail || context->type == MWContextNews) {
MSG_SetToggleStatus(context, MSG_ThreadMessages,
thread ? MSG_Checked : MSG_Unchecked);
switch (sortcode) {
case 0:
MSG_Command(context, MSG_SortByDate);
break;
case 1:
MSG_Command(context, MSG_SortByMessageNumber);
break;
case 2:
MSG_Command(context, MSG_SortBySubject);
break;
case 3:
MSG_Command(context, MSG_SortBySender);
break;
}
}
}
static void
fe_proxy_verify_page (struct fe_prefs_data *fep)
{
char buf [10000];
char *buf2, *warning;
int size;
Widget shell = 0;
/* Display errors on top of the pref dialog rather than the proxy page
* as the proxy page will automatically go away. That would take this
* error dialog with it. So the user wont see the error message.
*
* The real problem is that we should remove the way the proxy page
* is being displayed with the
* while(proxy_done)
* fe_EventLoop();
* This is a diaster. We could just make this a modal dialog and not have
* do the above. But it is too late to change this in b6 for 3.0
* - dp
*/
if (fep->shell)
shell = fep->shell;
buf2 = buf;
strcpy (buf, XP_GetString(XFE_WARNING));
buf2 = buf + strlen (buf);
warning = buf2;
size = buf + sizeof (buf) - warning;
CHECK_PROXY (fep->ftp_text, fep->ftp_port,
XP_GetString(XFE_FTP_PROXY_HOST), True, warning, size);
CHECK_PROXY (fep->gopher_text,fep->gopher_port,
XP_GetString(XFE_GOPHER_PROXY_HOST),True, warning, size);
CHECK_PROXY (fep->http_text, fep->http_port,
XP_GetString(XFE_HTTP_PROXY_HOST), True, warning, size);
#ifdef HAVE_SECURITY
CHECK_PROXY (fep->https_text, fep->https_port,
XP_GetString(XFE_HTTPS_PROXY_HOST), True, warning, size);
#endif
CHECK_PROXY (fep->wais_text, fep->wais_port,
XP_GetString(XFE_WAIS_PROXY_HOST), True, warning, size);
CHECK_PROXY (fep->socks_text, fep->socks_port,
XP_GetString(XFE_SOCKS_HOST), False, warning, size);
/* #### check no_proxy */
if (*buf2)
if (shell)
fe_Alert_2(shell, fe_StringTrim(buf));
else
FE_Alert (fep->context, fe_StringTrim (buf));
}
static void
fe_network_verify_page (struct fe_prefs_data *fep)
{
char buf [10000];
char *buf2, *warning;
int size;
buf2 = buf;
strcpy (buf, XP_GetString(XFE_WARNING));
buf2 = buf + strlen (buf);
warning = buf2;
size = buf + sizeof (buf) - warning;
if ((current_network_page == xfe_PREFS_CACHE) ||
(current_network_page == xfe_PREFS_NETWORK) ||
(current_network_page == xfe_PREFS_PROXIES) ||
(current_network_page == xfe_PREFS_PROTOCOLS) ||
(current_network_page == xfe_PREFS_LANG))
{
/* Nothing to check here */
}
else if (current_network_page)
{
abort ();
}
if (*buf2)
FE_Alert (fep->context, fe_StringTrim (buf));
}
#ifdef DUPLICATE_SEC_PREFS
static void
fe_security_verify_page (struct fe_prefs_data *fep)
{
char buf [10000];
char *buf2, *warning;
buf2 = buf;
strcpy (buf, XP_GetString(XFE_WARNING));
buf2 = buf + strlen (buf);
warning = buf2;
if (current_security_page == xfe_PREFS_SEC_GENERAL)
{
/* Nothing to check here */
}
else if (current_security_page == xfe_PREFS_SEC_PASSWORDS)
{
/* Nothing to check here */
}
else if (current_security_page == xfe_PREFS_SEC_PERSONAL)
{
/* Nothing to check here */
}
else if (current_security_page == xfe_PREFS_SEC_SITE)
{
/* Nothing to check here */
}
else if (current_security_page)
{
abort ();
}
if (*buf2)
FE_Alert (fep->context, fe_StringTrim (buf));
}
#endif /* DUPLICATE_SEC_PREFS */
#undef CHECK_FILE
#undef CHECK_HOST
#undef CHECK_PROXY
void
fe_InstallPreferences (MWContext *context)
{
/* OPTIONS MENU
show_toolbar_p
show_url_p
show_directory_buttons_p
autoload_images_p
fancy_ftp_p
show_security_bar_p
*/
/* APPLICATIONS
tn3270_command
telnet_command
rlogin_command
rlogin_user_command
*/
/* CACHE
*/
FE_CacheDir = fe_globalPrefs.cache_dir;
NET_SetMemoryCacheSize (fe_globalPrefs.memory_cache_size * 1024);
NET_SetDiskCacheSize (fe_globalPrefs.disk_cache_size * 1024);
NET_SetCacheUseMethod (fe_globalPrefs.verify_documents == 1
? CU_CHECK_ALL_THE_TIME
: fe_globalPrefs.verify_documents == 2
? CU_NEVER_CHECK
: CU_CHECK_PER_SESSION);
NET_DontDiskCacheSSL(!fe_globalPrefs.cache_ssl_p);
/* COLORS
*/
/* COMPOSITION
*/
MIME_ConformToStandard (fe_globalPrefs.qp_p);
/* #### send_formatted_text_p */
/* #### queue_for_later_p */
MSG_SetDefaultHeaderContents (context,
MSG_BCC_HEADER_MASK, fe_globalPrefs.mail_bcc,
FALSE);
MSG_SetDefaultHeaderContents (context,
MSG_BCC_HEADER_MASK, fe_globalPrefs.news_bcc,
TRUE);
MSG_SetDefaultHeaderContents (context,
MSG_FCC_HEADER_MASK, fe_globalPrefs.mail_fcc,
FALSE);
MSG_SetDefaultHeaderContents (context,
MSG_FCC_HEADER_MASK, fe_globalPrefs.news_fcc,
TRUE);
MSG_SetDefaultBccSelf(context, fe_globalPrefs.mailbccself_p, FALSE);
MSG_SetDefaultBccSelf(context, fe_globalPrefs.newsbccself_p, TRUE);
/* DIRECTORIES
*/
FE_TempDir = fe_globalPrefs.tmp_dir;
/* bookmark_file */
FE_GlobalHist = fe_globalPrefs.history_file;
/* FONTS
doc_csid
font specs
*/
MSG_SetCitationStyle (context,
fe_globalPrefs.citation_font,
fe_globalPrefs.citation_size,
fe_globalPrefs.citation_color);
/* HELPERS
global_mime_types_file
private_mime_types_file
global_mailcap_file
private_mailcap_file
*/
/* IDENTITY
real_name
email_address
organization
signature_file
#### anonymity_level
*/
/* IMAGES
*/
if (context)
IL_SetPreferences (context,
fe_globalPrefs.streaming_images,
fe_pref_string_to_dither_mode
(fe_globalPrefs.dither_images));
/* MAIL
*/
NET_SetMailRelayHost ((char *)
((fe_globalPrefs.mailhost && *fe_globalPrefs.mailhost)
? fe_globalPrefs.mailhost : "localhost"));
/* use_movemail_p */
/* movemail_program */
MSG_SetPopHost (fe_globalPrefs.pop3_host);
NET_SetPopUsername (fe_globalPrefs.pop3_user_id);
NET_LeavePopMailOnServer (fe_globalPrefs.pop3_leave_mail_on_server);
NET_SetPopMsgSizeLimit (fe_globalPrefs.pop3_msg_size_limit_p ?
fe_globalPrefs.pop3_msg_size_limit :
-fe_globalPrefs.pop3_msg_size_limit);
MSG_SetBiffInterval(fe_globalPrefs.auto_check_mail ?
fe_globalPrefs.biff_interval * 60 : -1);
MSG_SetBiffStatFile(fe_globalPrefs.use_movemail_p ? fe_mn_getmailbox() :
NULL);
MSG_SetAutoQuoteReply(fe_globalPrefs.autoquote_reply);
NET_SetPopPassword (fe_globalPrefs.rememberPswd
? fe_globalPrefs.pop3_password : NULL);
{
MWContext* mailctx = XP_FindContextOfType(context, MWContextMail);
if (mailctx) {
fe_SetMailNewsSortBehavior(mailctx,
fe_globalPrefs.mail_thread_p,
fe_globalPrefs.mail_sort_style);
}
}
{
MWContext* newsctx = XP_FindContextOfType(context, MWContextNews);
if (newsctx) {
fe_SetMailNewsSortBehavior(newsctx,
!fe_globalPrefs.no_news_thread_p,
fe_globalPrefs.news_sort_style);
}
}
/*XXX mail_thread_p*/
/*XXX no_news_thread_p*/
/*XXX mail_sort_style */
/*XXX news_sort_style */
/* NETWORK
*/
NET_ChangeMaxNumberOfConnections (50);
NET_ChangeMaxNumberOfConnectionsPerContext (fe_globalPrefs.max_connections);
NET_ChangeSocketBufferSize (fe_globalPrefs.network_buffer_size * 1024);
/* NEWS
*/
FE_UserNewsHost = fe_globalPrefs.newshost; NET_SetNewsHost (FE_UserNewsHost);
FE_UserNewsRC = fe_globalPrefs.newsrc_directory;
NET_SetNumberOfNewsArticlesInListing (fe_globalPrefs.news_max_articles);
NET_SetCacheXOVER (fe_globalPrefs.news_cache_xover);
MSG_SetAutoShowFirstUnread(fe_globalPrefs.show_first_unread_p);
/* PROTOCOLS
*/
NET_SendEmailAddressAsFTPPassword(fe_globalPrefs.email_anonftp);
NET_WarnOnMailtoPost(fe_globalPrefs.email_submit);
NET_SetCookiePrefs(fe_globalPrefs.accept_cookie);
/* LANGUAGES
*/
#ifdef JAVA
LJ_SetJavaEnabled(!fe_globalPrefs.disable_java);
#endif
#ifdef MOCHA
LM_SwitchMocha(!fe_globalPrefs.disable_javascript);
#endif
/* PROXIES
*/
NET_SetSocksHost (fe_globalPrefs.socks_host);
NET_SetProxyServer (FTP_PROXY, fe_globalPrefs.ftp_proxy);
NET_SetProxyServer (HTTP_PROXY, fe_globalPrefs.http_proxy);
#ifdef HAVE_SECURITY
NET_SetProxyServer (HTTPS_PROXY, fe_globalPrefs.https_proxy);
#endif
NET_SetProxyServer (GOPHER_PROXY, fe_globalPrefs.gopher_proxy);
NET_SetProxyServer (WAIS_PROXY, fe_globalPrefs.wais_proxy);
NET_SetProxyServer (NO_PROXY, fe_globalPrefs.no_proxy);
if (fe_globalPrefs.proxy_mode == 0)
NET_SelectProxyStyle(PROXY_STYLE_NONE);
else if (fe_globalPrefs.proxy_mode == 1)
NET_SelectProxyStyle(PROXY_STYLE_MANUAL);
else if (fe_globalPrefs.proxy_mode == 2) {
NET_SetProxyServer(PROXY_AUTOCONF_URL, fe_globalPrefs.proxy_url);
NET_SelectProxyStyle(PROXY_STYLE_AUTOMATIC);
}
#ifdef DUPLICATE_SEC_PREFS
SECNAV_SetPasswordAskPrefs (
fe_globalPrefs.ask_password - 1, /* hack? naaah. */
fe_globalPrefs.password_timeout);
/* SECURITY
enter_warn
leave_warn
mixed_warn
submit_warn
*/
SSL_EnableDefault(SSL_ENABLE_SSL2, fe_globalPrefs.ssl2_enable);
SSL_EnableDefault(SSL_ENABLE_SSL3, fe_globalPrefs.ssl3_enable);
(void)SECNAV_SetDefUserCertList(fe_globalPrefs.def_user_cert);
#endif /* DUPLICATE_SEC_PREFS */
/* STYLES 1
toolbar_icons_p
toolbar_text_p
home_document
underline_links_p
*/
MSG_SetPlaintextFont (context, fe_globalPrefs.fixed_message_font_p);
/* #### msg_sort_style */
/* #### msg_thread_p */
if (fe_globalPrefs.global_history_expiration <= 0)
GH_SetGlobalHistoryTimeout (-1);
else
GH_SetGlobalHistoryTimeout (fe_globalPrefs.global_history_expiration
* 24 * 60 * 60);
/* BOOKMARKS
put_added_urls_under
begin_bookmark_menu_under
*/
/* PRINT
print_command
print_reversed
print_color
print_landscape
print_paper_size
*/
/* ========================================================================= */
#ifdef NEW_DECODERS
if (context &&
(!CONTEXT_DATA(context)->currentPrefDialog ||
!CONTEXT_DATA(context)->fep ||
CONTEXT_DATA(context)->fep->helpers_changed)) {
XP_Bool reload = FALSE;
/* Save the current preferences out */
if (fe_globalData.privateMimetypeFileModifiedTime != 0 &&
fe_isFileExist(fe_globalPrefs.private_mime_types_file) &&
fe_isFileChanged(fe_globalPrefs.private_mime_types_file,
fe_globalData.privateMimetypeFileModifiedTime, 0)) {
/* Ask users about overwriting or reloading */
char *msg = PR_smprintf(XP_GetString(XFE_PRIVATE_MIMETYPE_RELOAD),
fe_globalPrefs.private_mime_types_file);
if (msg) {
reload = XFE_Confirm (context, msg);
XP_FREE(msg);
}
}
if (reload)
NET_CleanupFileFormat(NULL);
else
NET_CleanupFileFormat(fe_globalPrefs.private_mime_types_file);
reload = FALSE;
if (fe_globalData.privateMailcapFileModifiedTime != 0 &&
fe_isFileExist(fe_globalPrefs.private_mailcap_file) &&
fe_isFileChanged(fe_globalPrefs.private_mailcap_file,
fe_globalData.privateMailcapFileModifiedTime, NULL)) {
/* Ask users about overwriting or reloading */
char *msg = PR_smprintf(XP_GetString(XFE_PRIVATE_MAILCAP_RELOAD),
fe_globalPrefs.private_mailcap_file);
if (msg) {
reload = XFE_Confirm(context, msg);
XP_FREE(msg);
}
}
if (reload)
NET_CleanupMailCapList(NULL);
else
NET_CleanupMailCapList(fe_globalPrefs.private_mailcap_file);
/* Load the preferences file again */
fe_RegisterConverters ();
}
#endif /* NEW_DECODERS */
}
void
fe_GeneralPrefsDialog (MWContext *context)
{
Widget mainw = CONTEXT_WIDGET (context);
Widget dialog, form, tmp;
XmString str;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Arg av [20];
int ac;
struct fe_prefs_data *fep = NULL;
fep = (struct fe_prefs_data *) malloc (sizeof (struct fe_prefs_data));
memset (fep, 0, sizeof (struct fe_prefs_data));
fep->context = context;
XtVaGetValues (mainw, XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
XtSetArg (av[ac], XmNallowShellResize, TRUE); ac++;
XtSetArg (av[ac], XmNtransientFor, mainw); ac++;
XtSetArg (av[ac], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); ac++;
XtSetArg (av[ac], XmNdialogType, XmDIALOG_QUESTION); ac++;
XtSetArg (av[ac], XmNdeleteResponse, XmDESTROY); ac++;
XtSetArg (av[ac], XmNautoUnmanage, False); ac++;
XtSetArg (av[ac], XmNnoResize, True); ac++;
dialog = XmCreatePromptDialog (mainw, "general_prefs", av, ac);
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_SEPARATOR));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_TEXT));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog,
XmDIALOG_SELECTION_LABEL));
XtManageChild (XmSelectionBoxGetChild (dialog, XmDIALOG_APPLY_BUTTON));
#ifdef NO_HELP
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_HELP_BUTTON));
#endif
XtAddCallback (dialog, XmNokCallback, fe_general_done_cb, fep);
XtAddCallback (dialog, XmNcancelCallback, fe_prefs_reset_cb, fep);
XtAddCallback (dialog, XmNapplyCallback, fe_prefs_cancel_cb, fep);
XtAddCallback (dialog, XmNdestroyCallback, fe_prefs_destroy_cb, fep);
form = XtVaCreateManagedWidget("form",
xmlFolderWidgetClass, dialog,
XmNshadowThickness, 2,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
#ifdef ALLOW_TAB_ROTATE
XmNtabPlacement, XmFOLDER_LEFT,
XmNrotateWhenLeftRight, FALSE,
#endif /* ALLOW_TAB_ROTATE */
XmNbottomOffset, 3,
XmNspacing, 1,
NULL);
#define ADD_TAB(VAR,STRING) \
str = XmStringCreateLocalized (STRING); \
tmp = XmLFolderAddTabForm (form, str); \
XmStringFree (str); \
fep->VAR = tmp
ADD_TAB(styles1_selector, XP_GetString( XFE_APPEARANCE ) );
#if 0
ADD_TAB(bookmarks_selector, XP_GetString( XFE_BOOKMARKS ) );
#endif
#ifdef notyet
ADD_TAB(colors_selector, XP_GetString( XFE_COLORS ) );
#endif
ADD_TAB(fonts_selector, XP_GetString( XFE_FONTS ) );
ADD_TAB(apps_selector, XP_GetString( XFE_APPLICATIONS ) );
ADD_TAB(helpers_selector, XP_GetString( XFE_HELPERS ) );
ADD_TAB(images_selector, XP_GetString( XFE_IMAGES ) );
#ifdef REQUEST_LANGUAGE
ADD_TAB(languages_selector, XP_GetString( XFE_LANGUAGES ) );
#endif
#undef ADD_TAB
fep->shell = dialog;
fep->general_form = form;
CONTEXT_DATA (context)->currentPrefDialog = dialog;
CONTEXT_DATA (fep->context)->fep = fep;
#if 0
fe_make_bookmarks_page (context, fep);
#endif
fe_make_styles1_page (context, fep);
fe_make_apps_page (context, fep);
/* Helpers */
/* Before making the helpers page see if we want to reload the
* mailcap and mimetype files if they changed on disk.
*/
{
XP_Bool needs_reload = FALSE;
/* Mimetypes file */
if (fe_globalData.privateMimetypeFileModifiedTime != 0 &&
fe_isFileExist(fe_globalPrefs.private_mime_types_file) &&
fe_isFileChanged(fe_globalPrefs.private_mime_types_file,
fe_globalData.privateMimetypeFileModifiedTime, NULL)) {
char *msg = PR_smprintf(XP_GetString(XFE_PRIVATE_RELOADED_MIMETYPE),
fe_globalPrefs.private_mime_types_file);
if (msg) {
fe_Alert_2(dialog, msg);
XP_FREE(msg);
}
needs_reload = TRUE;
}
/* The mailcap File */
if (fe_globalData.privateMailcapFileModifiedTime != 0 &&
fe_isFileExist(fe_globalPrefs.private_mailcap_file) &&
fe_isFileChanged(fe_globalPrefs.private_mailcap_file,
fe_globalData.privateMailcapFileModifiedTime, NULL)) {
char *msg = PR_smprintf(XP_GetString(XFE_PRIVATE_RELOADED_MAILCAP),
fe_globalPrefs.private_mailcap_file);
if (msg) {
fe_Alert_2(dialog, msg);
XP_FREE(msg);
}
needs_reload = TRUE;
}
if (needs_reload) {
NET_CleanupMailCapList(NULL);
NET_CleanupFileFormat(NULL);
fe_RegisterConverters();
}
}
fe_make_helpers_page (context, fep);
#ifdef notyet
fe_make_colors_page (context, fep);
#endif
fe_make_fonts_page (context, fep);
fe_make_images_page (context, fep);
#ifdef REQUEST_LANGUAGE
fe_make_languages_page (context, fep);
#endif
#define FROB(WHICH) { \
int save_page = current_general_page; \
current_general_page = xfe_PREFS_##WHICH; \
fe_general_reset_1 (fep, &fe_globalPrefs); \
current_general_page = save_page; \
}
FROB(STYLES)
#if 0
FROB(BOOKMARKS)
#endif
FROB(HELPERS)
FROB(APPS)
FROB(FONTS)
FROB(IMAGES)
#ifdef REQUEST_LANGUAGE
FROB(LANGUAGES)
#endif
#undef FROB
fe_general_verify_page (fep);
XtManageChild (form);
fe_NukeBackingStore (dialog);
XtManageChild (dialog);
XmLFolderSetActiveTab (form, current_general_page-xfe_GENERAL_OFFSET, True);
}
void
fe_MailNewsPrefsDialog (MWContext *context)
{
Widget mainw = CONTEXT_WIDGET (context);
Widget dialog, form, tmp;
XmString str;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Arg av [20];
int ac;
struct fe_prefs_data *fep = NULL;
fep = (struct fe_prefs_data *) malloc (sizeof (struct fe_prefs_data));
memset (fep, 0, sizeof (struct fe_prefs_data));
fep->context = context;
XtVaGetValues (mainw, XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
XtSetArg (av[ac], XmNallowShellResize, TRUE); ac++;
XtSetArg (av[ac], XmNtransientFor, mainw); ac++;
XtSetArg (av[ac], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); ac++;
XtSetArg (av[ac], XmNdialogType, XmDIALOG_QUESTION); ac++;
XtSetArg (av[ac], XmNdeleteResponse, XmDESTROY); ac++;
XtSetArg (av[ac], XmNautoUnmanage, False); ac++;
XtSetArg (av[ac], XmNnoResize, True); ac++;
dialog = XmCreatePromptDialog (mainw, "mailnews_prefs", av, ac);
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_SEPARATOR));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_TEXT));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog,
XmDIALOG_SELECTION_LABEL));
XtManageChild (XmSelectionBoxGetChild (dialog, XmDIALOG_APPLY_BUTTON));
#ifdef NO_HELP
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_HELP_BUTTON));
#endif
XtAddCallback (dialog, XmNokCallback, fe_mailnews_done_cb, fep);
XtAddCallback (dialog, XmNcancelCallback, fe_prefs_reset_cb, fep);
XtAddCallback (dialog, XmNapplyCallback, fe_prefs_cancel_cb, fep);
XtAddCallback (dialog, XmNdestroyCallback, fe_prefs_destroy_cb, fep);
form = XtVaCreateManagedWidget("form",
xmlFolderWidgetClass, dialog,
XmNshadowThickness, 2,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
#ifdef ALLOW_TAB_ROTATE
XmNtabPlacement, XmFOLDER_LEFT,
XmNrotateWhenLeftRight, FALSE,
#endif /* ALLOW_TAB_ROTATE */
XmNbottomOffset, 3,
XmNspacing, 1,
NULL);
#define ADD_TAB(VAR,STRING) \
str = XmStringCreateLocalized (STRING); \
tmp = XmLFolderAddTabForm (form, str); \
XmStringFree (str); \
fep->VAR = tmp
ADD_TAB(appearance_selector, XP_GetString( XFE_APPEARANCE ) );
ADD_TAB(compose_selector, XP_GetString( XFE_COMPOSE_DLG ) );
ADD_TAB(dirs_selector, XP_GetString( XFE_SERVERS ) );
ADD_TAB(identity_selector, XP_GetString( XFE_IDENTITY ) );
ADD_TAB(organization_selector,XP_GetString( XFE_ORGANIZATION ) );
#undef ADD_TAB
fep->shell = dialog;
fep->mailnews_form = form;
CONTEXT_DATA (context)->currentPrefDialog = dialog;
CONTEXT_DATA (fep->context)->fep = fep;
fe_make_appearance_page (context, fep);
fe_make_compose_page (context, fep);
fe_make_servers_page (context, fep);
fe_make_identity_page (context, fep);
fe_make_organization_page (context, fep);
#define FROB(WHICH) { \
int save_page = current_mailnews_page; \
current_mailnews_page = xfe_PREFS_##WHICH; \
fe_mailnews_reset_1 (fep, &fe_globalPrefs); \
current_mailnews_page = save_page; \
}
FROB(APPEARANCE)
FROB(COMPOSITION)
FROB(SERVERS)
FROB(IDENTITY)
FROB(ORGANIZATION)
#undef FROB
fe_mailnews_verify_page (fep);
XtManageChild (form);
fe_NukeBackingStore (dialog);
XtManageChild (dialog);
XmLFolderSetActiveTab (form, current_mailnews_page-xfe_MAILNEWS_OFFSET, True);
}
void
fe_NetworkPrefsDialog (MWContext *context)
{
Widget mainw = CONTEXT_WIDGET (context);
Widget dialog, form, tmp;
XmString str;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Arg av [20];
int ac;
struct fe_prefs_data *fep = NULL;
fep = (struct fe_prefs_data *) malloc (sizeof (struct fe_prefs_data));
memset (fep, 0, sizeof (struct fe_prefs_data));
fep->context = context;
XtVaGetValues (mainw, XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
XtSetArg (av[ac], XmNallowShellResize, TRUE); ac++;
XtSetArg (av[ac], XmNtransientFor, mainw); ac++;
XtSetArg (av[ac], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); ac++;
XtSetArg (av[ac], XmNdialogType, XmDIALOG_QUESTION); ac++;
XtSetArg (av[ac], XmNdeleteResponse, XmDESTROY); ac++;
XtSetArg (av[ac], XmNautoUnmanage, False); ac++;
XtSetArg (av[ac], XmNnoResize, True); ac++;
dialog = XmCreatePromptDialog (mainw, "network_prefs", av, ac);
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_SEPARATOR));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_TEXT));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog,
XmDIALOG_SELECTION_LABEL));
XtManageChild (XmSelectionBoxGetChild (dialog, XmDIALOG_APPLY_BUTTON));
#ifdef NO_HELP
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_HELP_BUTTON));
#endif
XtAddCallback (dialog, XmNokCallback, fe_network_done_cb, fep);
XtAddCallback (dialog, XmNcancelCallback, fe_prefs_reset_cb, fep);
XtAddCallback (dialog, XmNapplyCallback, fe_prefs_cancel_cb, fep);
XtAddCallback (dialog, XmNdestroyCallback, fe_prefs_destroy_cb, fep);
form = XtVaCreateManagedWidget("form",
xmlFolderWidgetClass, dialog,
XmNshadowThickness, 2,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
#ifdef ALLOW_TAB_ROTATE
XmNtabPlacement, XmFOLDER_LEFT,
XmNrotateWhenLeftRight, FALSE,
#endif /* ALLOW_TAB_ROTATE */
XmNbottomOffset, 3,
XmNspacing, 1,
NULL);
#define ADD_TAB(VAR,STRING) \
str = XmStringCreateLocalized (STRING); \
tmp = XmLFolderAddTabForm (form, str); \
XmStringFree (str); \
fep->VAR = tmp
ADD_TAB(cache_selector, XP_GetString( XFE_CACHE ) );
ADD_TAB(network_selector, XP_GetString( XFE_CONNECTIONS ) );
ADD_TAB(proxies_selector, XP_GetString( XFE_PROXIES ) );
ADD_TAB(protocols_selector, XP_GetString( XFE_PROTOCOLS ) );
ADD_TAB(lang_selector, XP_GetString( XFE_LANG ) );
#undef ADD_TAB
fep->shell = dialog;
fep->network_form = form;
CONTEXT_DATA (context)->currentPrefDialog = dialog;
CONTEXT_DATA (fep->context)->fep = fep;
fe_make_cache_page (context, fep);
fe_make_network_page (context, fep);
fe_make_proxies_page (context, fep);
fe_make_protocols_page (context, fep);
fe_make_lang_page (context, fep);
#define FROB(WHICH) { \
int save_page = current_network_page; \
current_network_page = xfe_PREFS_##WHICH; \
fe_network_reset_1 (fep, &fe_globalPrefs); \
current_network_page = save_page; \
}
FROB(CACHE)
FROB(NETWORK)
FROB(PROXIES)
FROB(PROTOCOLS)
FROB(LANG)
#undef FROB
fe_network_verify_page (fep);
XtManageChild (form);
fe_NukeBackingStore (dialog);
XtManageChild (dialog);
XmLFolderSetActiveTab (form, current_network_page-xfe_NETWORK_OFFSET, True);
}
void
fe_SecurityPrefsDialog (MWContext *context)
{
#ifdef DUPLICATE_SEC_PREFS
Widget mainw = CONTEXT_WIDGET (context);
Widget dialog, form, tmp;
XmString str;
Visual *v = 0;
Colormap cmap = 0;
Cardinal depth = 0;
Arg av [20];
int ac;
struct fe_prefs_data *fep = NULL;
fep = (struct fe_prefs_data *) malloc (sizeof (struct fe_prefs_data));
memset (fep, 0, sizeof (struct fe_prefs_data));
fep->context = context;
XtVaGetValues (mainw, XtNvisual, &v, XtNcolormap, &cmap,
XtNdepth, &depth, 0);
ac = 0;
XtSetArg (av[ac], XmNvisual, v); ac++;
XtSetArg (av[ac], XmNdepth, depth); ac++;
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
XtSetArg (av[ac], XmNallowShellResize, TRUE); ac++;
XtSetArg (av[ac], XmNtransientFor, mainw); ac++;
XtSetArg (av[ac], XmNdialogStyle, XmDIALOG_FULL_APPLICATION_MODAL); ac++;
XtSetArg (av[ac], XmNdialogType, XmDIALOG_QUESTION); ac++;
XtSetArg (av[ac], XmNdeleteResponse, XmDESTROY); ac++;
XtSetArg (av[ac], XmNautoUnmanage, False); ac++;
XtSetArg (av[ac], XmNnoResize, True); ac++;
dialog = XmCreatePromptDialog (mainw, "security_prefs", av, ac);
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_SEPARATOR));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_TEXT));
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog,
XmDIALOG_SELECTION_LABEL));
XtManageChild (XmSelectionBoxGetChild (dialog, XmDIALOG_APPLY_BUTTON));
#ifdef NO_HELP
fe_UnmanageChild_safe (XmSelectionBoxGetChild (dialog, XmDIALOG_HELP_BUTTON));
#endif
#ifdef DUPLICATE_SEC_PREFS
XtAddCallback (dialog, XmNokCallback, fe_security_done_cb, fep);
#endif /* DUPLICATE_SEC_PREFS */
XtAddCallback (dialog, XmNcancelCallback, fe_prefs_reset_cb, fep);
XtAddCallback (dialog, XmNapplyCallback, fe_prefs_cancel_cb, fep);
XtAddCallback (dialog, XmNdestroyCallback, fe_prefs_destroy_cb, fep);
form = XtVaCreateManagedWidget("form",
xmlFolderWidgetClass, dialog,
XmNshadowThickness, 2,
XmNtopAttachment, XmATTACH_FORM,
XmNleftAttachment, XmATTACH_FORM,
XmNrightAttachment, XmATTACH_FORM,
XmNbottomAttachment, XmATTACH_FORM,
#ifdef ALLOW_TAB_ROTATE
XmNtabPlacement, XmFOLDER_LEFT,
XmNrotateWhenLeftRight, FALSE,
#endif /* ALLOW_TAB_ROTATE */
XmNbottomOffset, 3,
XmNspacing, 1,
NULL);
#define ADD_TAB(VAR,STRING) \
str = XmStringCreateLocalized (STRING); \
tmp = XmLFolderAddTabForm (form, str); \
XmStringFree (str); \
fep->VAR = tmp
ADD_TAB(sec_general_selector, XP_GetString( XFE_GENERAL ) );
ADD_TAB(sec_passwords_selector, XP_GetString( XFE_PASSWORDS));
ADD_TAB(personal_selector, XP_GetString( XFE_PERSONAL_CERTIFICATES));
ADD_TAB(site_selector, XP_GetString( XFE_SITE_CERTIFICATES));
#undef ADD_TAB
fep->shell = dialog;
fep->security_form = form;
CONTEXT_DATA (context)->currentPrefDialog = dialog;
CONTEXT_DATA (fep->context)->fep = fep;
fe_make_sec_general_page (context, fep);
fe_make_sec_passwords_page (context, fep);
fe_make_personal_page (context, fep);
fe_make_site_cert_page (context, fep);
#define FROB(WHICH) { \
int save_page = current_security_page; \
current_security_page = xfe_PREFS_##WHICH; \
fe_security_reset_1 (fep, &fe_globalPrefs); \
current_security_page = save_page; \
}
FROB(SEC_GENERAL)
FROB(SEC_PASSWORDS)
FROB(SEC_PERSONAL)
FROB(SEC_SITE)
#undef FROB
fe_security_verify_page (fep);
XtManageChild (form);
fe_NukeBackingStore (dialog);
XtManageChild (dialog);
XmLFolderSetActiveTab (form, current_security_page-xfe_SECURITY_OFFSET, True);
#else /* !DUPLICATE_SEC_PREFS */
fe_GetURL(context,
NET_CreateURLStruct("about:security?advisor", NET_DONT_RELOAD),
FALSE);
#endif /* !DUPLICATE_SEC_PREFS */
}
void
fe_VerifyDiskCache (MWContext *context)
{
#ifdef PREFS_DISK_CACHE
struct stat st;
char file [1024];
char message [4000];
static Boolean done = False;
if (done) return;
done = True;
if (fe_globalPrefs.disk_cache_size <= 0)
return;
strcpy (file, fe_globalPrefs.cache_dir);
if (file [strlen (file) - 1] == '/')
file [strlen (file) - 1] = 0;
if (stat (file, &st))
{
/* Doesn't exist - try to create it. */
if (mkdir (file, 0700))
{
/* Failed. */
#ifdef DEBUG_jwz /* this is the modern way */
char *error = 0;
if (errno >= 0)
error = strerror (errno);
if (!error || !*error)
error = XP_GetString( XFE_UNKNOWN_ERROR );
#else /* !DEBUG_jwz */
char *error = ((errno >= 0 && errno < sys_nerr)
? sys_errlist [errno]
: XP_GetString( XFE_UNKNOWN_ERROR));
#endif /* !DEBUG_jwz */
PR_snprintf (message, sizeof (message),
fe_globalData.create_cache_dir_message,
file, error);
}
else
{
/* Suceeded. */
PR_snprintf (message, sizeof (message),
fe_globalData.created_cache_dir_message, file);
}
}
else if (! (st.st_mode & S_IFDIR))
{
/* Exists but isn't a directory. */
PR_snprintf (message, sizeof (message),
fe_globalData.cache_not_dir_message, file);
}
else
{
/* The disk cache is ok! */
*message = 0;
}
if (*message)
{
PR_snprintf(message + strlen (message), sizeof (message),
fe_globalData.cache_suffix_message,
fe_globalPrefs.disk_cache_size, fe_progclass);
FE_Alert (context, message);
}
#endif /* PREFS_DISK_CACHE */
}