source: trunk/settings.cpp@ 149

Last change on this file since 149 was 149, checked in by Gregg Young, 4 years ago

Get Russian translation working. Fix it so a for example Spanish translation could be used on a Russian system

  • Property svn:eol-style set to native
File size: 61.5 KB
RevLine 
[2]1/***
2 This file belongs to the Gotcha! distribution.
3 Copyright (C) 1998-2002 Thorsten Thielen <thth@c2226.de>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 ***/
[11]19#include <direct.h>
[94]20#include <uconv.h>
[2]21#include "settings.h"
22#include "ctype.h"
23
24#include "./settings/thth_settings.cpp"
25
26PSZ SETTINGS::pszPageTab[COUNT_PAGES]; /* = {
27 "Saving", "Snapshot window", "Misc", "Language" };
28 // FIXME nls*/
29
[27]30bool saveum = FALSE;
[2]31SWP swpDef = { 0,0,0, 98,66, 0,0,0,0 };
32SWP swpDefSSW = { 0,0,0, 10,10, 0,0,0,0 };
33USHORT ausDef[7] = { 0 };
34USHORT ausDefSSW[7] = { 0 };
35
36ImageFormatInfo Settings::ifi[BMF_INVALID] =
37{
[27]38 { TRUE, BMF_JPG, "JPEG Interchange File Format (jpg)", "jpg", "JPG" },
39 { TRUE, BMF_PNG, "Portable Network Graphics (png)", "png", "PNG" },
40 { TRUE, BMF_OS20, "OS/2 Bitmap 2.0 (bmp)", "bmp", "Bitmap" },
41 { TRUE, BMF_TIF, "Microsoft/Aldus Tagged Image File Format (tif)", "tif", "TIFF" },
42 { TRUE, BMF_TGA, "Truevision Targa/Vista (tga)", "tga", "Targa" },
43 { TRUE, BMF_PCX, "ZSoft PC Paintbrush Image Format (pcx)", "pcx", "PCX" },
44 { TRUE, BMF_GIF, "Portable Anymap (pnm)", "pnm", "PNM" },
45 { TRUE, BMF_PBM, "Portable Pixel-map (ppm)", "ppm", "PPM" },
46 { TRUE, BMF_JP2, "Jpeg 2000 (provided by the Open Source OpenJPEG library) (jp2)", "jp2", "JP2" },
47 { TRUE, BMF_DIB, "Device Independent Bitmap (dib)", "dib", "DIB" }
[2]48};
49
[11]50
[2]51PTHTH_SE apse[] =
52{
[11]53 new THTH_SES (SEI_SAVEFILE, "Save", "Filename", "gotcha.png"),
54 new THTH_SES (SEI_FORCESAVEFILE, "Save", "ForceSaveFilename", "force.png"),
55 new THTH_SEL (SEI_SAVESTYLE, "Save", "Style", SAVESTYLE_FILE),
56 new THTH_SEL (SEI_FILEFORMAT, "Save", "FileFormat", BMF_PNG),
[2]57 new THTH_SEL (SEI_FILESAVESTYLE, "Save", "FileSaveStyle", FSS_PROMPT),
58
59 new THTH_SES (SEI_NUMSAVEDIR, "Save", "NumSaveDir", ""),
60 new THTH_SEF (SEI_HIDEWINDOW, "Extras", "HideWindow", TRUE),
61 new THTH_SEF (SEI_AUTOADDEXTENSION, "Extras", "AutoaddExtension", TRUE),
62 new THTH_SEF (SEI_CONFIRMOVERWRITE, "Extras", "ConfirmOverwrite", TRUE),
63 new THTH_SEF (SEI_DOSOUND, "Extras", "DoSound", TRUE),
64
65 new THTH_SEF (SEI_DELAYEDCAPTURE, "Extras", "DelayedCapture", FALSE),
66 new THTH_SEF (SEI_DELAYCOUNTDOWN, "Extras", "DelayCountdown", FALSE),
67 new THTH_SEL (SEI_DELAYTIME, "Extras", "DelayTime", 5),
68 new THTH_SEF (SEI_SERIALCAPTURE, "Extras", "SerialCapture", FALSE),
69 new THTH_SEL (SEI_SERIALTIME, "Extras", "SerialTime", 10),
[92]70#ifdef _QUIET_
71 new THTH_SEL (SEI_SSWCAPTURETYPE, "Extras", "CaptureType", CAP_SCREEN),
72 new THTH_SEF (SEI_SNAPSHOTWINDOW, "Snapshot", NULL, NULL),
73#else
[2]74 new THTH_SEF (SEI_SNAPSHOTWINDOW, "Snapshot", "Enable", FALSE),
75 new THTH_SEL (SEI_SSWCAPTURETYPE, "Snapshot", "CaptureType", CAP_SCREEN),
76 new THTH_SEF (SEI_SSWHIDE, "Snapshot", "Hide", TRUE),
77 new THTH_SEF (SEI_SSWALWAYSONTOP, "Snapshot", "AlwaysOnTop", TRUE),
[92]78#endif
[2]79 new THTH_SEF (SEI_IDLEPRIORITY, "Extras", "IdlePriority", FALSE),
80
81 new THTH_SEB (SEI_SWP, "Window", "SWP", &swpDef, sizeof (swpDef)),
82 new THTH_SEB (SEI_US, "Window", "US", &ausDef, sizeof (ausDef)),
[92]83#ifndef _QUIET_
[2]84 new THTH_SEB (SEI_SWPSSW, "Snapshot", "SWP", &swpDefSSW, sizeof (swpDefSSW)),
85 new THTH_SEB (SEI_USSSW, "Snapshot", "US", &ausDefSSW, sizeof (ausDefSSW)),
[92]86#endif
[27]87 new THTH_SES (SEI_LANGUAGE, "Language", "Program", PSZ_DEFAULTLANGUAGEMOD),
[2]88 new THTH_SES (SEI_LANGUAGEHELP, "Language", "Help", PSZ_DEFAULTLANGUAGEHELP),
89
90 new THTH_SEF (SEI_UPDATE178DONE, "Extras", "Update178Done", FALSE),
91
92 NULL,
93};
94
[115]95PTHTH_SE apse2[] =
96{
97 new THTH_SES (SEI_SAVEFILE, "Save", "Filename", "gotcha.png"),
98 new THTH_SES (SEI_FORCESAVEFILE, "Save", "ForceSaveFilename", "force.png"),
99 new THTH_SEL (SEI_SAVESTYLE, "Save", "Style", SAVESTYLE_FILE),
100 new THTH_SEL (SEI_FILEFORMAT, "Save", "FileFormat", BMF_PNG),
101 new THTH_SEL (SEI_FILESAVESTYLE, "Save", "FileSaveStyle", FSS_NUMFILES),
102
103 new THTH_SES (SEI_NUMSAVEDIR, "Save", "NumSaveDir", ""),
104 new THTH_SEF (SEI_HIDEWINDOW, "Extras", "HideWindow", TRUE),
105 new THTH_SEF (SEI_AUTOADDEXTENSION, "Extras", "AutoaddExtension", TRUE),
106 new THTH_SEF (SEI_CONFIRMOVERWRITE, "Extras", "ConfirmOverwrite", TRUE),
107 new THTH_SEF (SEI_DOSOUND, "Extras", "DoSound", TRUE),
108
109 new THTH_SEF (SEI_DELAYEDCAPTURE, "Extras", "DelayedCapture", FALSE),
110 new THTH_SEF (SEI_DELAYCOUNTDOWN, "Extras", "DelayCountdown", FALSE),
111 new THTH_SEL (SEI_DELAYTIME, "Extras", "DelayTime", 5),
112 new THTH_SEF (SEI_SERIALCAPTURE, "Extras", "SerialCapture", FALSE),
113 new THTH_SEL (SEI_SERIALTIME, "Extras", "SerialTime", 10),
114#ifdef _QUIET_
115 new THTH_SEL (SEI_SSWCAPTURETYPE, "Extras", "CaptureType", CAP_SCREEN),
116 new THTH_SEF (SEI_SNAPSHOTWINDOW, "Snapshot", NULL, NULL),
117#else
118 new THTH_SEF (SEI_SNAPSHOTWINDOW, "Snapshot", "Enable", FALSE),
119 new THTH_SEL (SEI_SSWCAPTURETYPE, "Snapshot", "CaptureType", CAP_SCREEN),
120 new THTH_SEF (SEI_SSWHIDE, "Snapshot", "Hide", TRUE),
121 new THTH_SEF (SEI_SSWALWAYSONTOP, "Snapshot", "AlwaysOnTop", TRUE),
122#endif
123 new THTH_SEF (SEI_IDLEPRIORITY, "Extras", "IdlePriority", FALSE),
124
125 new THTH_SEB (SEI_SWP, "Window", "SWP", &swpDef, sizeof (swpDef)),
126 new THTH_SEB (SEI_US, "Window", "US", &ausDef, sizeof (ausDef)),
127#ifndef _QUIET_
128 new THTH_SEB (SEI_SWPSSW, "Snapshot", "SWP", &swpDefSSW, sizeof (swpDefSSW)),
129 new THTH_SEB (SEI_USSSW, "Snapshot", "US", &ausDefSSW, sizeof (ausDefSSW)),
130#endif
131 new THTH_SES (SEI_LANGUAGE, "Language", "Program", PSZ_DEFAULTLANGUAGEMOD),
132 new THTH_SES (SEI_LANGUAGEHELP, "Language", "Help", PSZ_DEFAULTLANGUAGEHELP),
133
134 new THTH_SEF (SEI_UPDATE178DONE, "Extras", "Update178Done", FALSE),
135
136 NULL,
137};
138
[2]139// ** Settings ************************************************************ /*FOLD00*/
140
141Settings :: Settings (VOID) :
[30]142#ifdef _QUIET_
[115]143 ththSettings(g_installer ? apse2 : apse, g_installer ? g_installerINI : "gotchaq.ini",
144 L_PROFILEVERSION)
[30]145#else
146 ththSettings(apse, "gotcha.ini", L_PROFILEVERSION)
147#endif
[2]148{
149 if( ! QueryFlag( SEI_UPDATE178DONE ) ) {
150 SetLong( SEI_SERIALTIME, QueryLong( SEI_SERIALTIME ) * 20 );
151 SetFlag( SEI_UPDATE178DONE );
[115]152 }
[94]153#ifdef _QUIET_
[115]154 HINI hini;
155 if (!g_installer)
156 hini = PrfOpenProfile (hab, "gotchaq.ini");
[94]157#else
158 HINI hini = PrfOpenProfile (hab, "gotcha.ini");
159#endif
160 BOOL fLChange = FALSE;
[115]161 if (!g_installer) {
162 ULONG ulDataSize;
163 PrfQueryProfileSize(hini, "Language", "LangChangeRequested", &ulDataSize );
164 PrfQueryProfileData(hini, "Language", "LangChangeRequested", &fLChange, &ulDataSize);
165 }
[94]166 if (!fLChange) {
167 CHAR *lang = getenv("LANG");
168#ifdef _QUIET_
169 PSZ psz = "goqresen";
170#else
171 PSZ psz = "gotresen";
172#endif
173 PSZ pszh = "gotcha_en";
174 if (lang) {
175 if (!strnicmp(lang, "es", 2)) {
[115]176#ifdef _QUIET_
177 psz = "goqreses";
178#else
[94]179 psz = "gotreses";
[115]180#endif
[94]181 pszh = "gotcha_es";
182 }
183 else if (!strnicmp(lang, "cs", 2)) {
[115]184#ifdef _QUIET_
185 psz = "goqrescz";
186#else
[94]187 psz = "gotrescz";
[115]188#endif
[94]189 }
190 else if (!strnicmp(lang, "de", 2)) {
[115]191#ifdef _QUIET_
192 psz = "goqresde";
193#else
[94]194 psz = "gotresde";
[115]195#endif
[94]196 }
[135]197#if 0
198 else if (!strnicmp(lang, "it", 2)) {
[115]199#ifdef _QUIET_
200 psz = "goqresit";
201#else
[94]202 psz = "gotresit";
[115]203#endif
[94]204 }
205 else if (!strnicmp(lang, "br", 2)) {
[115]206#ifdef _QUIET_
207 psz = "goqresbr";
208#else
[94]209 psz = "gotresbr";
[115]210#endif
[135]211 }
212#endif
[94]213 }
[115]214 SetString(SEI_LANGUAGE, psz);
215 SetString (SEI_LANGUAGEHELP, pszh);
216 if (!g_installer) {
217 Save ();
218
219 if (hini)
220 PrfCloseProfile (hini);
221 }
[94]222 }
[115]223 //Reset Save directory for installer
224 if (g_installer) {
225 SetNumSaveDir (g_installerSavePath);
226 }
[2]227 // to get the error msgs in default language
228 ReloadResources (QueryString(SEI_LANGUAGE));
[94]229#ifdef _QUIET_
230 if (!g_installer) {
231#endif
232 if (Error () == 1)
233 {
234 FileNotOpenError ();
235 ReloadResources (QueryString(SEI_LANGUAGE));
236 }
237 else if (Error () == 2)
238 {
239 VersionError ();
240 ReloadResources (QueryString(SEI_LANGUAGE));
241 }
242#ifdef _QUIET_
[2]243 }
[94]244#endif
[2]245}
246
247// ** VersionError ********************************************************
248
249USHORT SETTINGS :: VersionError (VOID)
250{
251 DisplayError (RSTR(IDS_HEADER_WARNING), RSTR(IDS_ERROR_INIFILEWRONGVERSION),
252 QueryProfileName ());
[115]253#ifndef _QUIET_
[2]254 SelectLanguage();
[115]255#endif
[2]256 return 0;
257}
258
[94]259// ** FileNotOpenError **************************************************** /*FOLD00*/
[2]260
261USHORT SETTINGS :: FileNotOpenError (VOID)
262{
263 DisplayError (RSTR(IDS_HEADER_ERROR), RSTR(IDS_ERROR_INIFILENOTOPEN),
264 QueryProfileName ());
[115]265#ifndef _QUIET_
[2]266 SelectLanguage();
[115]267#endif
[2]268 return 0;
269}
270
271// ** Dialog ************************************************************** /*FOLD00*/
272
273// FIXME YUKKI! YUKKI!! YUKKI!!! But I'm too lazy to do it better now :-)
274HWND g_hwndSettingsDialog = NULL;
[27]275HWND g_hwndPage0 = NULL;
[2]276
277BOOL SETTINGS :: Dialog (BOOL fOnlyLanguage)
278{
279#ifdef _DOLOGDEBUG_
280 LogDebug( "Dialog: checkpoint 1" );
281#endif
282 fAutoLanguage = fOnlyLanguage;
283
284 // load the main dialog window
[115]285 hwndDlg = WinLoadDlg (HWND_DESKTOP, hwndFrame, PFNWP (DialogProcedure),
[2]286 GETMODULE, ID_DLG_SETTINGS, this);
287 // FIXME YUKKI! YUKKI!! YUKKI!!! But I'm too lazy to do it better now :-)
288 g_hwndSettingsDialog = hwndDlg;
289#ifdef _DOLOGDEBUG_
290 LogDebug( "Dialog: checkpoint 2" );
291#endif
292
293 // disable this two buttons if only language select
294 if (fAutoLanguage)
295 {
296 WinEnableWindow (WinWindowFromID (hwndDlg, WID_PB_HELP), FALSE);
297 WinEnableWindow (WinWindowFromID (hwndDlg, WID_PB_UNDO), FALSE);
298 }
299
300 HWND hwndNB = WinWindowFromID (hwndDlg, WID_NB_SETTINGS);
301#ifdef _DOLOGDEBUG_
302 LogDebug( "Dialog: checkpoint 3" );
303#endif
304
305 // set notebook background color
306 WinSendMsg (hwndNB, BKM_SETNOTEBOOKCOLORS,
307 MPFROMLONG (SYSCLR_DIALOGBACKGROUND),
308 MPFROMSHORT (BKA_BACKGROUNDPAGECOLORINDEX));
309
310 // set tab dimensions
311 WinSendMsg (hwndNB, BKM_SETDIMENSIONS,
312 MPFROM2SHORT (80, 25), MPFROMSHORT (BKA_MAJORTAB));
313#ifdef _DOLOGDEBUG_
314 LogDebug( "Dialog: checkpoint 4" );
315#endif
316
317 ULONG idPage[COUNT_PAGES];
318 USHORT i, cPages;
319
320 if (fOnlyLanguage)
321 {
322 cPages = 1;
323
324 idPage[0] = (ULONG)
[94]325 WinSendMsg (hwndDlg, BKM_INSERTPAGE, 0L,
[2]326 MPFROM2SHORT (BKA_MAJOR | BKA_AUTOPAGESIZE,
327 BKA_LAST));
[94]328 WinSendMsg (hwndDlg, BKM_SETTABTEXT, MPFROMLONG (idPage[0]),
[2]329 MPFROMP (pszPageTab[COUNT_PAGES-1]));
330 hwndPage[0] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page4Procedure,
331 GETMODULE, ID_DLG_SETTINGSPAGE4, this);
332 }
333 else
334 {
335 cPages = COUNT_PAGES;
336
337 // insert empty pages
338 for (i = 0; i < cPages; i++)
339 {
340 idPage[i] = (ULONG)
341 WinSendMsg (hwndNB, BKM_INSERTPAGE, 0L,
342 MPFROM2SHORT (BKA_MAJOR | BKA_AUTOPAGESIZE,
343 BKA_LAST));
[149]344 //if (pset->GetLangID() == CZ || pset->GetLangID() == RU || pset->GetLangID() == PL) {
[94]345 UniChar target[300];
346 CHAR ucLangStr[300];
347 UconvObject uconv_object866 = NULL;
348 UconvObject uconv_object852 = NULL;
349 UconvObject uconv_object1207 = NULL;
350 UconvObject uconv_object850 = NULL;
351 HAB hab;
352 CHAR ucFont[FACESIZE];
353
354 UniCreateUconvObject((UniChar *)L"IBM-852", &uconv_object852);
355 UniCreateUconvObject((UniChar *)L"IBM-850", &uconv_object850);
356 UniCreateUconvObject((UniChar *)L"IBM-866", &uconv_object866);
357 UniCreateUconvObject((UniChar *)L"IBM-1207", &uconv_object1207);
358
359 strcpy(ucLangStr, pszPageTab[i]);
360 if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
361
362 UniStrToUcs( uconv_object852, target, ucLangStr, 299);
363 }
364 else if (pset->GetLangID() == RU)
365 UniStrToUcs( uconv_object866, target, ucLangStr, 299);
366 else {
367 UniStrToUcs( uconv_object850, target, ucLangStr, 299);
368 }
369 UniStrFromUcs( uconv_object1207, ucLangStr, target, 300);
370 WinSendMsg (hwndNB, BKM_SETTABTEXT,
371 MPFROMLONG (idPage[i]), MPFROMP (ucLangStr));
372 if (uconv_object866)
373 UniFreeUconvObject(uconv_object866);
374 if (uconv_object852)
375 UniFreeUconvObject(uconv_object852);
376 if (uconv_object850)
377 UniFreeUconvObject(uconv_object850);
378 if (uconv_object1207)
379 UniFreeUconvObject(uconv_object1207);
[149]380 //}
[94]381 else
382 WinSendMsg (hwndNB, BKM_SETTABTEXT,
383 MPFROMLONG (idPage[i]), MPFROMP (pszPageTab[i]));
[2]384 }
[30]385#ifndef _QUIET_
[2]386 // open and assign dialogs to pages
387 hwndPage[0] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page1Procedure,
388 GETMODULE, ID_DLG_SETTINGSPAGE1, this);
[30]389 hwndPage[1] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page2Procedure,
[2]390 GETMODULE, ID_DLG_SETTINGSPAGE2, this);
391 hwndPage[2] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page3Procedure,
392 GETMODULE, ID_DLG_SETTINGSPAGE3, this);
393 hwndPage[3] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page4Procedure,
394 GETMODULE, ID_DLG_SETTINGSPAGE4, this);
[27]395#else
396 hwndPage[0] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) WindowProcedure,
397 GETMODULE, ID_DLG_SETTINGSPAGE0, this);
[41]398 hwndPage[1] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page2Procedure,
399 GETMODULE, ID_DLG_SETTINGSPAGE2, this);
400 hwndPage[2] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page1Procedure,
[27]401 GETMODULE, ID_DLG_SETTINGSPAGE1, this);
402 hwndPage[3] = WinLoadDlg (hwndNB, hwndNB, (PFNWP) Page4Procedure,
403 GETMODULE, ID_DLG_SETTINGSPAGE4, this);
404 g_hwndPage0 = hwndPage[0];
405
406#endif
[2]407 }
408#ifdef _DOLOGDEBUG_
409 LogDebug( "Dialog: checkpoint 5" );
410#endif
411
412 // combine dlg-handle and page ids
413 for (i = 0; i < cPages; i++)
414 WinSendMsg (hwndNB, BKM_SETPAGEWINDOWHWND,
415 MPFROMLONG (idPage[i]), MPFROMHWND (hwndPage[i]));
416
417 for (i = 0; i < cPages; i++)
418 WinSendMsg (hwndPage[i], UM_SETTINGS2DIALOG, 0,0);
419#ifdef _DOLOGDEBUG_
420 LogDebug( "Dialog: checkpoint 6" );
421#endif
[27]422 WinSendDlgItemMsg (g_hwndPage0, WID_RB_FILE, BM_CLICK,
423 MPFROMSHORT (TRUE), 0);
[41]424#ifdef _QUIET_
425 if (HACCEL haccel = WinLoadAccelTable (hab, GETMODULE, 1)) {
426 int rc = WinSetAccelTable (hab, haccel, hwndDlg);
427 }
428#endif
[51]429 WinSetActiveWindow( HWND_DESKTOP, hwndDlg );
[2]430#ifdef _DOLOGDEBUG_
431 LogDebug( "Dialog: checkpoint 7" );
432#endif
433
434 WinProcessDlg (hwndDlg);
435#ifdef _DOLOGDEBUG_
436 LogDebug( "Dialog: checkpoint 7.5" );
437#endif
438 WinDestroyWindow (hwndDlg);
439#ifdef _DOLOGDEBUG_
440 LogDebug( "Dialog: checkpoint 8" );
441#endif
[41]442#ifndef _QUIET_
[2]443 // it ain't the best way to do it, but ...
444 SetIdlePriority(QueryFlag(SEI_IDLEPRIORITY));
[41]445#endif
[2]446 for (i = 0; i < COUNT_PAGES; i++)
447 hwndPage[i] = NULL;
448
449 hwndDlg = NULLHANDLE;
450#ifdef _DOLOGDEBUG_
451 LogDebug( "Dialog: checkpoint 9" );
452#endif
453 return TRUE;
454}
455
[94]456
[2]457// ** DialogProcedure ***************************************************** /*FOLD00*/
458
[94]459MRESULT EXPENTRY SETTINGS :: DialogProcedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[2]460{
461 static PSETTINGS pset = NULL;
462
463#ifdef _DOLOGDEBUG_
464 LogDebug( "DialogProcedure:Message 0x%04x", msg );
465#endif
466
467 switch (msg)
468 {
469 case WM_INITDLG:
[149]470 {
[2]471#ifdef _DOLOGDEBUG_
472 LogDebug( "DialogProcedure: start WM_INITDLG" );
473#endif
474 pset = PSETTINGS (mp2);
475#ifdef _DOLOGDEBUG_
476 LogDebug( "DialogProcedure: end WM_INITDLG" );
477#endif
[94]478 CHAR ucFont[FACESIZE];
[115]479
[149]480 //if (pset->GetLangID() == CZ || pset->GetLangID() == RU || pset->GetLangID() == PL) {
[94]481 UniChar target[300];
482 CHAR ucLangStr[300];
483 UconvObject uconv_object866 = NULL;
484 UconvObject uconv_object852 = NULL;
485 UconvObject uconv_object1207 = NULL;
486 UconvObject uconv_object850 = NULL;
487 HAB hab;
[149]488 //CHAR ucFont[FACESIZE];
[94]489
490 UniCreateUconvObject((UniChar *)L"IBM-852", &uconv_object852);
491 UniCreateUconvObject((UniChar *)L"IBM-850", &uconv_object850);
492 UniCreateUconvObject((UniChar *)L"IBM-866", &uconv_object866);
493 UniCreateUconvObject((UniChar *)L"IBM-1207", &uconv_object1207);
[148]494
495 WinLoadString(hab, g_hmod, IDS_OK, sizeof(ucLangStr), ucLangStr);
496 if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
497
498 UniStrToUcs( uconv_object852, target, ucLangStr, 299);
499 }
500 else if (pset->GetLangID() == RU)
501 UniStrToUcs( uconv_object866, target, ucLangStr, 299);
502 else {
503 UniStrToUcs( uconv_object850, target, ucLangStr, 299);
504 }
505 UniStrFromUcs( uconv_object1207, ucLangStr, target, 300);
506 WinSetDlgItemText(hwnd, WID_PB_OK, ucLangStr);
507
[94]508 WinLoadString(hab, g_hmod, IDS_UNDO, sizeof(ucLangStr), ucLangStr);
509 if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
510
511 UniStrToUcs( uconv_object852, target, ucLangStr, 299);
512 }
513 else if (pset->GetLangID() == RU)
514 UniStrToUcs( uconv_object866, target, ucLangStr, 299);
515 else {
516 UniStrToUcs( uconv_object850, target, ucLangStr, 299);
517 }
518 UniStrFromUcs( uconv_object1207, ucLangStr, target, 300);
519 WinSetDlgItemText(hwnd, WID_PB_UNDO, ucLangStr);
520 WinLoadString(hab, g_hmod, IDS_HELP, sizeof(ucLangStr), ucLangStr);
521
522 if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
523
524 UniStrToUcs( uconv_object852, target, ucLangStr, 299);
525 }
526 else if (pset->GetLangID() == RU)
527 UniStrToUcs( uconv_object866, target, ucLangStr, 299);
528 else {
529 UniStrToUcs( uconv_object850, target, ucLangStr, 299);
530 }
531 UniStrFromUcs( uconv_object1207, ucLangStr, target, 300);
532 WinSetDlgItemText(hwnd, WID_PB_HELP, ucLangStr);
533 if (uconv_object866)
534 UniFreeUconvObject(uconv_object866);
535 if (uconv_object852)
536 UniFreeUconvObject(uconv_object852);
537 if (uconv_object850)
538 UniFreeUconvObject(uconv_object850);
539 if (uconv_object1207)
540 UniFreeUconvObject(uconv_object1207);
[115]541 HMQ hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
542 WinSetCp(hmq, 1207);
[149]543 if (pset->GetLangID() == CZ || pset->GetLangID() == RU || pset->GetLangID() == PL) {
544 strcpy(ucFont, "9.Times New Roman MT 30");
545 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
546 }
547 //}
548 else if (g_installer) {
549 strcpy(ucFont, "9.WarpSans");
550 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
551 }
552 return MRESULT (FALSE);
[94]553 }
[2]554 case WM_COMMAND:
555 switch (SHORT1FROMMP (mp1))
556 {
[115]557#if 1
558 case WID_PB_HELP:{
559 HWND hwndPage;
560 USHORT usDlgId;
561 ULONG ulPageId =
562 (ULONG) WinSendMsg(WinWindowFromID(hwnd, WID_NB_SETTINGS),
563 BKM_QUERYPAGEID, 0, MPFROM2SHORT(BKA_TOP,
564 0));
565 hwndPage =
566 LONGFROMMP(WinSendMsg
567 (WinWindowFromID(hwnd, WID_NB_SETTINGS),
568 BKM_QUERYPAGEWINDOWHWND, MPFROMLONG(ulPageId),
569 0));
570 usDlgId = WinQueryWindowUShort(hwndPage, QWS_ID);
571
572 HMQ hmq;
573 BOOL bUniCodeFont = FALSE;
574 CHAR ucFont[FACESIZE];
575
576 if (pset->GetLangID() == RU) {
577 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
578 WinSetCp(hmq, 866);
579 bUniCodeFont = TRUE;
580 }
581 else if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
582 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
583 WinSetCp(hmq, 852);
584 bUniCodeFont = TRUE;
585 }
586 else {
587 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
588 WinSetCp(hmq, 850);
589 }
590 if (usDlgId == ID_DLG_SETTINGSPAGE0)
591 g_phelp->DisplayPanel(2);
592 else if (usDlgId == ID_DLG_SETTINGSPAGE1)
593 g_phelp->DisplayPanel(2210);
594#ifdef _QUIET_
595 else if (usDlgId == ID_DLG_SETTINGSPAGE2 && (pset->GetLangID() != IT &&
596 pset->GetLangID() != BR))
597 g_phelp->DisplayPanel(2235);
598#else
599 else if (usDlgId == ID_DLG_SETTINGSPAGE2)
600 g_phelp->DisplayPanel(3);
601#endif
602 else if (usDlgId == ID_DLG_SETTINGSPAGE3)
603 g_phelp->DisplayPanel(2230);
604 else if (usDlgId == ID_DLG_SETTINGSPAGE4)
605 g_phelp->DisplayPanel(2240);
606 else
607 g_phelp->DisplayPanel(4);
608 break;
609 }
610#endif
[2]611 case WID_PB_OK:
612#ifdef _DOLOGDEBUG_
613 LogDebug( "DialogProcedure: start WID_PB_OK" );
614#endif
[27]615 saveum = TRUE;
[2]616 WinSendMsg (hwnd, WM_CLOSE, 0,0);
617#ifdef _DOLOGDEBUG_
618 LogDebug( "DialogProcedure: end WID_PB_OK" );
619#endif
620 break;
621
622 case WID_PB_UNDO:
623 {
624 ULONG id = (ULONG)
625 WinSendDlgItemMsg (hwnd, WID_NB_SETTINGS,
626 BKM_QUERYPAGEID, 0,
627 MPFROM2SHORT (BKA_TOP, 0));
628 if (id)
629 {
630 HWND hwndPage = (HWND)
631 WinSendDlgItemMsg (hwnd, WID_NB_SETTINGS,
632 BKM_QUERYPAGEWINDOWHWND,
633 MPFROMLONG (id), 0);
[27]634 // Make mp1 1 for default use it to select setting on pages
[2]635 WinSendMsg (hwndPage, UM_SETTINGS2DIALOG, 0,0);
636 }
637 }
638 break;
[125]639#ifndef _QUIET_
[51]640 case WID_PB_ABOUT:
641 AboutBox (hwnd);
642 break;
[125]643#endif
[2]644 case DID_CANCEL:
645 {
646 // Undo stuff on all notebook pages:
647 HWND hwndPage;
648
649 // Get ID of first notebook page.
650 ULONG id =
651 ULONG( WinSendDlgItemMsg( hwnd, WID_NB_SETTINGS,
652 BKM_QUERYPAGEID, 0,
653 MPFROM2SHORT( BKA_FIRST, 0 ) ) );
654 if( id ) {
655 hwndPage =
656 HWND( WinSendDlgItemMsg( hwnd, WID_NB_SETTINGS,
657 BKM_QUERYPAGEWINDOWHWND,
658 MPFROMLONG( id ), 0 ) );
659 WinSendMsg( hwndPage, UM_SETTINGS2DIALOG, 0,0 );
660 }
661
662 while( id ) {
663 // Get ID of next notebook page.
664 if( ( id =
665 ULONG( WinSendDlgItemMsg( hwnd, WID_NB_SETTINGS,
666 BKM_QUERYPAGEID,
667 MPFROMLONG( id ),
668 MPFROM2SHORT( BKA_NEXT, 0 )
669 ) ) ) ) {
670 hwndPage =
671 HWND( WinSendDlgItemMsg( hwnd, WID_NB_SETTINGS,
672 BKM_QUERYPAGEWINDOWHWND,
673 MPFROMLONG( id ), 0 ) );
674 WinSendMsg( hwndPage, UM_SETTINGS2DIALOG, 0,0 );
675 }
676 }
677 WinSendMsg( hwnd, WM_CLOSE, 0,0 );
678 }
679 break;
680 }
681 return MRESULT (FALSE);
682
683#ifdef _DOLOGDEBUG_
684 case WM_DESTROY:
685 LogDebug( "DialogProcedure: WM_DESTROY" );
686 return MRESULT (FALSE);
687#endif
688
689 case WM_CLOSE:
690#ifdef _DOLOGDEBUG_
691 LogDebug( "DialogProcedure: WM_CLOSE" );
692#endif
693 case WM_QUIT:
694#ifdef _DOLOGDEBUG_
695 LogDebug( "DialogProcedure: WM_QUIT" );
696#endif
697 case WM_SAVEAPPLICATION:
698#ifdef _DOLOGDEBUG_
699 LogDebug( "DialogProcedure: WM_SAVEAPPLICATION" );
700#endif
701#ifdef _DOLOGDEBUG_
702 LogDebug( "DialogProcedure: start WM_CLOSE (or WM_QUIT, WM_SAVEAPPLICATION)" );
703#endif
704 for (USHORT i = 0; i < COUNT_PAGES; i++)
705 WinSendMsg (pset->hwndPage[i], UM_ADJUST, 0,0);
706#ifdef _DOLOGDEBUG_
707 LogDebug( "DialogProcedure: end WM_CLOSE (or WM_QUIT, WM_SAVEAPPLICATION)" );
708#endif
709 WinDismissDlg( hwnd, 0L );
710 return MRESULT (FALSE);
711 }
712
713#ifdef _DOLOGDEBUG_
714 LogDebug( "DialogProcedure:WinDefDlgProc->0x%04x", msg );
715#endif
716 return WinDefDlgProc (hwnd, msg, mp1, mp2);
717}
718
[11]719// ** Page1Procedure ****************************************************** /*FOLD00*/
[2]720
[94]721MRESULT EXPENTRY SETTINGS :: Page1Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[2]722{
723 static PSETTINGS pset = NULL;
724
725 switch (msg)
726 {
727 case WM_INITDLG: {
728#ifdef _DOLOGDEBUG_
729 LogDebug( "Page1Procedure: start WM_INITDLG" );
730#endif
731 ULONG ul;
732 pset = PSETTINGS (mp2);
733 for( int i = 0; i < BMF_INVALID; i++ ) {
734 if( pset->ifi[ i ].available ) {
735 ul = WinInsertLboxItem( WinWindowFromID( hwnd, WID_LB_FILEFORMAT ),
736 LIT_END, pset->ifi[ i ].label );
737 WinSendMsg( WinWindowFromID( hwnd, WID_LB_FILEFORMAT ),
738 LM_SETITEMHANDLE, MPFROMLONG(ul), MPFROMP( i ) );
739 }
740 }
[94]741 HMQ hmq;
[99]742 BOOL bUniCodeFont = FALSE;
[94]743 CHAR ucFont[FACESIZE];
744
745 if (pset->GetLangID() == RU) {
746 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
747 WinSetCp(hmq, 866);
748 bUniCodeFont = TRUE;
749 }
750 else if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
751 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
752 WinSetCp(hmq, 852);
753 bUniCodeFont = TRUE;
754 }
755 else {
756 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
757 WinSetCp(hmq, 850);
758 }
759
760 if (bUniCodeFont) {
[99]761 strcpy(ucFont, "9.Times New Roman MT 30");
[94]762 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
763 }
[115]764 else if (g_installer) {
[99]765 strcpy(ucFont, "9.WarpSans");
[94]766 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
[115]767 }
[94]768
[2]769#ifdef _DOLOGDEBUG_
770 LogDebug( "Page1Procedure: end WM_INITDLG" );
771#endif
772 return MRESULT (FALSE);
773 }
774
775 case WM_COMMAND:
776 if( SHORT1FROMMP( mp1 ) == DID_CANCEL )
777 WinPostMsg( g_hwndSettingsDialog, msg, mp1, mp2 );
778 return MRESULT( FALSE );
779
780 case UM_SETTINGS2DIALOG: {
781#ifdef _DOLOGDEBUG_
782 LogDebug( "Page1Procedure: start UM_SETTINGS2DIALOG" );
783#endif
784 // set num save dir name
785 WinSendDlgItemMsg (hwnd, WID_E_NUMSAVEDIR, EM_SETTEXTLIMIT,
786 MPARAM (_MAX_PATH-1), (MPARAM)0);
787 WinSetDlgItemText (hwnd, WID_E_NUMSAVEDIR,
788 pset->QueryNumSaveDir ());
789 WinSendDlgItemMsg (hwnd, WID_E_NUMSAVEDIR, EM_SETSEL,
790 MPFROM2SHORT (0, _MAX_PATH), (MPARAM)0);
791
792 // set force file name
793 WinSendDlgItemMsg (hwnd, WID_E_FORCESAVEFILE, EM_SETTEXTLIMIT,
794 MPARAM (_MAX_PATH-1), (MPARAM)0);
795 WinSetDlgItemText (hwnd, WID_E_FORCESAVEFILE,
796 pset->QueryForceSaveFile ());
797 WinSendDlgItemMsg (hwnd, WID_E_FORCESAVEFILE, EM_SETSEL,
798 MPFROM2SHORT (0, _MAX_PATH), (MPARAM)0);
799
800 // Select the appropriate entry in the fileformat-listbox.
801 HWND hwndLB = WinWindowFromID( hwnd, WID_LB_FILEFORMAT );
802 ULONG c, i;
803
804 c = WinQueryLboxCount( hwndLB );
805 for( i = 0; i < c; i++ )
806 {
807 ULONG type = ULONG( WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT,
808 LM_QUERYITEMHANDLE,
809 MPFROMLONG(i), NULL ) );
810 if( type == ULONG( pset->QueryFileFormat() ) )
811 break;
812 }
813 if( i < c )
814 WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT, LM_SELECTITEM,
815 MPFROMSHORT(i), MPFROMSHORT(TRUE) );
816 else
817 WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT, LM_SELECTITEM,
818 MPFROMSHORT(0), MPFROMSHORT(TRUE) );
[30]819#ifdef _QUIET_
[27]820 // set play sound button
821 pset->AdjustButton (hwnd, WID_CB_DOSOUND,
822 pset->DoSound ());
823#endif
[2]824 // Select appropriate radiobutton for save style.
825 switch (pset->QueryFileSaveStyle ())
826 {
827 case FSS_NUMFILES:
828 WinSendDlgItemMsg (hwnd, WID_RB_FSSNUMFILES, BM_CLICK,
829 MPFROMSHORT(TRUE), 0);
830 AdjustSaveTypeButtons (FALSE);
831 break;
832
833 case FSS_FORCEFILE:
834 WinSendDlgItemMsg (hwnd, WID_RB_FSSFORCEFILE, BM_CLICK,
835 MPFROMSHORT(TRUE), 0);
836 AdjustSaveTypeButtons (TRUE);
837 break;
838
839 default:
840 WinSendDlgItemMsg (hwnd, WID_RB_FSSPROMPT, BM_CLICK,
841 MPFROMSHORT(TRUE), 0);
842 AdjustSaveTypeButtons (FALSE);
843 break;
844 }
845#ifdef _DOLOGDEBUG_
846 LogDebug( "Page1Procedure: end UM_SETTINGS2DIALOG" );
847#endif
848 return MRESULT (FALSE);
849 }
850
851 case UM_ADJUST:
852 {
853#ifdef _DOLOGDEBUG_
854 LogDebug( "Page1Procedure: start UM_ADJUST" );
855#endif
856 // get file save style
857 if (WinSendMsg (WinWindowFromID (hwnd, WID_RB_FSSNUMFILES),
858 BM_QUERYCHECK, 0,0))
859 pset->SetFileSaveStyle (FSS_NUMFILES);
860 else if (WinSendMsg (WinWindowFromID (hwnd, WID_RB_FSSFORCEFILE),
861 BM_QUERYCHECK, 0,0))
862 pset->SetFileSaveStyle (FSS_FORCEFILE);
863 else
864 pset->SetFileSaveStyle (FSS_PROMPT);
[30]865#ifdef _QUIET_
[27]866 pset->DoSound(WinQueryButtonCheckstate
867 (hwnd, WID_CB_DOSOUND));
868#endif
[2]869#ifdef _DOLOGDEBUG_
870 LogDebug( "Page1Procedure: checkpoint 1" );
871#endif
872
873 // Get file format.
874 ULONG ul = USHORT( WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT,
875 LM_QUERYSELECTION,
876 MPFROMLONG( LIT_FIRST ),
877 0L ) );
878 ul = ULONG( WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT,
879 LM_QUERYITEMHANDLE,
880 MPFROMLONG( ul ), NULL ) );
881 pset->SetFileFormat( SHORT( ul ) );
[11]882
883 pset->SetSaveFile(AddExtensionToFilename(pset->QuerySaveFile()));
884
[2]885#ifdef _DOLOGDEBUG_
886 LogDebug( "Page1Procedure: checkpoint 2" );
887#endif
888
889 // num save dir file name
890 CHAR psz[_MAX_PATH];
891 WinQueryDlgItemText (hwnd, WID_E_NUMSAVEDIR, _MAX_PATH, psz);
892 pset->SetNumSaveDir (psz);
893
894 // force file name
895 WinQueryDlgItemText (hwnd, WID_E_FORCESAVEFILE, _MAX_PATH, psz);
896 pset->SetForceSaveFile (psz);
897
898 AdjustSaveTypeButtons
899 (BOOL (pset->QueryFileSaveStyle () == FSS_FORCEFILE));
[27]900 pset->saveStyle = pset->QuerySaveStyle ();
901 pset->pNumSaveDir = pset->QueryNumSaveDir ();
902 pset->pForceSaveFile = pset->QueryForceSaveFile();
903
904 if (saveum)
905 pset->Save ();
[2]906#ifdef _DOLOGDEBUG_
907 LogDebug( "Page1Procedure: end UM_ADJUST" );
908#endif
909 }
910 break;
911
912 case WM_CONTROL:
913 switch (SHORT1FROMMP (mp1))
914 {
915 case WID_RB_FSSFORCEFILE:
916 AdjustSaveTypeButtons (TRUE);
917 break;
918
919 case WID_RB_FSSPROMPT:
920 case WID_RB_FSSNUMFILES:
921 AdjustSaveTypeButtons (FALSE);
922 break;
923 }
924 return MRESULT (FALSE);
925 }
926
927 return WinDefDlgProc (hwnd, msg, mp1, mp2);
928}
929
[27]930// ** Page2Procedure ****************************************************** /*FOLD00*/
[2]931
[94]932MRESULT EXPENTRY SETTINGS :: Page2Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[2]933{
934 static PSETTINGS pset = NULL;
935
936 switch (msg)
937 {
[99]938 case WM_INITDLG: {
[2]939#ifdef _DOLOGDEBUG_
940 LogDebug( "Page1Procedure: start WM_INITDLG" );
941#endif
942 pset = PSETTINGS (mp2);
943#ifdef _DOLOGDEBUG_
944 LogDebug( "Page1Procedure: end WM_INITDLG" );
945#endif
[94]946 HMQ hmq;
[99]947 BOOL bUniCodeFont = FALSE;
[94]948 CHAR ucFont[FACESIZE];
949
950 if (pset->GetLangID() == RU) {
951 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
952 WinSetCp(hmq, 866);
953 bUniCodeFont = TRUE;
954 }
955 else if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
956 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
957 WinSetCp(hmq, 852);
958 bUniCodeFont = TRUE;
959 }
960 else {
961 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
962 WinSetCp(hmq, 850);
963 }
964
965 if (bUniCodeFont) {
[99]966 strcpy(ucFont, "9.Times New Roman MT 30");
[94]967 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
968 }
[115]969 else if (g_installer) {
[99]970 strcpy(ucFont, "9.WarpSans");
971 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
[115]972 }
[2]973 return MRESULT (FALSE);
[99]974 }
[2]975 case WM_COMMAND:
[51]976
977 if( SHORT1FROMMP( mp1 ) == WID_PB_OK) {
978 saveum = TRUE;
979 WinSendMsg ( g_hwndSettingsDialog, WM_CLOSE, 0,0);
980 }
[2]981 if( SHORT1FROMMP( mp1 ) == DID_CANCEL )
982 WinPostMsg( g_hwndSettingsDialog, msg, mp1, mp2 );
983 return MRESULT( FALSE );
984
985 case UM_SETTINGS2DIALOG:
986#ifdef _DOLOGDEBUG_
987 LogDebug( "Page2Procedure: start UM_SETTINGS2DIALOG" );
988#endif
[89]989#ifndef _QUIET_
[2]990 // set state of checkbuttons
991 pset->AdjustButton (hwnd, WID_CB_SSWENABLE,
992 pset->SnapshotWindow ());
993 pset->AdjustButton (hwnd, WID_CB_SSWHIDE,
994 pset->SSWHide ());
995 pset->AdjustButton (hwnd, WID_CB_SSWALWAYSONTOP,
996 pset->SSWAlwaysOnTop ());
[89]997#else
[27]998 pset->AdjustButton (hwnd, WID_CB_SERIALCAPTURE,
999 pset->SerialCapture ());
1000 pset->AdjustButton (hwnd, WID_CB_DELAYCOUNTDOWN,
1001 pset->DelayCountdown ());
[51]1002 pset->AdjustButton (hwnd, WID_CB_DELAYEDCAPTURE,
1003 pset->DelayedCapture ());
[2]1004
[27]1005 // init delay time sb
1006 WinSendDlgItemMsg (hwnd, WID_SB_DELAYTIME, SPBM_SETLIMITS,
1007 MPFROMLONG (65536), MPFROMLONG (1));
1008 WinSendDlgItemMsg (hwnd, WID_SB_DELAYTIME, SPBM_SETCURRENTVALUE,
1009 MPFROMLONG (pset->QueryDelayTime ()), 0);
1010
1011 // init serial time sb
1012 WinSendDlgItemMsg (hwnd, WID_SB_SERIALTIME, SPBM_SETLIMITS,
1013 MPFROMLONG (65536), MPFROMLONG (1));
1014 WinSendDlgItemMsg (hwnd, WID_SB_SERIALTIME, SPBM_SETCURRENTVALUE,
1015 MPFROMLONG (pset->QuerySerialTime ()), 0);
1016#endif
[2]1017 switch (pset->QuerySSWCaptureType ())
1018 {
1019 case CAP_WINDOWINT:
1020 WinSendDlgItemMsg (hwnd, WID_SSWWINDOWINT, BM_CLICK,
1021 MPFROMSHORT(TRUE), 0);
1022 break;
1023 case CAP_SCREENREGION:
1024 WinSendDlgItemMsg (hwnd, WID_SSWSCREENREGION, BM_CLICK,
1025 MPFROMSHORT(TRUE), 0);
1026 break;
1027 case CAP_WINDOW:
1028 WinSendDlgItemMsg (hwnd, WID_SSWWINDOW, BM_CLICK,
1029 MPFROMSHORT(TRUE), 0);
1030 break;
1031 default:
1032 WinSendDlgItemMsg (hwnd, WID_SSWSCREEN, BM_CLICK,
1033 MPFROMSHORT(TRUE), 0);
1034 break;
1035 }
[89]1036#ifndef _QUIET_
[2]1037 // show or hide snapshot window
1038 if (! WinSendDlgItemMsg (hwnd, WID_CB_SSWENABLE,
1039 BM_QUERYCHECK, 0, 0))
1040 WinShowWindow (hwndSnapshot, FALSE);
1041 else
1042 WinShowWindow (hwndSnapshot, TRUE);
[89]1043#endif
[2]1044#ifdef _DOLOGDEBUG_
1045 LogDebug( "Page1Procedure: end UM_SETTINGS2DIALOG" );
1046#endif
1047 return MRESULT (FALSE);
1048
1049 case UM_ADJUST:
1050#ifdef _DOLOGDEBUG_
1051 LogDebug( "Page2Procedure: start UM_ADJUST" );
1052#endif
[30]1053#ifndef _QUIET_
[2]1054 // query state of checkbuttons and set flags
1055 pset->SSWHide(WinQueryButtonCheckstate(hwnd, WID_CB_SSWHIDE));
1056#ifdef _DOLOGDEBUG_
1057 LogDebug( "Page2Procedure: checkpoint 1" );
1058#endif
1059 pset->SnapshotWindow(WinQueryButtonCheckstate(hwnd, WID_CB_SSWENABLE));
1060 pset->SSWAlwaysOnTop(WinQueryButtonCheckstate(hwnd,
1061 WID_CB_SSWALWAYSONTOP));
1062#ifdef _DOLOGDEBUG_
1063 LogDebug( "Page2Procedure: checkpoint 2" );
1064#endif
[27]1065#else
1066 // query state of checkbuttons and set flags
1067 pset->SerialCapture(WinQueryButtonCheckstate
1068 (hwnd, WID_CB_SERIALCAPTURE));
1069#ifdef _DOLOGDEBUG_
1070 LogDebug( "Page3Procedure: checkpoint 1" );
1071#endif
1072 pset->DelayCountdown(WinQueryButtonCheckstate
1073 (hwnd, WID_CB_DELAYCOUNTDOWN));
[51]1074 pset->DelayedCapture (WinQueryButtonCheckstate
1075 (hwnd,WID_CB_DELAYEDCAPTURE));
[27]1076#endif
[2]1077 // get ssw capture type
1078 if (WinSendMsg (WinWindowFromID (hwnd, WID_SSWSCREENREGION),
1079 BM_QUERYCHECK, 0,0))
1080 pset->SetSSWCaptureType (CAP_SCREENREGION);
1081 else if (WinSendMsg (WinWindowFromID (hwnd, WID_SSWWINDOW),
1082 BM_QUERYCHECK, 0,0))
1083 pset->SetSSWCaptureType (CAP_WINDOW);
1084 else if (WinSendMsg (WinWindowFromID (hwnd, WID_SSWWINDOWINT),
1085 BM_QUERYCHECK, 0,0))
1086 pset->SetSSWCaptureType (CAP_WINDOWINT);
1087 else
1088 pset->SetSSWCaptureType (CAP_SCREEN);
[30]1089#ifdef _QUIET_
[27]1090 // delay time
1091 ULONG ul;
1092 if (! BOOL (WinSendDlgItemMsg (hwnd, WID_SB_DELAYTIME,
1093 SPBM_QUERYVALUE,
1094 MPFROMP (&ul),
1095 MPFROM2SHORT (0, 0))))
1096 ul = 5L;
1097 pset->SetDelayTime (ul);
[2]1098#ifdef _DOLOGDEBUG_
[27]1099 LogDebug( "Page3Procedure: checkpoint 3" );
1100#endif
1101
1102 // serial time
1103 if (! BOOL (WinSendDlgItemMsg (hwnd, WID_SB_SERIALTIME,
1104 SPBM_QUERYVALUE,
1105 MPFROMP (&ul),
1106 MPFROM2SHORT (0, 0))))
1107 ul = 10L;
1108 pset->SetSerialTime (ul);
1109 pset->bSerialCapture = pset->SerialCapture ();
1110#endif
1111 if (saveum)
1112 pset->Save ();
1113#ifdef _DOLOGDEBUG_
[2]1114 LogDebug( "Page2Procedure: end UM_ADJUST" );
1115#endif
1116 break;
1117
1118 case WM_CONTROL:
1119 switch (SHORT1FROMMP (mp1))
1120 {
[89]1121#ifndef _QUIET_
[2]1122 case WID_CB_SSWENABLE:
1123 if (! WinSendDlgItemMsg (hwnd, WID_CB_SSWENABLE,
1124 BM_QUERYCHECK, 0, 0))
1125 WinShowWindow (hwndSnapshot, FALSE);
1126 else
1127 WinShowWindow (hwndSnapshot, TRUE);
1128 break;
[89]1129#endif
[51]1130 case WID_CB_DELAYEDCAPTURE:
1131
1132 WinSendDlgItemMsg (g_hwndPage0, WID_CB_DELAYEDCAPTURE, BM_SETCHECK,
1133 MPFROMLONG (WinQueryButtonCheckstate
1134 (hwnd,WID_CB_DELAYEDCAPTURE)),
1135 MPFROMLONG (0));
1136 WinSendDlgItemMsg (WinWindowFromID(hwndFrame, FID_CLIENT),
1137 WID_CB_DELAYEDCAPTURE, BM_SETCHECK,
1138 MPFROMLONG (WinQueryButtonCheckstate
1139 (hwnd,WID_CB_DELAYEDCAPTURE)),
1140 MPFROMLONG (0));
1141 break;
[2]1142 }
1143 return MRESULT (FALSE);
1144 }
1145
1146 return WinDefDlgProc (hwnd, msg, mp1, mp2);
1147}
1148
1149// ** Page3Procedure ****************************************************** /*FOLD00*/
1150
[94]1151MRESULT EXPENTRY SETTINGS :: Page3Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[2]1152{
1153 static PSETTINGS pset = NULL;
1154
1155 switch (msg)
1156 {
[99]1157 case WM_INITDLG: {
[2]1158#ifdef _DOLOGDEBUG_
1159 LogDebug( "Page3Procedure: start WM_INITDLG" );
1160#endif
1161 pset = PSETTINGS (mp2);
1162#ifdef _DOLOGDEBUG_
1163 LogDebug( "Page3Procedure: end WM_INITDLG" );
1164#endif
[94]1165 HMQ hmq;
[99]1166 BOOL bUniCodeFont = FALSE;
[94]1167 CHAR ucFont[FACESIZE];
1168
1169 if (pset->GetLangID() == RU) {
1170 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
1171 WinSetCp(hmq, 866);
1172 bUniCodeFont = TRUE;
1173 }
1174 else if (pset->GetLangID() == CZ || pset->GetLangID() == PL) {
1175 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
1176 WinSetCp(hmq, 852);
1177 bUniCodeFont = TRUE;
1178 }
1179 else {
1180 hmq = WinQueryWindowULong( hwnd, QWL_HMQ);
1181 WinSetCp(hmq, 850);
1182 }
1183
1184 if (bUniCodeFont) {
[99]1185 strcpy(ucFont, "9.Times New Roman MT 30");
[94]1186 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
1187 }
[2]1188 return MRESULT (FALSE);
[99]1189 }
[2]1190
1191 case WM_COMMAND:
1192 if( SHORT1FROMMP( mp1 ) == DID_CANCEL )
1193 WinPostMsg( g_hwndSettingsDialog, msg, mp1, mp2 );
1194 return MRESULT( FALSE );
1195
1196 case UM_SETTINGS2DIALOG:
1197#ifdef _DOLOGDEBUG_
1198 LogDebug( "Page3Procedure: start UM_SETTINGS2DIALOG" );
1199#endif
1200 // set state of checkbuttons
1201 pset->AdjustButton (hwnd, WID_CB_SERIALCAPTURE,
1202 pset->SerialCapture ());
1203 pset->AdjustButton (hwnd, WID_CB_DELAYCOUNTDOWN,
1204 pset->DelayCountdown ());
1205 pset->AdjustButton (hwnd, WID_CB_DOSOUND,
1206 pset->DoSound ());
1207 pset->AdjustButton (hwnd, WID_CB_IDLEPRIORITY,
1208 pset->QueryFlag(SEI_IDLEPRIORITY));
1209
1210 // init delay time sb
1211 WinSendDlgItemMsg (hwnd, WID_SB_DELAYTIME, SPBM_SETLIMITS,
1212 MPFROMLONG (65536), MPFROMLONG (1));
1213 WinSendDlgItemMsg (hwnd, WID_SB_DELAYTIME, SPBM_SETCURRENTVALUE,
1214 MPFROMLONG (pset->QueryDelayTime ()), 0);
1215
1216 // init serial time sb
1217 WinSendDlgItemMsg (hwnd, WID_SB_SERIALTIME, SPBM_SETLIMITS,
1218 MPFROMLONG (65536), MPFROMLONG (1));
1219 WinSendDlgItemMsg (hwnd, WID_SB_SERIALTIME, SPBM_SETCURRENTVALUE,
1220 MPFROMLONG (pset->QuerySerialTime ()), 0);
1221#ifdef _DOLOGDEBUG_
1222 LogDebug( "Page3Procedure: end UM_SETTINGS2DIALOG" );
1223#endif
1224 return MRESULT (FALSE);
1225
1226 case UM_ADJUST:
1227 {
1228#ifdef _DOLOGDEBUG_
1229 LogDebug( "Page3Procedure: start UM_ADJUST" );
1230#endif
1231 // query state of checkbuttons and set flags
1232 pset->SerialCapture(WinQueryButtonCheckstate
1233 (hwnd, WID_CB_SERIALCAPTURE));
1234#ifdef _DOLOGDEBUG_
1235 LogDebug( "Page3Procedure: checkpoint 1" );
1236#endif
1237 pset->DelayCountdown(WinQueryButtonCheckstate
1238 (hwnd, WID_CB_DELAYCOUNTDOWN));
1239 pset->DoSound(WinQueryButtonCheckstate
1240 (hwnd, WID_CB_DOSOUND));
1241 pset->SetFlag(SEI_IDLEPRIORITY, WinQueryButtonCheckstate
1242 (hwnd, WID_CB_IDLEPRIORITY));
1243#ifdef _DOLOGDEBUG_
1244 LogDebug( "Page3Procedure: checkpoint 2" );
1245#endif
1246
1247 // delay time
1248 ULONG ul;
1249 if (! BOOL (WinSendDlgItemMsg (hwnd, WID_SB_DELAYTIME,
1250 SPBM_QUERYVALUE,
1251 MPFROMP (&ul),
1252 MPFROM2SHORT (0, 0))))
1253 ul = 5L;
1254 pset->SetDelayTime (ul);
1255#ifdef _DOLOGDEBUG_
1256 LogDebug( "Page3Procedure: checkpoint 3" );
1257#endif
1258
1259 // serial time
1260 if (! BOOL (WinSendDlgItemMsg (hwnd, WID_SB_SERIALTIME,
1261 SPBM_QUERYVALUE,
1262 MPFROMP (&ul),
1263 MPFROM2SHORT (0, 0))))
1264 ul = 10L;
1265 pset->SetSerialTime (ul);
[27]1266 pset->bSerialCapture = pset->SerialCapture ();
1267 pset->idleSetInIni = pset->QueryFlag(SEI_IDLEPRIORITY);
1268
1269 if (saveum)
1270 pset->Save ();
[2]1271#ifdef _DOLOGDEBUG_
1272 LogDebug( "Page3Procedure: end UM_ADJUST" );
1273#endif
1274 }
1275 break;
1276
1277 case WM_CONTROL:
1278 switch (SHORT1FROMMP (mp1))
1279 {
1280 case WID_CB_SERIALCAPTURE:
1281 {
1282 HWND hwndButton =
1283 WinWindowFromID (WinWindowFromID (hwndFrame, FID_CLIENT),
1284 WID_CB_DELAYEDCAPTURE);
1285 if (! WinSendDlgItemMsg (hwnd, WID_CB_SERIALCAPTURE,
1286 BM_QUERYCHECK, 0, 0))
1287 WinEnableWindow (hwndButton, TRUE);
1288 else
1289 WinEnableWindow (hwndButton, FALSE);
1290 }
1291 break;
1292 }
1293 return MRESULT (FALSE);
1294 }
1295
1296 return WinDefDlgProc (hwnd, msg, mp1, mp2);
1297}
1298
1299// ** Page4Procedure ****************************************************** /*FOLD00*/
1300
[94]1301MRESULT EXPENTRY SETTINGS :: Page4Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[2]1302{
1303 static PSETTINGS pset = NULL;
1304
1305 switch (msg)
1306 {
1307 case WM_INITDLG:
1308 {
1309#ifdef _DOLOGDEBUG_
1310 LogDebug( "Page4Procedure: start WM_INITDLG" );
1311#endif
1312 pset = PSETTINGS (mp2);
[115]1313
[94]1314 HMQ hmq = WinQueryWindowULong(hwnd /*WinWindowFromID(hwnd, ID_DLG_SETTINGSPAGE4)*/, QWL_HMQ);
1315 WinSetCp(hmq, 1207); // UPF-8 Unicode
1316 WinRemovePresParam(hwnd, PP_FONTNAMESIZE);
[125]1317#ifndef _QUIET_ //??
[2]1318 pset->GetLanguages(WinWindowFromID (hwnd, WID_LB_LANGUAGES));
[125]1319#endif
[2]1320#ifdef _DOLOGDEBUG_
1321 LogDebug( "Page4Procedure: WM_INITDLG: after GetLanguages()" );
1322#endif
[125]1323#ifndef _QUIET_
[2]1324 WinSendMsg (hwnd, UM_SETTINGS2DIALOG, 0,0);
1325
1326 if (pset->fAutoLanguage)
1327 WinEnableWindow (WinWindowFromID (hwnd, WID_ST_LANGNOTE),
1328 FALSE);
[125]1329#endif
[2]1330#ifdef _DOLOGDEBUG_
1331 LogDebug( "Page4Procedure: end WM_INITDLG" );
1332#endif
[94]1333
1334 UniChar target[300];
1335 CHAR ucLangStr[300];
1336 UconvObject uconv_object866 = NULL;
1337 UconvObject uconv_object860 = NULL;
1338 UconvObject uconv_object852 = NULL;
1339 UconvObject uconv_object1207 = NULL;
1340 UconvObject uconv_object850 = NULL;
1341 int result;
1342 int i;
1343 HAB hab;
1344 CHAR ucFont[FACESIZE];
1345
1346 UniCreateUconvObject((UniChar *)L"IBM-852", &uconv_object852);
1347 UniCreateUconvObject((UniChar *)L"IBM-850", &uconv_object850);
1348 UniCreateUconvObject((UniChar *)L"IBM-866", &uconv_object866);
1349
1350 UniCreateUconvObject((UniChar *)L"IBM-1207", &uconv_object1207);
1351 for (i = 0; i < WID_ST_END - 400; i++) {
1352 WinLoadString(hab, g_hmod, LANG_COPYRIGHT + i, sizeof(ucLangStr), ucLangStr);
1353 if (pset->GetLangID() == 420 ||
1354 pset->GetLangID() == PL) {
1355
1356 UniStrToUcs( uconv_object852, target, ucLangStr, 299);
1357 }
1358 else if (pset->GetLangID() == RU)
1359 UniStrToUcs( uconv_object866, target, ucLangStr, 299);
1360 else {
1361 UniStrToUcs( uconv_object850, target, ucLangStr, 299);
1362 }
1363 UniStrFromUcs( uconv_object1207, ucLangStr, target, 300);
1364 WinSetDlgItemText(hwnd, WID_ST_COPYRIGHT + i, ucLangStr);
1365 }
1366
1367 if (uconv_object866)
1368 UniFreeUconvObject(uconv_object866);
1369 if (uconv_object852)
1370 UniFreeUconvObject(uconv_object852);
1371 if (uconv_object850)
1372 UniFreeUconvObject(uconv_object850);
1373 if (uconv_object1207)
1374 UniFreeUconvObject(uconv_object1207);
[125]1375 CHAR *env, *p;
1376 env = getenv("OSDIR");
1377 p = env;
1378 p++;
[129]1379 if (!stricmp(p, ":\\sys") || !stricmp(p, ":\\ecs")) {
[125]1380 strcpy(ucFont, "9.Workplace Sans");
1381 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
1382 }
1383 else {
[99]1384 strcpy(ucFont, "9.Times New Roman MT 30");
[94]1385 WinSetPresParam(hwnd, PP_FONTNAMESIZE, strlen(ucFont) + 1, ucFont);
1386 }
1387 return MRESULT (FALSE);
[2]1388 }
1389
1390 case WM_COMMAND:
1391 if( SHORT1FROMMP( mp1 ) == DID_CANCEL )
1392 WinPostMsg( g_hwndSettingsDialog, msg, mp1, mp2 );
1393 return MRESULT( FALSE );
[125]1394#ifndef _QUIET_
[2]1395 case UM_SETTINGS2DIALOG:
1396 {
1397
1398#ifdef _DOLOGDEBUG_
1399 LogDebug( "Page4Procedure: start UM_SETTINGS2DIALOG" );
1400#endif
1401 // select the appropriate entry in the language-listbox
1402 CHAR ach[_MAX_FNAME];
1403 HWND hwndLB = WinWindowFromID (hwnd, WID_LB_LANGUAGES);
1404 ULONG c, i;
1405
1406 c = WinQueryLboxCount (hwndLB);
1407
1408 for (i = 0; i < c; i++)
1409 {
1410#ifdef _DOLOGDEBUG_
1411 LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: i.1 = %d", i );
1412#endif
1413 PSZ psz = PSZ(WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES,
1414 LM_QUERYITEMHANDLE,
1415 MPFROMLONG(i), NULL));
[115]1416
[2]1417 if (stricmp (pset->QueryString(SEI_LANGUAGE), psz) == 0)
1418 break;
1419 }
1420#ifdef _DOLOGDEBUG_
1421 LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: after loop 1" );
1422#endif
1423 if (i < c)
1424 WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_SELECTITEM,
1425 MPFROMSHORT (i), MPFROMSHORT (TRUE));
1426 else
1427 WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_SELECTITEM,
1428 MPFROMSHORT (0), MPFROMSHORT (TRUE));
1429#ifdef _DOLOGDEBUG_
1430 LogDebug( "Page4Procedure: end UM_SETTINGS2DIALOG" );
1431#endif
1432 }
1433 return MRESULT (FALSE);
[125]1434#endif
[2]1435 case WM_DESTROY:
[94]1436#ifndef _QUIET_
[2]1437 {
1438 CHAR ach[_MAX_FNAME];
[94]1439 BOOL fChanged = TRUE;
[2]1440
1441 ULONG ul = USHORT (WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES,
1442 LM_QUERYSELECTION,
1443 MPFROMLONG (LIT_FIRST), 0L));
1444 PSZ psz = PSZ(WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES,
1445 LM_QUERYITEMHANDLE,
1446 MPFROMLONG(ul), NULL));
[94]1447 if (stricmp (pset->QueryString(SEI_LANGUAGE), psz) == 0)
1448 fChanged = FALSE;
1449 else
1450 pset->SetString(SEI_LANGUAGE, psz);
[115]1451
[94]1452 if (fChanged) {
1453 if (!stricmp(psz, "gotreses") || !stricmp(psz, "goqreses"))
1454 strcpy(ach, "gotcha_es");
[115]1455 /*else if (!stricmp(psz, "gotresit") || !stricmp(psz, "goqresit"))
1456 strcpy(ach, "gotcha_it");*/
[94]1457 else
1458 strcpy(ach, "gotcha_en");
1459 pset->SetString (SEI_LANGUAGEHELP, ach);
1460 }
1461 if (saveum && fChanged) {
[27]1462 pset->Save ();
[94]1463#ifdef _QUIET_
1464 HINI hini = PrfOpenProfile (hab, "gotchaq.ini");
1465#else
1466 HINI hini = PrfOpenProfile (hab, "gotcha.ini");
1467#endif
1468 BOOL fLChanged = TRUE;
1469 PrfWriteProfileData(hini, "Language", "LangChangeRequested", &fLChanged, sizeof(BOOL));
1470 if (hini)
1471 PrfCloseProfile (hini);
1472 }
[2]1473 }
[94]1474#endif
[2]1475 return MRESULT (FALSE);
1476 }
1477
1478 return WinDefDlgProc (hwnd, msg, mp1, mp2);
1479}
1480
[27]1481// ** AdjustSaveTypeButtons *********************************************** /*FOLD00*/
[2]1482
1483VOID AdjustSaveTypeButtons (BOOL f)
1484{
1485 HWND hwndClient = WinWindowFromID (hwndFrame, FID_CLIENT);
1486
1487 // FIXME um, em, global variables :-$
1488 WinEnableWindow (WinWindowFromID (hwndClient, WID_RB_CLIPBOARD), !f);
1489 WinEnableWindow (WinWindowFromID (hwndClient, WID_RB_FILE), !f);
1490}
1491
[94]1492// ** QueryWindowData ***************************************************** /*FOLD00*/
[2]1493
1494VOID SETTINGS :: QueryWindowData (SWP *pswp, USHORT us[7], BOOL f)
1495{
1496 // FIXME puke, yukk, choke! get this flag thing away! do it better!
1497 // FIXME what is with US?
1498 if (f)
1499 memcpy (pswp, QueryBinary(SEI_SWPSSW), sizeof (SWP));
1500 else
1501 memcpy (pswp, QueryBinary(SEI_SWP), sizeof (SWP));
1502
1503 LONG cx, cy;
1504 cx = WinQuerySysValue (HWND_DESKTOP, SV_CXSCREEN);
1505 cy = WinQuerySysValue (HWND_DESKTOP, SV_CYSCREEN);
1506
1507 if (pswp->cx < 32)
1508 pswp->cx = 32;
1509 // bigger than screen?
1510 if (pswp->cx > cx)
1511 pswp->cx = cx;
1512 // partly outside of screen?
1513 if (pswp->x+pswp->cx >= cx)
1514 pswp->x = cx-pswp->cx;
1515 if (pswp->cy < 32)
1516 pswp->cy = 32;
1517 // bigger than screen?
1518 if (pswp->cy > cy)
1519 pswp->cy = cy;
1520 // partly outside of screen?
1521 if (pswp->y+pswp->cy >= cy)
1522 pswp->y = cy-pswp->cy;
1523}
1524
[11]1525// ** ReloadResources ***************************************************** /*FOLD00*/
[2]1526
1527BOOL Settings :: ReloadResources (PSZ psz)
1528{
1529 if (g_hmod)
1530 DosFreeModule(g_hmod);
1531
1532 APIRET rc;
1533
[27]1534 if ((rc = DosLoadModule(PSZ(NULL), 0, psz, &g_hmod)))
[2]1535 {
[129]1536 DisplayError("Error",
1537 "Could not (re)load resource module '%s' (return code %d). "
1538 "Make sure the DLL is in the LIBPATH. If this is the case, "
1539 "try deleting GOTCHA.INI and restart. If this fails, contact "
1540 "the author (ygk@qwest.net).", psz, rc);
[2]1541 exit(1);
1542 }
[94]1543 PVOID pv;
1544 INT Lang;
[2]1545
[94]1546 DosGetResource(g_hmod, RT_RCDATA, LANG_ID, &pv);
1547 Lang = atoi((PCHAR) pv);
1548 SetLangID(Lang);
[2]1549 ResourceString::Module(g_hmod);
[30]1550#ifdef _QUIET_
[27]1551 pszPageTab[0] = RSTR (IDS_MAINWIN);
[55]1552 pszPageTab[1] = RSTR (IDS_CAPTURE );
[41]1553 pszPageTab[2] = RSTR (IDS_PAGESAVE);
[27]1554 pszPageTab[3] = RSTR (IDS_PAGELANGUAGE);
1555#else
[2]1556 pszPageTab[0] = RSTR (IDS_PAGESAVE);
1557 pszPageTab[1] = RSTR (IDS_PAGESNAPSHOT);
[55]1558 pszPageTab[2] = RSTR (IDS_CAPTURE );
[2]1559 pszPageTab[3] = RSTR (IDS_PAGELANGUAGE);
[27]1560#endif
[2]1561 for( int i = 0; i < BMF_INVALID; i++ ) {
[11]1562 ifi[ i ].label = RSTR ( IDS_BMF_JPG+i ); }
[2]1563
1564 return TRUE;
1565}
1566
[27]1567// ** SelectLanguage ****************************************************** /*FOLD00*/
[125]1568#ifndef _QUIET_
[2]1569VOID Settings :: SelectLanguage (VOID)
1570{
1571 // set this to some default, as we must open the settings dialog for
1572 // selecting a language
[30]1573#ifdef _QUIET_
1574//#if 1
[27]1575 pszPageTab[0] = RSTR (IDS_MAINWIN);
[55]1576 pszPageTab[1] = RSTR (IDS_CAPTURE );
[41]1577 pszPageTab[2] = RSTR (IDS_PAGESAVE);
[27]1578 pszPageTab[3] = RSTR (IDS_PAGELANGUAGE);
1579#else
[2]1580 pszPageTab[0] = RSTR (IDS_PAGESAVE);
1581 pszPageTab[1] = RSTR (IDS_PAGESNAPSHOT);
[55]1582 pszPageTab[2] = RSTR (IDS_CAPTURE );
[2]1583 pszPageTab[3] = RSTR (IDS_PAGELANGUAGE);
[27]1584#endif
[2]1585 // bring up the "select language" settings page
1586 Dialog (TRUE);
1587}
[125]1588#endif
[2]1589
[11]1590// ** GetLanguages ******************************************************** /*FOLD00*/
[125]1591#ifndef _QUIET_ //??
[2]1592USHORT Settings :: GetLanguages (HWND hwnd)
1593{
1594 // find all dlls and add the names to the language list
1595 HDIR hdir;
1596 ULONG c, fl, ul;
1597 FILEFINDBUF3 findbuf;
1598 APIRET rc;
1599 PSZ psz;
1600 HMODULE hmod;
1601
1602 fl = FILE_NORMAL;
1603 hdir = HDIR_CREATE;
1604 c = 1;
[30]1605#ifdef _QUIET_
[37]1606 rc = DosFindFirst ("goqres*.dll", &hdir, fl, &findbuf,
[2]1607 sizeof (findbuf), &c, FIL_STANDARD);
[30]1608#else
[37]1609 rc = DosFindFirst ("gotres*.dll", &hdir, fl, &findbuf,
[30]1610 sizeof (findbuf), &c, FIL_STANDARD);
1611#endif
[2]1612 while (!rc)
1613 {
1614 // we don't want the extension
[11]1615 if ((psz = strchr (findbuf.achName, '.')))
[2]1616 *psz = '\0';
1617 // try opening the dll and read the version etc. data
1618 if ((rc = DosLoadModule(PSZ(NULL), 0, findbuf.achName, &hmod)) == NO_ERROR) {
1619 PVOID pv;
[94]1620 PVOID pl;
1621
[2]1622 if (DosGetResource(hmod, RT_RCDATA, DLL_ID, &pv) == NO_ERROR) {
[37]1623#ifdef _QUIET_
1624 if (strcmp(PSZ(pv), "Gotchaq!") == 0) {
1625#else
[2]1626 if (strcmp(PSZ(pv), "Gotcha!") == 0) {
[37]1627#endif
[94]1628 psz = PSZ(pv)+strlen(PSZ(pv)) + 3;
1629
1630 INT Lang;
1631
1632 DosGetResource(hmod, RT_RCDATA, LANG_ID, &pl);
1633 Lang = atoi((PCHAR) pl);
1634#if 1
1635 UniChar target[300];
1636 CHAR ucLangStr[300];
1637 UconvObject uconv_object866 = NULL;
1638 UconvObject uconv_object852 = NULL;
1639 UconvObject uconv_object1207 = NULL;
1640 UconvObject uconv_object850 = NULL;
1641 int i;
1642
1643 strcpy(ucLangStr, psz);
1644 UniCreateUconvObject((UniChar *)L"IBM-852", &uconv_object852);
1645 UniCreateUconvObject((UniChar *)L"IBM-850", &uconv_object850);
1646 UniCreateUconvObject((UniChar *)L"IBM-866", &uconv_object866);
1647 UniCreateUconvObject((UniChar *)L"IBM-1207", &uconv_object1207);
1648
1649 if (Lang == CZ) {
1650 UniStrToUcs( uconv_object852, target, ucLangStr, 299);
[148]1651 }
1652 else if (Lang == RU) {
1653 UniStrToUcs( uconv_object866, target, ucLangStr, 299);
1654 }
1655 else {
1656 UniStrToUcs( uconv_object850, target, ucLangStr, 299);
1657 }
[94]1658 UniStrFromUcs( uconv_object1207, ucLangStr, target, 300);
1659 Lang = 0;
1660 if (uconv_object866)
1661 UniFreeUconvObject(uconv_object866);
1662 if (uconv_object852)
1663 UniFreeUconvObject(uconv_object852);
1664 if (uconv_object850)
1665 UniFreeUconvObject(uconv_object850);
1666 if (uconv_object1207)
1667 UniFreeUconvObject(uconv_object1207);
1668
1669
1670#endif
1671 ul = WinInsertLboxItem (hwnd, LIT_END,/*psz*/ucLangStr);
[2]1672 WinSendMsg(hwnd, LM_SETITEMHANDLE, MPFROMLONG(ul),
1673 MPFROMP (strdup(findbuf.achName)));
1674 }
[94]1675 if (pl)
1676 DosFreeResource(pl);
[2]1677 DosFreeResource(pv);
1678 }
1679 DosFreeModule(hmod);
1680 }
1681 c = 1;
1682 rc = DosFindNext (hdir, &findbuf, sizeof (findbuf), &c);
1683 }
1684 DosFindClose (hdir);
1685
1686 return 1;
1687}
[125]1688#endif
[11]1689// ** GetFileExtension **************************************************** /*FOLD00*/
[2]1690
[11]1691PSZ Settings :: GetFileExtension( SHORT type )
[2]1692{
1693 if( type == BMF_INVALID )
1694 type = SHORT( QueryFileFormat() );
[11]1695 if( ( type >= BMF_JPG ) && ( type < BMF_INVALID ) )
[2]1696 return ifi[ type ].extension;
1697 return "";
1698}
1699
[27]1700#if 0
[11]1701// ** GetFOURCC *********************************************************** /*FOLD00*/
[2]1702
[11]1703FOURCC Settings :: GetFOURCC( SHORT type )
[2]1704{
1705 if( type == BMF_INVALID )
1706 type = SHORT( QueryFileFormat() );
[11]1707 if( ( type >= BMF_JPG ) && ( type < BMF_INVALID ) )
[2]1708 return ifi[ type ].fourcc;
1709 return 0L;
1710}
[27]1711#endif
[11]1712// ** GetFileEAType ******************************************************* /*FOLD00*/
[2]1713
[11]1714PSZ Settings :: GetFileEAType( SHORT type )
[2]1715{
1716 if( type == BMF_INVALID )
1717 type = SHORT( QueryFileFormat() );
[11]1718 if( ( type >= BMF_JPG ) && ( type < BMF_INVALID ) )
[2]1719 return ifi[ type ].eaType;
1720 return "";
1721}
1722
1723// ************************************************************************
1724
1725PSZ Settings :: QueryNumSaveDir( VOID )
1726{
1727 // Using a static buffer here is not really good, but good enough
1728 // currently as we know there will be no concurrent access.
1729 static CHAR ach[_MAX_PATH];
1730
1731 if( strspn( QueryString( SEI_NUMSAVEDIR ), " \t\n\r" ) ==
1732 strlen( QueryString( SEI_NUMSAVEDIR ) ) )
1733 return getcwd( ach, _MAX_PATH );
1734 return QueryString( SEI_NUMSAVEDIR );
1735}
Note: See TracBrowser for help on using the repository browser.