annotate netinstall/localdir.cc @ 510:5bdbc721d46a

[xemacs-hg @ 2001-05-06 08:33:35 by ben] implement printing the selection when it's selected. force redisplay when set-charset-ccl-program called. if bytecomp or byte-optimize need recompiling, then load the .el version of them first, recompile them, and reload the .elc versions to recompile everything else (so we won't be waiting until the cows come home).
author ben
date Sun, 06 May 2001 08:33:41 +0000
parents 3078fd1074e8
children 685b588e92d8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 * Written by Andrej Borsenkow <Andrej.Borsenkow@mow.siemens.ru>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 * based on work and suggestions of DJ Delorie
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 /* The purpose of this file is to ask the user where they want the
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18 root of the installation to be, and to ask whether the user prefers
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 text or binary mounts. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 #include <shlobj.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 #include <stdio.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24 #include <stdlib.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 #include <ctype.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 #include "dialog.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28 #include "resource.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #include "state.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 #include "msg.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31 #include "concat.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 #include "log.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35 check_if_enable_next (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 EnableWindow (GetDlgItem (h, IDOK), local_dir != 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 load_dialog (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 eset (h, IDC_LOCAL_DIR, local_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44 check_if_enable_next (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48 save_dialog (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 local_dir = eget (h, IDC_LOCAL_DIR, local_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54 static int CALLBACK
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55 browse_cb (HWND h, UINT m, LPARAM lp, LPARAM data)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57 switch (m)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 case BFFM_INITIALIZED:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60 if (local_dir)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 SendMessage (h, BFFM_SETSELECTION, TRUE, (LPARAM)local_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
64 return 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
65 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
66
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
67 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 browse (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70 BROWSEINFO bi;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 CHAR name[MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72 LPITEMIDLIST pidl;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 memset (&bi, 0, sizeof (bi));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74 bi.hwndOwner = h;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 bi.pszDisplayName = name;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
76 bi.lpszTitle = "Select download directory";
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 bi.ulFlags = BIF_RETURNONLYFSDIRS;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78 bi.lpfn = browse_cb;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79 pidl = SHBrowseForFolder (&bi);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 if (pidl)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 if (SHGetPathFromIDList (pidl, name))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 eset (h, IDC_LOCAL_DIR, name);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88 static BOOL
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89 dialog_cmd (HWND h, int id, HWND hwndctl, UINT code)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
90 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
91 switch (id)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
92 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
93
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
94 case IDC_LOCAL_DIR:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
95 save_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
96 check_if_enable_next (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
97 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
98
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
99 case IDC_LOCAL_DIR_BROWSE:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
100 browse (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
101 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
102
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
103 case IDOK:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
104 save_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
105 if (SetCurrentDirectoryA (local_dir))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
106 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
107 switch (source)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
108 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
109 case IDC_SOURCE_DOWNLOAD:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
110 NEXT (IDD_NET);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
111 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
112 case IDC_SOURCE_NETINST:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
113 case IDC_SOURCE_CWD:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
114 NEXT (IDD_ROOT);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
115 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
116 default:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
117 NEXT (0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
118 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
119 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
120 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
121 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
122 note (IDS_ERR_CHDIR, local_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
123
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
124 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
125
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
126 case IDC_BACK:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
127 save_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
128 NEXT (IDD_SOURCE);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
129 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
130
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
131 case IDCANCEL:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
132 NEXT (0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
133 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
134 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
135 return FALSE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
136 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
137
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
138 static BOOL CALLBACK
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
139 dialog_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
140 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
141 switch (message)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
142 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
143 case WM_INITDIALOG:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
144 load_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
145 return FALSE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
146 case WM_COMMAND:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
147 return HANDLE_WM_COMMAND (h, wParam, lParam, dialog_cmd);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
148 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
149 return FALSE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
150 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
151
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
152 extern char cwd[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
153
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
154 void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
155 do_local_dir (HINSTANCE h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
156 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
157 int rv = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
158 rv = DialogBox (h, MAKEINTRESOURCE (IDD_LOCAL_DIR), 0, dialog_proc);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
159 if (rv == -1)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
160 fatal (IDS_DIALOG_FAILED);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
161
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
162 log (0, "Selected local directory: %s", local_dir);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
163 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
164