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 265 by douglas, 2003-08-16T20:55:39-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.8 2003/08/17 03:55:39 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  
246 < void version(void)
246 > INT_PTR CALLBACK usage(HWND dialog, UINT msg, WPARAM w, LPARAM l)
247   {
248 <        //
248 >        switch (msg)
249 >        {
250 >        case WM_INITDIALOG:
251 >                center(dialog);
252 >                SendMessage(dialog, WM_SETICON, ICON_BIG, LPARAM(gui.icon));
253 >                SendMessage(dialog, WM_SETTEXT, 0, LPARAM(programName.c_str()));
254 >                {
255 >                        ostringstream usage;
256 >
257 >                        usage << "Usage: VTBFileUtil [-help | -version | -disc | -scan]\n"
258 >                                << "\nOptions:\n"
259 >                                << "  -help\t\tDisplay this information\n"
260 >                                << "  -version\tDisplay version information\n"
261 >                                << "  -disc\t\tStart in Disc Browse mode\n"
262 >                                << "  -scan\t\tStart in Scan Utility mode\n";
263 >
264 >                        SendMessage(GetDlgItem(dialog, IDC_USAGE_TEXT), WM_SETTEXT, 0,
265 >                                LPARAM(usage.str().c_str()));
266 >                }
267 >                break;
268 >        case WM_COMMAND:
269 >                switch (LOWORD(w))
270 >                {
271 >                case IDOK:
272 >                case IDCANCEL:
273 >                        EndDialog(dialog, w);
274 >                        return TRUE;
275 >                default:
276 >                        break;
277 >                }
278 >                break;
279 >        }
280 >
281 >        return FALSE;
282 > }
283 >
284 > INT_PTR CALLBACK version(HWND dialog, UINT msg, WPARAM w, LPARAM l)
285 > {
286 >        switch (msg)
287 >        {
288 >        case WM_INITDIALOG:
289 >                center(dialog);
290 >                SendMessage(dialog, WM_SETICON, ICON_BIG, LPARAM(gui.icon));
291 >                SendMessage(dialog, WM_SETTEXT, 0, LPARAM(programName.c_str()));
292 >                {
293 >                        ostringstream version;
294 >
295 >                        version << programName << " (" << programVersion << ")\n\n"
296 >                                << "Copyright © 2003, Douglas Thrift.\n";
297 >
298 >                        SendMessage(GetDlgItem(dialog, IDC_VERSION_TEXT), WM_SETTEXT, 0,
299 >                                LPARAM(version.str().c_str()));
300 >                }
301 >                break;
302 >        case WM_COMMAND:
303 >                switch (LOWORD(w))
304 >                {
305 >                case IDOK:
306 >                case IDCANCEL:
307 >                        EndDialog(dialog, w);
308 >                        return TRUE;
309 >                default:
310 >                        break;
311 >                }
312 >                break;
313 >        }
314 >
315 >        return FALSE;
316   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines