X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=netinstall%2Fnet.cc;fp=netinstall%2Fnet.cc;h=3891d3fc940acf0afb0c623c44911b6b3bcb4e21;hp=0000000000000000000000000000000000000000;hb=1ecbe603154527afa87c21523aedd8e3bda77c2f;hpb=131844b7560952b4f8e1cb8628d9115e0f2f29d2 diff --git a/netinstall/net.cc b/netinstall/net.cc new file mode 100644 index 0000000..3891d3f --- /dev/null +++ b/netinstall/net.cc @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2000, Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * A copy of the GNU General Public License can be found at + * http://www.gnu.org/ + * + * Written by DJ Delorie + * + */ + +/* The purpose of this file is to get the network configuration + information from the user. */ + +#include "win32.h" +#include +#include +#include "dialog.h" +#include "resource.h" +#include "state.h" +#include "msg.h" +#include "log.h" + +static int rb[] = { IDC_NET_IE5, IDC_NET_DIRECT, IDC_NET_PROXY, 0 }; + +static void +check_if_enable_next (HWND h) +{ + int e = 0, p = 0, pu = 0; + if (net_method == IDC_NET_IE5) + pu = 1; + if (net_method == IDC_NET_IE5 || net_method == IDC_NET_DIRECT) + e = 1; + else if (net_method == IDC_NET_PROXY) + { + p = pu = 1; + if (net_proxy_host && net_proxy_port) + e = 1; + } + EnableWindow (GetDlgItem (h, IDOK), e); + EnableWindow (GetDlgItem (h, IDC_PROXY_HOST), p); + EnableWindow (GetDlgItem (h, IDC_PROXY_PORT), p); +} + +static void +load_dialog (HWND h) +{ + rbset (h, rb, net_method); + eset (h, IDC_PROXY_HOST, net_proxy_host); + if (net_proxy_port == 0) + net_proxy_port = 80; + eset (h, IDC_PROXY_PORT, net_proxy_port); + check_if_enable_next (h); +} + +static void +save_dialog (HWND h) +{ + net_method = rbget (h, rb); + net_proxy_host = eget (h, IDC_PROXY_HOST, net_proxy_host); + net_proxy_port = eget (h, IDC_PROXY_PORT); +} + +static BOOL +dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) +{ + switch (id) + { + + case IDC_NET_IE5: + case IDC_NET_DIRECT: + case IDC_NET_PROXY: + case IDC_PROXY_HOST: + case IDC_PROXY_PORT: + save_dialog (h); + check_if_enable_next (h); + break; + + case IDOK: + save_dialog (h); + switch (source) + { + case IDC_SOURCE_NETINST: + case IDC_SOURCE_DOWNLOAD: + NEXT (IDD_SITE); + break; + case IDC_SOURCE_CWD: + NEXT (0); + break; + default: + msg ("source is default? %d\n", source); + NEXT (0); + } + break; + + case IDC_BACK: + save_dialog (h); + switch (source) + { + case IDC_SOURCE_DOWNLOAD: + NEXT (IDD_LOCAL_DIR); + break; + case IDC_SOURCE_NETINST: + case IDC_SOURCE_CWD: + NEXT (IDD_ROOT); + break; + } + break; + + case IDCANCEL: + NEXT (0); + break; + } + return FALSE; +} + +static BOOL CALLBACK +dialog_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_INITDIALOG: + load_dialog (h); + return FALSE; + case WM_COMMAND: + return HANDLE_WM_COMMAND (h, wParam, lParam, dialog_cmd); + } + return FALSE; +} + +void +do_net (HINSTANCE h) +{ + int rv = 0; + + rv = DialogBox (h, MAKEINTRESOURCE (IDD_NET), 0, dialog_proc); + if (rv == -1) + fatal (IDS_DIALOG_FAILED); + + log (0, "net: %s", + (net_method == IDC_NET_IE5) ? "IE5" : + (net_method == IDC_NET_DIRECT) ? "Direct" : "Proxy"); +} +