home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / cmd / xfe / src / PrefsProxiesView.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  23.8 KB  |  742 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18. /* 
  19.    PrefsProxiesView.cpp -- The view dialog for proxies preference
  20.    Created: Linda Wei <lwei@netscape.com>, 24-Oct-96.
  21.  */
  22.  
  23.  
  24.  
  25. #include "felocale.h"
  26. #include "structs.h"
  27. #include "fonts.h"
  28. #include "xpassert.h"
  29. #include "xfe.h"
  30. #include "prprf.h"
  31. extern "C" {
  32. #include "prnetdb.h"
  33. }
  34. #include "PrefsDialog.h"
  35. #include "PrefsProxiesView.h"
  36. #include "prefapi.h"
  37.  
  38. #include <Xm/Label.h>
  39. #include <Xm/LabelG.h>
  40. #include <Xm/PushB.h>
  41. #include <Xm/PushBG.h>
  42. #include <Xm/Form.h>
  43. #include <Xm/TextF.h> 
  44. #include <Xm/ToggleBG.h> 
  45. #include <Xfe/Xfe.h>
  46.  
  47. extern int XFE_WARNING;
  48. extern int XFE_HOST_IS_UNKNOWN;
  49. extern int XFE_FTP_PROXY_HOST;
  50. extern int XFE_NO_PORT_NUMBER;
  51. extern int XFE_GOPHER_PROXY_HOST;
  52. extern int XFE_HTTP_PROXY_HOST;
  53. extern int XFE_HTTPS_PROXY_HOST;
  54. extern int XFE_WAIS_PROXY_HOST;
  55. extern int XFE_SOCKS_HOST;
  56. extern int XFE_ERROR_SAVING_OPTIONS;
  57.  
  58. extern "C"
  59. {
  60.     char     *XP_GetString(int i);
  61.     void      fe_installProxiesView();
  62. }
  63.  
  64. // ==================== Public Member Functions ====================
  65.  
  66. // Member:       XFE_PrefsProxiesViewDialog
  67. // Description:  Constructor
  68. // Inputs:
  69. // Side effects: Creates the View dialog for Proxies Preferences
  70.  
  71. XFE_PrefsProxiesViewDialog::XFE_PrefsProxiesViewDialog(XFE_PrefsDialog *prefsDialog, // prefs dialog
  72.                                                        Widget     parent,      // dialog parent
  73.                                                        char      *name,        // dialog name
  74.                                                        Boolean    modal)       // modal dialog?
  75.     : XFE_Dialog(parent, 
  76.                  name,
  77.                  TRUE,     // ok
  78.                  TRUE,     // cancel
  79.                  FALSE,    // help
  80.                  FALSE,    // apply
  81.                  FALSE,    // separator
  82.                  modal     // modal
  83.                  ),
  84.       m_prefsDialog(prefsDialog),
  85.       m_prefsDataProxiesView(0)
  86. {
  87.     PrefsDataProxiesView *fep = NULL;
  88.  
  89.     fep = new PrefsDataProxiesView;
  90.     memset(fep, 0, sizeof(PrefsDataProxiesView));
  91.     m_prefsDataProxiesView = fep;
  92.     
  93.     Widget     form;
  94.     Widget     kids[100];
  95.     Arg        av[50];
  96.     int        ac;
  97.     int        i;
  98.  
  99.     form = XtVaCreateWidget("form", xmFormWidgetClass, m_chrome,
  100.                             XmNmarginWidth, 8,
  101.                             XmNtopAttachment, XmATTACH_FORM,
  102.                             XmNleftAttachment, XmATTACH_FORM,
  103.                             XmNrightAttachment, XmATTACH_FORM,
  104.                             XmNbottomAttachment, XmATTACH_FORM,
  105.                             NULL);
  106.     XtManageChild (form);
  107.  
  108.     Widget     ftp_proxy_label;
  109.     Widget     ftp_proxy_text;
  110.     Widget     ftp_port_label;
  111.     Widget     ftp_port_text;
  112.     Widget     gopher_proxy_label;
  113.     Widget     gopher_proxy_text;
  114.     Widget     gopher_port_label;
  115.     Widget     gopher_port_text;
  116.     Widget     http_proxy_label;
  117.     Widget     http_proxy_text;
  118.     Widget     http_port_label;
  119.     Widget     http_port_text;
  120.     Widget     https_proxy_label;
  121.     Widget     https_proxy_text;
  122.     Widget     https_port_label;
  123.     Widget     https_port_text;
  124.     Widget     wais_proxy_label;
  125.     Widget     wais_proxy_text;
  126.     Widget     wais_port_label;
  127.     Widget     wais_port_text;
  128.     Widget     no_proxy_label;
  129.     Widget     no_proxy_text;
  130.     Widget     socks_host_label;
  131.     Widget     socks_host_text;
  132.     Widget     socks_port_label;
  133.     Widget     socks_port_text;
  134.     Widget     label1;
  135.     Widget     label2;
  136.  
  137.     ac = 0;
  138.     i = 0;
  139.  
  140.     kids[i++] = label1 = 
  141.         XmCreateLabelGadget(form, "proxyViewLabel1", av, ac);
  142.     kids[i++] = label2 = 
  143.         XmCreateLabelGadget(form, "proxyViewLabel2", av, ac);
  144.  
  145.     kids[i++] = ftp_proxy_label = 
  146.         XmCreateLabelGadget(form, "ftpProxyLabel", av, ac);
  147.     kids[i++] = gopher_proxy_label = 
  148.         XmCreateLabelGadget(form, "gopherProxyLabel", av, ac);
  149.     kids[i++] = http_proxy_label = 
  150.         XmCreateLabelGadget(form, "httpProxyLabel", av, ac);
  151.     kids[i++] = https_proxy_label = 
  152.         XmCreateLabelGadget(form, "httpsProxyLabel", av, ac);
  153.     kids[i++] = wais_proxy_label = 
  154.         XmCreateLabelGadget(form, "waisProxyLabel", av, ac);
  155.     kids[i++] = no_proxy_label = 
  156.         XmCreateLabelGadget(form, "noProxyLabel", av, ac);
  157.     kids[i++] = socks_host_label = 
  158.         XmCreateLabelGadget(form, "socksHostLabel", av, ac);
  159.  
  160.     kids[i++] = ftp_port_label = 
  161.         XmCreateLabelGadget(form, "ftpPortLabel", av, ac);
  162.     kids[i++] = gopher_port_label = 
  163.         XmCreateLabelGadget(form, "gopherPortLabel", av, ac);
  164.     kids[i++] = http_port_label = 
  165.         XmCreateLabelGadget(form, "httpPortLabel", av, ac);
  166.     kids[i++] = https_port_label = 
  167.         XmCreateLabelGadget(form, "httpsPortLabel", av, ac);
  168.     kids[i++] = wais_port_label = 
  169.         XmCreateLabelGadget(form, "waisPortLabel", av, ac);
  170.     kids[i++] = socks_port_label = 
  171.         XmCreateLabelGadget(form, "socksPortLabel", av, ac);
  172.  
  173.     kids[i++] = ftp_proxy_text = 
  174.         fe_CreateTextField(form, "ftpProxyText", av, ac);
  175.     kids[i++] = gopher_proxy_text = 
  176.         fe_CreateTextField(form, "gopherProxyText", av, ac);
  177.     kids[i++] = http_proxy_text = 
  178.         fe_CreateTextField(form, "httpProxyText", av, ac);
  179.     kids[i++] = https_proxy_text = 
  180.         fe_CreateTextField(form, "httpsProxyText", av, ac);
  181.     kids[i++] = wais_proxy_text = 
  182.         fe_CreateTextField(form, "waisProxyText", av, ac);
  183.     kids[i++] = no_proxy_text = 
  184.         fe_CreateTextField(form, "noProxyText", av, ac);
  185.     kids[i++] = socks_host_text = 
  186.         fe_CreateTextField(form, "socksHostText", av, ac);
  187.  
  188.     kids[i++] = ftp_port_text = 
  189.         fe_CreateTextField(form, "ftpPortText", av, ac);
  190.     kids[i++] = gopher_port_text = 
  191.         fe_CreateTextField(form, "gopherPortText", av, ac);
  192.     kids[i++] = http_port_text = 
  193.         fe_CreateTextField(form, "httpPortText", av, ac);
  194.     kids[i++] = https_port_text = 
  195.         fe_CreateTextField(form, "httpsPortText", av, ac);
  196.     kids[i++] = wais_port_text = 
  197.         fe_CreateTextField(form, "waisPortText", av, ac);
  198.     kids[i++] = socks_port_text = 
  199.         fe_CreateTextField(form, "socksPortText", av, ac);
  200.  
  201.     
  202.     int labels_width;
  203.     labels_width = XfeVaGetWidestWidget(ftp_proxy_label,
  204.                                         gopher_proxy_label,
  205.                                         http_proxy_label,
  206.                                         https_proxy_label,
  207.                                         wais_proxy_label,
  208.                                         no_proxy_label,
  209.                                         socks_host_label,
  210.                                         NULL);
  211.     Dimension margin_width;
  212.     XtVaGetValues(form, 
  213.                   XmNmarginWidth, &margin_width,
  214.                   NULL);
  215.     labels_width+= margin_width;
  216.  
  217.     int labels_height;
  218.     labels_height = XfeVaGetTallestWidget(ftp_proxy_label,
  219.                                           ftp_proxy_text,
  220.                                           NULL);
  221.  
  222.     XtVaSetValues(label1,
  223.                   XmNalignment, XmALIGNMENT_BEGINNING,
  224.                   XmNtopAttachment, XmATTACH_FORM,
  225.                   XmNleftAttachment, XmATTACH_FORM,
  226.                   XmNbottomAttachment, XmATTACH_NONE,
  227.                   XmNrightAttachment, XmATTACH_NONE,
  228.                   NULL);
  229.     XtVaSetValues(ftp_proxy_label,
  230.                   XmNheight, labels_height,
  231.                   RIGHT_JUSTIFY_VA_ARGS(ftp_proxy_label,labels_width),
  232.                   XmNtopAttachment, XmATTACH_WIDGET,
  233.                   XmNtopWidget, label1,
  234.                   XmNbottomAttachment, XmATTACH_NONE,
  235.                   NULL);
  236.     XtVaSetValues(gopher_proxy_label,
  237.                   XmNheight, labels_height,
  238.                   RIGHT_JUSTIFY_VA_ARGS(gopher_proxy_label,labels_width),
  239.                   XmNtopAttachment, XmATTACH_WIDGET,
  240.                   XmNtopWidget, ftp_proxy_label,
  241.                   XmNbottomAttachment, XmATTACH_NONE,
  242.                   NULL);
  243.     XtVaSetValues(http_proxy_label,
  244.                   XmNheight, labels_height,
  245.                   RIGHT_JUSTIFY_VA_ARGS(http_proxy_label,labels_width),
  246.                   XmNtopAttachment, XmATTACH_WIDGET,
  247.                   XmNtopWidget, gopher_proxy_label,
  248.                   XmNbottomAttachment, XmATTACH_NONE,
  249.                   NULL);
  250.     XtVaSetValues(https_proxy_label,
  251.                   XmNheight, labels_height,
  252.                   RIGHT_JUSTIFY_VA_ARGS(https_proxy_label,labels_width),
  253.                   XmNtopAttachment, XmATTACH_WIDGET,
  254.                   XmNtopWidget, http_proxy_label,
  255.                   XmNbottomAttachment, XmATTACH_NONE,
  256.                   NULL);
  257.     XtVaSetValues(wais_proxy_label,
  258.                   XmNheight, labels_height,
  259.                   RIGHT_JUSTIFY_VA_ARGS(wais_proxy_label,labels_width),
  260.                   XmNtopAttachment, XmATTACH_WIDGET,
  261.                   XmNtopWidget, https_proxy_label,
  262.                   XmNbottomAttachment, XmATTACH_NONE,
  263.                   NULL);
  264.     XtVaSetValues(label2,
  265.                   XmNalignment, XmALIGNMENT_BEGINNING,
  266.                   XmNtopAttachment, XmATTACH_WIDGET,
  267.                   XmNtopWidget, wais_proxy_label,
  268.                   XmNtopOffset, 8,
  269.                   XmNleftAttachment, XmATTACH_FORM,
  270.                   XmNbottomAttachment, XmATTACH_NONE,
  271.                   XmNrightAttachment, XmATTACH_NONE,
  272.                   NULL);
  273.     XtVaSetValues(no_proxy_label,
  274.                   XmNheight, labels_height,
  275.                   RIGHT_JUSTIFY_VA_ARGS(no_proxy_label,labels_width),
  276.                   XmNtopAttachment, XmATTACH_WIDGET,
  277.                   XmNtopWidget, label2,
  278.                   XmNbottomAttachment, XmATTACH_NONE,
  279.                   NULL);
  280.     XtVaSetValues(socks_host_label,
  281.                   XmNheight, labels_height,
  282.                   RIGHT_JUSTIFY_VA_ARGS(socks_host_label,labels_width),
  283.                   XmNtopAttachment, XmATTACH_WIDGET,
  284.                   XmNtopWidget, no_proxy_label,
  285.                   XmNtopOffset, 8,
  286.                   XmNbottomAttachment, XmATTACH_NONE,
  287.                   NULL);
  288.     XtVaSetValues(ftp_proxy_text,
  289.                   XmNcolumns, 20,
  290.                   XmNheight, labels_height,
  291.                   XmNleftAttachment, XmATTACH_FORM,
  292.                   XmNleftOffset, labels_width,
  293.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  294.                   XmNtopWidget, ftp_proxy_label,
  295.                   XmNbottomAttachment, XmATTACH_NONE,
  296.                   NULL);
  297.     XtVaSetValues(gopher_proxy_text,
  298.                   XmNcolumns, 20,
  299.                   XmNheight, labels_height,
  300.                   XmNleftAttachment, XmATTACH_FORM,
  301.                   XmNleftOffset, labels_width,
  302.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  303.                   XmNtopWidget, gopher_proxy_label,
  304.                   XmNbottomAttachment, XmATTACH_NONE,
  305.                   NULL);
  306.     XtVaSetValues(http_proxy_text,
  307.                   XmNcolumns, 20,
  308.                   XmNheight, labels_height,
  309.                   XmNleftAttachment, XmATTACH_FORM,
  310.                   XmNleftOffset, labels_width,
  311.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  312.                   XmNtopWidget, http_proxy_label,
  313.                   XmNbottomAttachment, XmATTACH_NONE,
  314.                   NULL);
  315.     XtVaSetValues(https_proxy_text,
  316.                   XmNcolumns, 20,
  317.                   XmNheight, labels_height,
  318.                   XmNleftAttachment, XmATTACH_FORM,
  319.                   XmNleftOffset, labels_width,
  320.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  321.                   XmNtopWidget, https_proxy_label,
  322.                   XmNbottomAttachment, XmATTACH_NONE,
  323.                   NULL);
  324.     XtVaSetValues(wais_proxy_text,
  325.                   XmNcolumns, 20,
  326.                   XmNheight, labels_height,
  327.                   XmNleftAttachment, XmATTACH_FORM,
  328.                   XmNleftOffset, labels_width,
  329.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  330.                   XmNtopWidget, wais_proxy_label,
  331.                   XmNbottomAttachment, XmATTACH_NONE,
  332.                   NULL);
  333.     XtVaSetValues(no_proxy_text,
  334.                   XmNcolumns, 20,
  335.                   XmNheight, labels_height,
  336.                   XmNleftAttachment, XmATTACH_FORM,
  337.                   XmNleftOffset, labels_width,
  338.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  339.                   XmNtopWidget, no_proxy_label,
  340.                   XmNbottomAttachment, XmATTACH_NONE,
  341.                   NULL);
  342.     XtVaSetValues(socks_host_text,
  343.                   XmNcolumns, 20,
  344.                   XmNheight, labels_height,
  345.                   XmNleftAttachment, XmATTACH_FORM,
  346.                   XmNleftOffset, labels_width,
  347.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  348.                   XmNtopWidget, socks_host_label,
  349.                   XmNbottomAttachment, XmATTACH_NONE,
  350.                   NULL);
  351.     XtVaSetValues(ftp_port_label,
  352.                   XmNheight, labels_height,
  353.                   XmNleftAttachment, XmATTACH_WIDGET,
  354.                   XmNleftWidget, ftp_proxy_text,
  355.                   XmNleftOffset, 10,
  356.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  357.                   XmNtopWidget, ftp_proxy_text,
  358.                   XmNbottomAttachment, XmATTACH_NONE,
  359.                   NULL);
  360.     XtVaSetValues(gopher_port_label,
  361.                   XmNheight, labels_height,
  362.                   XmNleftAttachment, XmATTACH_WIDGET,
  363.                   XmNleftWidget, gopher_proxy_text,
  364.                   XmNleftOffset, 10,
  365.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  366.                   XmNtopWidget, gopher_proxy_text,
  367.                   XmNbottomAttachment, XmATTACH_NONE,
  368.                   NULL);
  369.     XtVaSetValues(http_port_label,
  370.                   XmNheight, labels_height,
  371.                   XmNleftAttachment, XmATTACH_WIDGET,
  372.                   XmNleftWidget, http_proxy_text,
  373.                   XmNleftOffset, 10,
  374.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  375.                   XmNtopWidget, http_proxy_text,
  376.                   XmNbottomAttachment, XmATTACH_NONE,
  377.                   NULL);
  378.     XtVaSetValues(https_port_label,
  379.                   XmNheight, labels_height,
  380.                   XmNleftAttachment, XmATTACH_WIDGET,
  381.                   XmNleftWidget, https_proxy_text,
  382.                   XmNleftOffset, 10,
  383.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  384.                   XmNtopWidget, https_proxy_text,
  385.                   XmNbottomAttachment, XmATTACH_NONE,
  386.                   NULL);
  387.     XtVaSetValues(wais_port_label,
  388.                   XmNheight, labels_height,
  389.                   XmNleftAttachment, XmATTACH_WIDGET,
  390.                   XmNleftWidget, wais_proxy_text,
  391.                   XmNleftOffset, 10,
  392.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  393.                   XmNtopWidget, wais_proxy_text,
  394.                   XmNbottomAttachment, XmATTACH_NONE,
  395.                   NULL);
  396.     XtVaSetValues(socks_port_label,
  397.                   XmNheight, labels_height,
  398.                   XmNleftAttachment, XmATTACH_WIDGET,
  399.                   XmNleftWidget, socks_host_text,
  400.                   XmNleftOffset, 10,
  401.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  402.                   XmNtopWidget, socks_host_text,
  403.                   XmNbottomAttachment, XmATTACH_NONE,
  404.                   NULL);
  405.     XtVaSetValues(ftp_port_text,
  406.                   XmNcolumns, 5,
  407.                   XmNheight, labels_height,
  408.                   XmNleftAttachment, XmATTACH_WIDGET,
  409.                   XmNleftWidget, ftp_port_label,
  410.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  411.                   XmNtopWidget, ftp_port_label,
  412.                   XmNbottomAttachment, XmATTACH_NONE,
  413.                   NULL);
  414.     XtVaSetValues(gopher_port_text,
  415.                   XmNcolumns, 5,
  416.                   XmNheight, labels_height,
  417.                   XmNleftAttachment, XmATTACH_WIDGET,
  418.                   XmNleftWidget, gopher_port_label,
  419.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  420.                   XmNtopWidget, gopher_port_label,
  421.                   XmNbottomAttachment, XmATTACH_NONE,
  422.                   NULL);
  423.     XtVaSetValues(http_port_text,
  424.                   XmNcolumns, 5,
  425.                   XmNheight, labels_height,
  426.                   XmNleftAttachment, XmATTACH_WIDGET,
  427.                   XmNleftWidget, http_port_label,
  428.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  429.                   XmNtopWidget, http_port_label,
  430.                   XmNbottomAttachment, XmATTACH_NONE,
  431.                   NULL);
  432.     XtVaSetValues(https_port_text,
  433.                   XmNcolumns, 5,
  434.                   XmNheight, labels_height,
  435.                   XmNleftAttachment, XmATTACH_WIDGET,
  436.                   XmNleftWidget, https_port_label,
  437.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  438.                   XmNtopWidget, https_port_label,
  439.                   XmNbottomAttachment, XmATTACH_NONE,
  440.                   NULL);
  441.     XtVaSetValues(wais_port_text,
  442.                   XmNcolumns, 5,
  443.                   XmNheight, labels_height,
  444.                   XmNleftAttachment, XmATTACH_WIDGET,
  445.                   XmNleftWidget, wais_port_label,
  446.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  447.                   XmNtopWidget, wais_port_label,
  448.                   XmNbottomAttachment, XmATTACH_NONE,
  449.                   NULL);
  450.     XtVaSetValues(socks_port_text,
  451.                   XmNcolumns, 5,
  452.                   XmNheight, labels_height,
  453.                   XmNleftAttachment, XmATTACH_WIDGET,
  454.                   XmNleftWidget, socks_port_label,
  455.                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
  456.                   XmNtopWidget, socks_port_label,
  457.                   XmNbottomAttachment, XmATTACH_NONE,
  458.                   NULL);
  459.  
  460.     if (fe_globalData.nonterminal_text_translations) {
  461.         XtOverrideTranslations (ftp_proxy_text,
  462.                                 fe_globalData.nonterminal_text_translations);
  463.         XtOverrideTranslations (ftp_port_text,
  464.                                 fe_globalData.nonterminal_text_translations);
  465.         XtOverrideTranslations (gopher_proxy_text,
  466.                                 fe_globalData.nonterminal_text_translations);
  467.         XtOverrideTranslations (gopher_port_text,
  468.                                 fe_globalData.nonterminal_text_translations);
  469.         XtOverrideTranslations (http_proxy_text,
  470.                                 fe_globalData.nonterminal_text_translations);
  471.         XtOverrideTranslations (http_port_text,
  472.                                 fe_globalData.nonterminal_text_translations);
  473.         XtOverrideTranslations (https_proxy_text,
  474.                                 fe_globalData.nonterminal_text_translations);
  475.         XtOverrideTranslations (https_port_text,
  476.                                 fe_globalData.nonterminal_text_translations);
  477.         XtOverrideTranslations (wais_proxy_text,
  478.                                 fe_globalData.nonterminal_text_translations);
  479.         XtOverrideTranslations (wais_port_text,
  480.                                 fe_globalData.nonterminal_text_translations);
  481.         XtOverrideTranslations (no_proxy_text,
  482.                                 fe_globalData.nonterminal_text_translations);
  483.         XtOverrideTranslations (socks_host_text,
  484.                                 fe_globalData.nonterminal_text_translations);
  485.         XtOverrideTranslations (socks_port_text,
  486.                                 fe_globalData.nonterminal_text_translations);
  487.     }
  488.  
  489.     fep->ftp_proxy_text = ftp_proxy_text;
  490.     fep->ftp_port_text = ftp_port_text;
  491.     fep->gopher_proxy_text = gopher_proxy_text;
  492.     fep->gopher_port_text = gopher_port_text;
  493.     fep->http_proxy_text = http_proxy_text;
  494.     fep->http_port_text = http_port_text;
  495.     fep->https_proxy_text = https_proxy_text;
  496.     fep->https_port_text = https_port_text;
  497.     fep->wais_proxy_text = wais_proxy_text;
  498.     fep->wais_port_text = wais_port_text;
  499.     fep->no_proxy_text = no_proxy_text;
  500.     fep->socks_host_text = socks_host_text;
  501.     fep->socks_port_text = socks_port_text;
  502.  
  503.     // Add callbacks
  504.  
  505.     XtAddCallback(m_chrome, XmNokCallback, prefsProxiesViewCb_ok, this);
  506.     XtAddCallback(m_chrome, XmNcancelCallback, prefsProxiesViewCb_cancel, this);
  507.  
  508.     XtManageChildren(kids, i);
  509. }
  510.  
  511. // Member:       ~XFE_PrefsProxiesViewDialog
  512. // Description:  Destructor
  513. // Inputs:
  514. // Side effects: 
  515.  
  516. XFE_PrefsProxiesViewDialog::~XFE_PrefsProxiesViewDialog()
  517. {
  518.     // Clean up
  519.  
  520.     delete m_prefsDataProxiesView;
  521. }
  522.  
  523. // Member:       show
  524. // Description:  Pop up dialog
  525. // Inputs:
  526. // Side effects: 
  527.  
  528. void XFE_PrefsProxiesViewDialog::show()
  529. {
  530.     // TODO: Initialize the dialog
  531.  
  532.     // Manage the top level
  533.  
  534.     XFE_Dialog::show();
  535.  
  536.     // Set focus to the OK button
  537.  
  538.     XmProcessTraversal(m_okButton, XmTRAVERSE_CURRENT);
  539. }
  540.  
  541. // Member:       initPage
  542. // Description:  Initializes page for GeneralProxiesView
  543. // Inputs:
  544. // Side effects: 
  545.  
  546. void XFE_PrefsProxiesViewDialog::initPage()
  547. {
  548.     XP_ASSERT(m_prefsDataProxiesView);
  549.  
  550.     PrefsDataProxiesView  *fep = m_prefsDataProxiesView;
  551.     XFE_GlobalPrefs       *prefs = &fe_globalPrefs;
  552.     char buf[1024];
  553.     char* host;
  554.     int port;
  555.  
  556. #define FROB(SLOT,SUFFIX,DEF)                               \
  557.     host = prefs->SLOT##_##SUFFIX;                          \
  558.     port = prefs->SLOT##_##SUFFIX##_port;                   \
  559.     if ( port == 0 ) {                                      \
  560.         strcpy(buf, DEF);                                   \
  561.     } else {                                                \
  562.         sprintf(buf, "%d", port);                           \
  563.     }                                                       \
  564.     fe_SetTextField(fep->SLOT##_##SUFFIX##_text, host); \
  565.     fe_SetTextField(fep->SLOT##_port_text, buf)
  566.  
  567.     FROB(ftp,      proxy, "");
  568.     FROB(gopher,   proxy, "");
  569.     FROB(http,     proxy, "");
  570. #ifndef NO_SECURITY
  571.     FROB(https,    proxy, "");
  572. #endif
  573.     FROB(wais,     proxy, "");
  574.     FROB(socks,    host,  "1080");
  575. #undef FROB
  576.     
  577.     XtSetSensitive(fep->ftp_proxy_text, !PREF_PrefIsLocked("network.proxy.ftp"));
  578.     XtSetSensitive(fep->ftp_port_text, !PREF_PrefIsLocked("network.proxy.ftp_port"));
  579.     XtSetSensitive(fep->gopher_proxy_text, !PREF_PrefIsLocked("network.proxy.gopher"));
  580.     XtSetSensitive(fep->gopher_port_text, !PREF_PrefIsLocked("network.proxy.gopher_port"));
  581.     XtSetSensitive(fep->http_proxy_text, !PREF_PrefIsLocked("network.proxy.http"));
  582.     XtSetSensitive(fep->http_port_text, !PREF_PrefIsLocked("network.proxy.http_port"));
  583.     XtSetSensitive(fep->https_proxy_text, !PREF_PrefIsLocked("network.proxy.ssl"));
  584.     XtSetSensitive(fep->https_port_text, !PREF_PrefIsLocked("network.proxy.ssl_port"));
  585.     XtSetSensitive(fep->wais_proxy_text, !PREF_PrefIsLocked("network.proxy.wais"));
  586.     XtSetSensitive(fep->wais_port_text, !PREF_PrefIsLocked("network.proxy.wais_port"));
  587.     XtSetSensitive(fep->no_proxy_text, !PREF_PrefIsLocked("network.proxy.no_proxies_on"));
  588.     XtSetSensitive(fep->socks_host_text, !PREF_PrefIsLocked("network.hosts.socks_server"));
  589.     XtSetSensitive(fep->socks_port_text, !PREF_PrefIsLocked("network.hosts.socks_serverport"));
  590.  
  591.     fe_SetTextField(fep->no_proxy_text, prefs->no_proxy);
  592. }
  593.  
  594. // Member:       verifyPage
  595. // Description:  verify page for GeneralProxiesView
  596. // Inputs:
  597. // Side effects: 
  598.  
  599. Boolean XFE_PrefsProxiesViewDialog::verifyPage()
  600. {
  601.     char         buf[10000];
  602.     char        *buf2;
  603.     char        *warning;
  604.     int          size;
  605.  
  606.     buf2 = buf;
  607.     strcpy (buf, XP_GetString(XFE_WARNING));
  608.     buf2 = buf + strlen (buf);
  609.     warning = buf2;
  610.     size = buf + sizeof (buf) - warning;
  611.  
  612.     XP_ASSERT(m_prefsDataProxiesView);
  613.     PrefsDataProxiesView  *fep = m_prefsDataProxiesView;
  614.  
  615.     PREFS_CHECK_PROXY (fep->ftp_proxy_text,   fep->ftp_port_text,
  616.                        XP_GetString(XFE_FTP_PROXY_HOST),  
  617.                        True, warning, size);
  618.     PREFS_CHECK_PROXY (fep->gopher_proxy_text,fep->gopher_port_text,
  619.                        XP_GetString(XFE_GOPHER_PROXY_HOST),
  620.                        True, warning, size);
  621.     PREFS_CHECK_PROXY (fep->http_proxy_text,  fep->http_port_text,
  622.                        XP_GetString(XFE_HTTP_PROXY_HOST),  
  623.                        True, warning, size);
  624.     PREFS_CHECK_PROXY (fep->https_proxy_text, fep->https_port_text,
  625.                        XP_GetString(XFE_HTTPS_PROXY_HOST), 
  626.                        True, warning, size);
  627.     PREFS_CHECK_PROXY (fep->wais_proxy_text,   fep->wais_port_text,
  628.                        XP_GetString(XFE_WAIS_PROXY_HOST),  
  629.                        True, warning, size);
  630.     PREFS_CHECK_PROXY (fep->socks_host_text,  fep->socks_port_text,
  631.                        XP_GetString(XFE_SOCKS_HOST),     
  632.                        False, warning, size);
  633.  
  634.     if (*buf2) {
  635.         FE_Alert (m_prefsDialog->getContext(), fe_StringTrim (buf));
  636.         return FALSE;
  637.     }
  638.     else {
  639.         return TRUE;
  640.     }
  641. }
  642.  
  643. // Member:       install changes
  644. // Description:  install changes for GeneralProxiesView
  645. // Inputs:
  646. // Side effects: 
  647.  
  648. void XFE_PrefsProxiesViewDialog::installChanges()
  649. {
  650.     fe_installProxiesView();
  651. }
  652.  
  653. // Member:       getContext
  654. // Description:  returns context
  655. // Inputs:
  656. // Side effects: 
  657.  
  658. MWContext *XFE_PrefsProxiesViewDialog::getContext()
  659. {
  660.     return (m_prefsDialog->getContext());
  661. }
  662.  
  663. // ==================== Friend Functions ====================
  664.  
  665. // Friend:       prefsProxiesViewCb_ok
  666. // Description:  
  667. // Inputs:
  668. // Side effects: 
  669.  
  670. void prefsProxiesViewCb_ok(Widget    w,
  671.                            XtPointer closure,
  672.                            XtPointer callData)
  673. {
  674.     XFE_PrefsProxiesViewDialog *theDialog = (XFE_PrefsProxiesViewDialog *)closure;
  675.     PrefsDataProxiesView       *fep = theDialog->m_prefsDataProxiesView;
  676.  
  677.     XP_ASSERT(fep);
  678.     if (! theDialog->verifyPage()) return;
  679.  
  680.     char *s1;
  681.     char *s2;
  682.  
  683.     PREFS_SET_GLOBALPREF_TEXT(no_proxy, no_proxy_text);
  684.  
  685. #define SNARFP(NAME,SUFFIX,empty_port_ok) \
  686. { \
  687.     s1 = fe_GetTextField(fep->NAME##_##SUFFIX##_text); \
  688.     s2 = fe_GetTextField(fep->NAME##_port_text); \
  689.     if (*s1 && (*s2 || empty_port_ok)) { \
  690.         fe_globalPrefs.NAME##_##SUFFIX = strdup(s1); \
  691.         fe_globalPrefs.NAME##_##SUFFIX##_port = *s2 ? atoi(s2) : 0; \
  692.     } else { \
  693.         fe_globalPrefs.NAME##_##SUFFIX = strdup(""); \
  694.         fe_globalPrefs.NAME##_##SUFFIX##_port = 0; \
  695.     } \
  696.     if (s1) XtFree(s1); \
  697.     if (s2) XtFree(s2); \
  698. }
  699.  
  700.     SNARFP (ftp,    proxy, False);
  701.     SNARFP (gopher, proxy, False);
  702.     SNARFP (http,   proxy, False);
  703. #ifndef NO_SECURITY
  704.     SNARFP (https,  proxy, False);
  705. #endif
  706.     SNARFP (wais,   proxy, False);
  707.     SNARFP (socks,  host,  True);
  708. #undef SNARFP
  709.  
  710.     // Install changes
  711.  
  712.     theDialog->installChanges();
  713.  
  714.     // Simulate a cancel
  715.  
  716.     prefsProxiesViewCb_cancel(w, closure, callData);
  717.  
  718.     // Save the preferences at the end, so that if we've found some setting that
  719.     // crashes, it won't get saved...
  720.     
  721.     if (!fe_CheckVersionAndSavePrefs((char *) fe_globalData.user_prefs_file, &fe_globalPrefs))
  722.         fe_perror (theDialog->getContext(), XP_GetString( XFE_ERROR_SAVING_OPTIONS));
  723.  
  724. }
  725.  
  726. // Friend:       prefsProxiesViewCb_cancel
  727. // Description:  
  728. // Inputs:
  729. // Side effects: 
  730.  
  731. void prefsProxiesViewCb_cancel(Widget    /* w */,
  732.                                XtPointer closure,
  733.                                XtPointer /* callData */)
  734. {
  735.     XFE_PrefsProxiesViewDialog *theDialog = (XFE_PrefsProxiesViewDialog *)closure;
  736.  
  737.     // Delete the dialog
  738.  
  739.     delete theDialog;
  740. }
  741.  
  742.