Initial revision
[chise/xemacs-chise.git.1] / netinstall / net.cc
diff --git a/netinstall/net.cc b/netinstall/net.cc
new file mode 100644 (file)
index 0000000..3891d3f
--- /dev/null
@@ -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 <dj@cygnus.com>
+ *
+ */
+
+/* The purpose of this file is to get the network configuration
+   information from the user. */
+
+#include "win32.h"
+#include <stdio.h>
+#include <stdlib.h>
+#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");
+}
+