ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/VTBFileUtil2/VTBFileUtil2.cxx
(Generate patch)

Comparing trunk/VTBFileUtil2/VTBFileUtil2.cxx (file contents):
Revision 255 by douglas, 2003-08-15T17:12:57-07:00 vs.
Revision 267 by douglas, 2003-08-18T15:25:29-07:00

# Line 2 | Line 2
2   //
3   // Douglas Thrift
4   //
5 < // $Id: VTBFileUtil2.cxx,v 1.1 2003/08/16 00:12:57 douglas Exp $
5 > // $Id: VTBFileUtil2.cxx,v 1.9 2003/08/18 22:25:29 douglas Exp $
6  
7   #include "VTBFileUtil2.h"
8 + #include "Chooser.h"
9 + #include "DiscBrowse.h"
10 + #include "ScanUtility.h"
11  
12   #include <io.h>
13   #include <fcntl.h>
# Line 12 | Line 15
15   bool debug = false;
16   string program;
17   string programName = "Vance Thrift and Biller File Utility 2";
18 < unsigned programVersion = 0x00101000;
18 > string programVersion = "2.0alpha";
19 > Gui gui;
20 >
21 > INT_PTR CALLBACK usage(HWND dialog, UINT msg, WPARAM w, LPARAM l);
22 > INT_PTR CALLBACK version(HWND dialog, UINT msg, WPARAM w, LPARAM l);
23  
24   inline void arguments(vector<string>& args, const string& command)
25   {
# Line 40 | Line 47 | inline void arguments(vector<string>& ar
47   inline void munge(void)
48   {
49          AllocConsole();
50 <        SetConsoleTitle("Renegade Map Selector");
50 >        SetConsoleTitle(programName.c_str());
51  
52          int hin = _open_osfhandle(long(GetStdHandle(STD_INPUT_HANDLE)), _O_TEXT);
53          int hout = _open_osfhandle(long(GetStdHandle(STD_OUTPUT_HANDLE)), _O_TEXT);
# Line 63 | Line 70 | inline void munge(void)
70          cerr.sync_with_stdio();
71   }
72  
73 + inline void usage(HWND parent)
74 + {
75 +        DialogBox(gui.instance, MAKEINTRESOURCE(IDD_USAGE), parent, usage);
76 + }
77 +
78 + inline void version(HWND parent)
79 + {
80 +        DialogBox(gui.instance, MAKEINTRESOURCE(IDD_VERSION), parent, version);
81 + }
82 +
83   int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
84          lpCmdLine, int nShowCmd)
85   {
86          vector<string> args;
87          
88 +        InitCommonControls();
89          arguments(args, GetCommandLine());
90  
91          program = args[0];
92  
93 +        Mode mode = none;
94 +
95 +        gui.instance = hInstance;
96 +        gui.icon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_VTB_ICON));
97 +        gui.tips = 0;
98 +
99          for (unsigned index = 1; index < args.size(); index++)
100          {
101                  if (args[index] == "-help")
# Line 86 | Line 110 | int WINAPI WinMain(HINSTANCE hInstance,
110                  }
111                  else if (args[index] == "-disc")
112                  {
113 <                        //
113 >                        mode = disc;
114                  }
115                  else if (args[index] == "-scan")
116                  {
117 <                        //
117 >                        mode = scan;
118                  }
119                  else if (args[index] == "-D")
120                  {
# Line 98 | Line 122 | int WINAPI WinMain(HINSTANCE hInstance,
122                          {
123                                  debug = true;
124  
125 <                                munge();
125 >                                cerr.setf(ios_base::boolalpha);
126                          }
127                  }
128 +                else
129 +                {
130 +                        string message = "Unknown argument: " + args[index];
131 +
132 +                        MessageBox(NULL, message.c_str(), programName.c_str(),
133 +                                MB_ICONWARNING);
134 +                }
135 +        }
136 +
137 +        if (debug)
138 +        {
139 +                munge();
140 +                cerr << "mode = ";
141 +
142 +                switch (mode)
143 +                {
144 +                case none:
145 +                        cerr << "none";
146 +                        break;
147 +                case disc:
148 +                        cerr << "disc";
149 +                        break;
150 +                case scan:
151 +                        cerr << "scan";
152 +                        break;
153 +                default:
154 +                        cerr << mode;
155 +                        break;
156 +                }
157 +
158 +                cerr << "\n";
159 +        }
160 +
161 +        if (mode == none)
162 +        {
163 +                Chooser chooser;
164 +
165 +                mode = chooser.choose();
166 +
167 +                if (debug)
168 +                {
169 +                        cerr << "mode = ";
170 +
171 +                        switch (mode)
172 +                        {
173 +                        case none:
174 +                                cerr << "none";
175 +                                break;
176 +                        case disc:
177 +                                cerr << "disc";
178 +                                break;
179 +                        case scan:
180 +                                cerr << "scan";
181 +                                break;
182 +                        default:
183 +                                cerr << mode;
184 +                                break;
185 +                        }
186 +
187 +                        cerr << "\n";
188 +                }
189 +        }
190 +
191 +        if (mode == disc)
192 +        {
193 +                DiscBrowse browser;
194 +
195 +                browser.run();
196 +        }
197 +        else if (mode == scan)
198 +        {
199 +                ScanUtility utility;
200 +
201 +                utility.run();
202 +        }
203 +
204 +        if (debug)
205 +        {
206 +                cout << "Press enter key to exit . . .";
207 +                cin.get();
208          }
209  
210          return 0;
211   }
212  
213 < void usage(void)
213 > void tooltip(HWND tool, const string& tip)
214   {
215 <        //
215 >        HWND tooltip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP
216 >                | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT,
217 >                CW_USEDEFAULT, CW_USEDEFAULT, tool, NULL, gui.instance, NULL);
218 >        RECT rect;
219 >
220 >        SetWindowPos(tooltip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE |
221 >                SWP_NOACTIVATE);
222 >
223 >        GetClientRect(tool, &rect);
224 >
225 >        TOOLINFO toolinfo;
226 >        LPTSTR ctip = new CHAR[tip.length()];
227 >
228 >        sprintf(ctip, "%s", tip.c_str());
229 >
230 >        if (debug) cerr << "ctip = " << ctip << "\n";
231 >
232 >        toolinfo.cbSize = sizeof(TOOLINFO);
233 >        toolinfo.uFlags = TTF_SUBCLASS;
234 >        toolinfo.hwnd = tool;
235 >        toolinfo.hinst = gui.instance;
236 >        toolinfo.uId = gui.tips++;
237 >        toolinfo.lpszText = ctip;
238 >        toolinfo.rect.left = rect.left;
239 >        toolinfo.rect.top = rect.top;
240 >        toolinfo.rect.right = rect.right;
241 >        toolinfo.rect.bottom = rect.bottom;
242 >
243 >        SendMessage(tooltip, TTM_ADDTOOL, 0, LPARAM(LPTOOLINFO(&toolinfo)));
244 >
245 >        delete [] ctip;
246 > }
247 >
248 > INT_PTR CALLBACK usage(HWND dialog, UINT msg, WPARAM w, LPARAM l)
249 > {
250 >        switch (msg)
251 >        {
252 >        case WM_INITDIALOG:
253 >                center(dialog);
254 >                SendMessage(dialog, WM_SETICON, ICON_BIG, LPARAM(gui.icon));
255 >                SendMessage(dialog, WM_SETTEXT, 0, LPARAM(programName.c_str()));
256 >                {
257 >                        ostringstream usage;
258 >
259 >                        usage << "Usage: VTBFileUtil [-help | -version | -disc | -scan]\n"
260 >                                << "\nOptions:\n"
261 >                                << "  -help\t\tDisplay this information\n"
262 >                                << "  -version\tDisplay version information\n"
263 >                                << "  -disc\t\tStart in Disc Browse mode\n"
264 >                                << "  -scan\t\tStart in Scan Utility mode\n";
265 >
266 >                        SendMessage(GetDlgItem(dialog, IDC_USAGE_TEXT), WM_SETTEXT, 0,
267 >                                LPARAM(usage.str().c_str()));
268 >                }
269 >                break;
270 >        case WM_COMMAND:
271 >                switch (LOWORD(w))
272 >                {
273 >                case IDOK:
274 >                case IDCANCEL:
275 >                        EndDialog(dialog, w);
276 >                        return TRUE;
277 >                default:
278 >                        break;
279 >                }
280 >                break;
281 >        }
282 >
283 >        return FALSE;
284   }
285  
286 < void version(void)
286 > INT_PTR CALLBACK version(HWND dialog, UINT msg, WPARAM w, LPARAM l)
287   {
288 <        //
288 >        switch (msg)
289 >        {
290 >        case WM_INITDIALOG:
291 >                center(dialog);
292 >                SendMessage(dialog, WM_SETICON, ICON_BIG, LPARAM(gui.icon));
293 >                SendMessage(dialog, WM_SETTEXT, 0, LPARAM(programName.c_str()));
294 >                {
295 >                        ostringstream version;
296 >
297 >                        version << programName << " (" << programVersion << ")\n\n"
298 >                                << "Copyright © 2003, Douglas Thrift.\n";
299 >
300 >                        SendMessage(GetDlgItem(dialog, IDC_VERSION_TEXT), WM_SETTEXT, 0,
301 >                                LPARAM(version.str().c_str()));
302 >                }
303 >                break;
304 >        case WM_COMMAND:
305 >                switch (LOWORD(w))
306 >                {
307 >                case IDOK:
308 >                case IDCANCEL:
309 >                        EndDialog(dialog, w);
310 >                        return TRUE;
311 >                default:
312 >                        break;
313 >                }
314 >                break;
315 >        }
316 >
317 >        return FALSE;
318   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines