Changeset 917 for trunk/dll/notebook.c
- Timestamp:
- Jan 11, 2008, 10:41:56 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/notebook.c
r911 r917 22 22 26 Nov 07 GKY Allow a currently nonvalid path in the ext path field with warning 23 23 06 Jan 08 GKY Use CheckApp_QuoteAddExe to check program strings on entry 24 10 Jan 08 SHL Remember last settings page 25 10 Jan 08 SHL Rework page select logic 24 26 25 27 ***********************************************************************/ … … 44 46 static PSZ pszSrcFile = __FILE__; 45 47 46 typedef struct47 {48 USHORT frameid;49 ULONG title;50 PFNWP proc;51 HWND hwnd;52 ULONG helpid;53 ULONG pageID;54 }55 NOTEPAGES;56 57 48 static HWND hwndNotebook; 58 49 59 50 MRESULT EXPENTRY CfgADlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 60 51 { 61 ULONG 52 ULONG ulResult; 62 53 63 54 switch (msg) { … … 152 143 switch (id) { 153 144 case CFGA_VIRUS: 154 if (insert_filename(hwnd, filename, 2, FALSE) && *filename){155 156 157 158 145 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 146 BldQuotedFileName(szfilename, filename); 147 strcat(szfilename, " %p"); 148 WinSetDlgItemText(hwnd, id, szfilename); 149 } 159 150 break; 160 151 case CFGA_EXTRACTPATH: … … 206 197 WinQueryDlgItemText(hwnd, CFGA_VIRUS, CCHMAXPATH, szBuf); 207 198 szBuf[CCHMAXPATH - 1] = 0; 208 if (strcmp(szBuf, virus)) {209 210 211 212 199 if (strcmp(szBuf, virus)) { 200 psz = CheckApp_QuoteAddExe(szBuf); 201 memcpy(virus, psz, strlen(psz) + 1); 202 if (!strchr(virus, '%') && strlen(virus) > 3) 203 strcat(virus, " %p"); 213 204 } 214 205 if (!*virus) 215 206 strcpy(virus, "OS2SCAN.EXE %p /SUB /A"); 216 207 WinQueryDlgItemText(hwnd, CFGA_EXTRACTPATH, CCHMAXPATH, szBuf); 217 208 szBuf[CCHMAXPATH - 1] = 0; … … 219 210 220 211 if (strcmp(extractpath, szBuf)) { 221 memcpy(extractpath, szBuf, strlen(szBuf) + 1); 222 if (*extractpath){ 223 MakeFullName(extractpath); 224 if (IsFile(extractpath)) { 225 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 226 GetPString(IDS_WARNINGTEXT), 227 GetPString(IDS_EXTPATHNOTVALIDTEXT), 228 extractpath); 229 if (ulResult == MBID_YES) 230 *extractpath = 0; 231 if (ulResult == MBID_CANCEL){ 232 WinDlgBox(HWND_DESKTOP, 233 hwnd, CfgDlgProc, 234 FM3ModHandle, CFG_FRAME, 235 MPFROMP("Archive")); 236 break; 237 } 238 } 239 } 212 memcpy(extractpath, szBuf, strlen(szBuf) + 1); 213 if (*extractpath) { 214 MakeFullName(extractpath); 215 if (IsFile(extractpath)) { 216 ulResult = saymsg(MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1, HWND_DESKTOP, 217 GetPString(IDS_WARNINGTEXT), 218 GetPString(IDS_EXTPATHNOTVALIDTEXT), 219 extractpath); 220 if (ulResult == MBID_YES) 221 *extractpath = 0; 222 if (ulResult == MBID_CANCEL) { 223 WinDlgBox(HWND_DESKTOP, 224 hwnd, 225 CfgDlgProc, 226 FM3ModHandle, 227 CFG_FRAME, 228 MPFROMLONG(IDM_ARCHIVERSETTINGS)); 229 break; 230 } 231 } 232 } 240 233 } 241 234 } … … 244 237 break; 245 238 } 246 if (fCancelAction) {239 if (fCancelAction) { 247 240 fCancelAction = FALSE; 248 241 WinDlgBox(HWND_DESKTOP, 249 hwnd, CfgDlgProc, FM3ModHandle, CFG_FRAME, MPFROMP("Archive")); 242 hwnd, 243 CfgDlgProc, 244 FM3ModHandle, 245 CFG_FRAME, 246 MPFROMLONG(IDM_ARCHIVERSETTINGS)); 250 247 } 251 248 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 440 437 case CFGV_BINED: 441 438 case CFGV_VIEWER: 442 443 444 439 case CFGV_EDITOR: 440 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 441 BldQuotedFileName(szfilename, filename); 445 442 strcat(szfilename, " %a"); 446 443 WinSetDlgItemText(hwnd, id, szfilename); … … 463 460 WinQueryDlgItemText(hwnd, CFGV_VIEWER, CCHMAXPATH, szBuf); 464 461 szBuf[CCHMAXPATH - 1] = 0; 465 if (strcmp(szBuf, viewer)) {466 467 468 469 462 if (strcmp(szBuf, viewer)) { 463 psz = CheckApp_QuoteAddExe(szBuf); 464 memcpy(viewer, psz, strlen(psz) + 1); 465 if (!strchr(viewer, '%') && strlen(viewer) > 3) 466 strcat(viewer, " %a"); 470 467 } 471 468 WinQueryDlgItemText(hwnd, CFGV_EDITOR, CCHMAXPATH, szBuf); 472 469 szBuf[CCHMAXPATH - 1] = 0; 473 if (strcmp(szBuf, editor)) {474 475 476 477 470 if (strcmp(szBuf, editor)) { 471 psz = CheckApp_QuoteAddExe(szBuf); 472 memcpy(editor, psz, strlen(psz) + 1); 473 if (!strchr(editor, '%') && strlen(editor) > 3) 474 strcat(editor, " %a"); 478 475 } 479 476 WinQueryDlgItemText(hwnd, CFGV_BINVIEW, CCHMAXPATH, szBuf); 480 477 szBuf[CCHMAXPATH - 1] = 0; 481 if (strcmp(szBuf, binview)) {482 483 484 485 478 if (strcmp(szBuf, binview)) { 479 psz = CheckApp_QuoteAddExe(szBuf); 480 memcpy(binview, psz, strlen(psz) + 1); 481 if (!strchr(binview, '%') && strlen(binview) > 3) 482 strcat(binview, " %a"); 486 483 } 487 484 WinQueryDlgItemText(hwnd, CFGV_BINED, CCHMAXPATH, szBuf); 488 485 szBuf[CCHMAXPATH - 1] = 0; 489 if (strcmp(szBuf, bined)) {490 491 492 493 486 if (strcmp(szBuf, bined)) { 487 psz = CheckApp_QuoteAddExe(szBuf); 488 memcpy(bined, psz, strlen(psz) + 1); 489 if (!strchr(bined, '%') && strlen(bined) > 3) 490 strcat(bined, " %a"); 494 491 } 495 492 PrfWriteProfileString(fmprof, appname, "Viewer", viewer); … … 499 496 fUseNewViewer = WinQueryButtonCheckstate(hwnd, CFGV_USENEWVIEWER); 500 497 PrfWriteProfileData(fmprof, appname, "UseNewViewer", &fUseNewViewer, 501 498 sizeof(BOOL)); 502 499 fGuessType = WinQueryButtonCheckstate(hwnd, CFGV_GUESSTYPE); 503 500 PrfWriteProfileData(fmprof, appname, "GuessType", &fGuessType, 504 501 sizeof(BOOL)); 505 502 fViewChild = WinQueryButtonCheckstate(hwnd, CFGV_VIEWCHILD); 506 503 PrfWriteProfileData(fmprof, appname, "ViewChild", &fViewChild, 507 504 sizeof(BOOL)); 508 505 fCheckMM = WinQueryButtonCheckstate(hwnd, CFGV_CHECKMM); 509 506 PrfWriteProfileData(fmprof, appname, "CheckMM", &fCheckMM, sizeof(BOOL)); … … 512 509 } 513 510 } 514 if (fCancelAction) {511 if (fCancelAction) { 515 512 fCancelAction = FALSE; 516 513 WinDlgBox(HWND_DESKTOP, 517 hwnd, CfgDlgProc, FM3ModHandle, CFG_FRAME, MPFROMP("Viewer1")); 514 hwnd, 515 CfgDlgProc, 516 FM3ModHandle, 517 CFG_FRAME, 518 MPFROMLONG(IDM_VIEWERSETTINGS)); 518 519 } 519 520 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 531 532 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 532 533 WinSendDlgItemMsg(hwnd, CFGH_HTTPRUN, EM_SETTEXTLIMIT, 533 534 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 534 535 WinSendDlgItemMsg(hwnd, CFGH_MAILRUN, EM_SETTEXTLIMIT, 535 536 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 536 537 WinSendDlgItemMsg(hwnd, CFGH_RUNMAILWORKDIR, EM_SETTEXTLIMIT, 537 538 MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); … … 606 607 switch (id) { 607 608 case CFGH_HTTPRUN: 608 609 610 if (insert_filename(hwnd, filename, 2, FALSE) && *filename){611 612 613 614 615 609 case CFGH_FTPRUN: 610 case CFGH_MAILRUN: 611 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 612 BldQuotedFileName(szfilename, filename); 613 WinSetDlgItemText(hwnd, id, szfilename); 614 } 615 break; 616 case CFGH_RUNFTPWORKDIR: 616 617 strcpy(filename, ftprundir); 617 618 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, … … 619 620 MPFROMP(filename)) && *filename) 620 621 WinSetDlgItemText(hwnd, id, filename); 621 622 623 622 break; 623 case CFGH_RUNHTTPWORKDIR: 624 strcpy(filename, httprundir); 624 625 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, 625 626 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME, 626 627 MPFROMP(filename)) && *filename) 627 628 WinSetDlgItemText(hwnd, id, filename); 628 629 630 629 break; 630 case CFGH_RUNMAILWORKDIR: 631 strcpy(filename, mailrundir); 631 632 if (WinDlgBox(HWND_DESKTOP, hwndNotebook, 632 633 WalkExtractDlgProc, FM3ModHandle, WALK_FRAME, 633 634 MPFROMP(filename)) && *filename) 634 635 WinSetDlgItemText(hwnd, id, filename); 635 636 break; 636 637 default: 637 638 Runtime_Error(pszSrcFile, __LINE__, "bad case %d", id); … … 663 664 WinQueryDlgItemText(hwnd, CFGH_FTPRUN, CCHMAXPATH, szBuf); 664 665 szBuf[CCHMAXPATH - 1] = 0; 665 if (strcmp(szBuf, ftprun)) {666 667 666 if (strcmp(szBuf, ftprun)) { 667 psz = CheckApp_QuoteAddExe(szBuf); 668 memcpy(ftprun, psz, strlen(psz) + 1); 668 669 } 669 670 WinQueryDlgItemText(hwnd, CFGH_HTTPRUN, CCHMAXPATH, szBuf); 670 671 szBuf[CCHMAXPATH - 1] = 0; 671 if (strcmp(szBuf, httprun)) {672 673 672 if (strcmp(szBuf, httprun)) { 673 psz = CheckApp_QuoteAddExe(szBuf); 674 memcpy(httprun, psz, strlen(psz) + 1); 674 675 } 675 676 WinQueryDlgItemText(hwnd, CFGH_MAILRUN, CCHMAXPATH, szBuf); 676 677 szBuf[CCHMAXPATH - 1] = 0; 677 if (strcmp(szBuf, mailrun)) {678 679 678 if (strcmp(szBuf, mailrun)) { 679 psz = CheckApp_QuoteAddExe(szBuf); 680 memcpy(mailrun, psz, strlen(psz) + 1); 680 681 } 681 682 PrfWriteProfileString(fmprof, appname, "HttpRunDir", httprundir); … … 687 688 fHttpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_HTTPRUNWPSDEFAULT); 688 689 PrfWriteProfileData(fmprof, appname, "HttpRunWPSDefault", &fHttpRunWPSDefault, 689 690 sizeof(BOOL)); 690 691 fFtpRunWPSDefault = WinQueryButtonCheckstate(hwnd, CFGH_FTPRUNWPSDEFAULT); 691 692 PrfWriteProfileData(fmprof, appname, "FtpRunWPSDefault", &fFtpRunWPSDefault, 692 693 sizeof(BOOL)); 693 694 fLibPathStrictHttpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTHTTPRUN); 694 695 PrfWriteProfileData(fmprof, appname, "LibPathStrictHttpRun", 695 696 &fLibPathStrictHttpRun, sizeof(BOOL)); 696 697 fLibPathStrictFtpRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTFTPRUN); 697 698 PrfWriteProfileData(fmprof, appname, "LibPathStrictFtpRun", 698 699 &fLibPathStrictFtpRun, sizeof(BOOL)); 699 700 fLibPathStrictMailRun = WinQueryButtonCheckstate(hwnd, CFGH_LIBPATHSTRICTMAILRUN); 700 701 PrfWriteProfileData(fmprof, appname, "LibPathStrictMailRun", 701 702 &fLibPathStrictMailRun, sizeof(BOOL)); 702 703 fNoMailtoMailRun = WinQueryButtonCheckstate(hwnd, CFGH_NOMAILTOMAILRUN); 703 704 PrfWriteProfileData(fmprof, appname, "NoMailtoMailRun", 704 705 &fNoMailtoMailRun, sizeof(BOOL)); 705 706 break; 706 707 } 707 708 } 708 if (fCancelAction) {709 if (fCancelAction) { 709 710 fCancelAction = FALSE; 710 711 WinDlgBox(HWND_DESKTOP, 711 hwnd, CfgDlgProc, FM3ModHandle, CFG_FRAME, MPFROMP("Viewer2")); 712 hwnd, 713 CfgDlgProc, 714 FM3ModHandle, 715 CFG_FRAME, 716 MPFROMLONG(IDM_VIEWERSETTINGS)); 712 717 } 713 718 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 782 787 case UM_UNDO: 783 788 { 784 ULONG flWindowAttr = 0, size = sizeof(ULONG); 789 ULONG flWindowAttr = 0; 790 ULONG ulSize = sizeof(ULONG); 785 791 786 792 if (!PrfQueryProfileData(fmprof, 787 793 appname, 788 794 "TreeflWindowAttr", 789 (PVOID) & flWindowAttr, & size))795 (PVOID) & flWindowAttr, &ulSize)) 790 796 flWindowAttr |= (CV_TREE | CA_TREELINE | CV_ICON | CV_MINI | CV_FLOW); 791 797 WinCheckButton(hwnd, CFG5_ICON, ((flWindowAttr & CV_ICON) != FALSE)); … … 796 802 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 797 803 mask.fIsTree = TRUE; 798 size = sizeof(MASK);799 if (PrfQueryProfileData(fmprof, appname, "TreeFilter", &mask, & size)) {804 ulSize = sizeof(MASK); 805 if (PrfQueryProfileData(fmprof, appname, "TreeFilter", &mask, &ulSize)) { 800 806 SetMask(NULL, &mask); 801 807 } … … 834 840 WinCheckButton(hwnd, CFG6_SORTNAME, TRUE); 835 841 if (TreesortFlags & SORT_REVERSE) 836 842 WinCheckButton(hwnd, CFG6_SORTREVERSE, TRUE); 837 843 } 838 844 return 0; … … 1233 1239 case CFGC_COMPARE: 1234 1240 case CFGC_DIRCOMPARE: 1235 1236 1241 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 1242 BldQuotedFileName(szfilename, filename); 1237 1243 strcat(szfilename, " %a"); 1238 1244 WinSetDlgItemText(hwnd, id, szfilename); … … 1254 1260 1255 1261 WinQueryDlgItemText(hwnd, CFGC_DIRCOMPARE, CCHMAXPATH, szBuf); 1256 1257 if (strcmp(szBuf, dircompare)){1258 1259 1260 1261 1262 1262 szBuf[CCHMAXPATH - 1] = 0; 1263 if (strcmp(szBuf, dircompare)) { 1264 psz = CheckApp_QuoteAddExe(szBuf); 1265 memcpy(dircompare, psz, strlen(psz) + 1); 1266 if (!strchr(dircompare, '%') && strlen(dircompare) > 3) 1267 strcat(dircompare, " %a"); 1268 } 1263 1269 PrfWriteProfileString(fmprof, appname, "DirCompare", dircompare); 1264 1270 WinQueryDlgItemText(hwnd, CFGC_COMPARE, CCHMAXPATH, szBuf); 1265 1266 if (strcmp(szBuf, compare)){1267 1268 1269 1270 1271 1271 szBuf[CCHMAXPATH - 1] = 0; 1272 if (strcmp(szBuf, compare)) { 1273 psz = CheckApp_QuoteAddExe(szBuf); 1274 memcpy(compare, psz, strlen(psz) + 1); 1275 if (!strchr(compare, '%') && strlen(compare) > 3) 1276 strcat(compare, " %a"); 1277 } 1272 1278 PrfWriteProfileString(fmprof, appname, "Compare", compare); 1273 1279 break; 1274 1280 } 1275 1281 } 1276 if (fCancelAction) {1282 if (fCancelAction) { 1277 1283 fCancelAction = FALSE; 1278 1284 WinDlgBox(HWND_DESKTOP, 1279 hwnd, CfgDlgProc, FM3ModHandle, CFG_FRAME, MPFROMP("Compare")); 1285 hwnd, 1286 CfgDlgProc, 1287 FM3ModHandle, 1288 CFG_FRAME, 1289 MPFROMLONG(IDM_COMPARESETTINGS)); 1280 1290 } 1281 1291 return WinDefDlgProc(hwnd, msg, mp1, mp2); … … 1617 1627 case UM_UNDO: 1618 1628 { 1619 ULONG flWindowAttr = 0, size = sizeof(ULONG); 1629 ULONG flWindowAttr = 0; 1630 ULONG ulSize = sizeof(ULONG); 1620 1631 1621 1632 if (!PrfQueryProfileData(fmprof, 1622 1633 appname, 1623 "DirflWindowAttr", &flWindowAttr, & size))1634 "DirflWindowAttr", &flWindowAttr, &ulSize)) 1624 1635 flWindowAttr = (CV_NAME | CV_MINI | CA_DETAILSVIEWTITLES | CV_FLOW); 1625 1636 if (flWindowAttr & CV_ICON) … … 1650 1661 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 1651 1662 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 1652 size = sizeof(MASK);1653 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, & size))1663 ulSize = sizeof(MASK); 1664 if (PrfQueryProfileData(fmprof, appname, "DirFilter", &mask, &ulSize)) 1654 1665 SetMask(NULL, &mask); 1655 1666 if (!mask.attrFile) … … 1787 1798 &detailsattr, sizeof(BOOL)); 1788 1799 PrfWriteProfileData(fmprof, appname, "DirCnr.DetailsAttr", 1789 1800 &detailsattr, sizeof(BOOL)); 1790 1801 fSubjectInLeftPane = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTINLEFTPANE); 1791 1802 PrfWriteProfileData(fmprof, appname, "SubjectInLeftPane", 1792 1803 &fSubjectInLeftPane, sizeof(BOOL)); 1793 1804 PrfWriteProfileData(fmprof, appname, "DirCnr.SubjectInLeftPane", 1794 1805 &fSubjectInLeftPane, sizeof(BOOL)); 1795 1806 fSubjectLengthMax = WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX); 1796 1807 PrfWriteProfileData(fmprof, appname, "SubjectLengthMax", … … 1801 1812 PrfWriteProfileData(fmprof, appname, "DirFilter", &mask, sizeof(MASK)); 1802 1813 { 1803 1804 1805 1806 1807 SubjectDisplayWidth= 0;1808 1809 1810 1811 1812 SubjectDisplayWidth= 0;1813 1814 1815 1816 1817 1818 1814 if (!WinQueryButtonCheckstate(hwnd, CFG5_SUBJECTLENGTHMAX)) { 1815 WinSendDlgItemMsg(hwnd, CFG5_SUBJECTDISPLAYWIDTH, SPBM_QUERYVALUE, 1816 MPFROMP(&SubjectDisplayWidth), MPFROM2SHORT(0, SPBQ_DONOTUPDATE)); 1817 if (SubjectDisplayWidth < 50) 1818 SubjectDisplayWidth = 0; 1819 else if (SubjectDisplayWidth > 1000) 1820 SubjectDisplayWidth = 1000; 1821 } 1822 else 1823 SubjectDisplayWidth = 0; 1824 PrfWriteProfileData(fmprof, 1825 appname, "SubjectDisplayWidth", 1826 &SubjectDisplayWidth, sizeof(ULONG)); 1827 PrfWriteProfileData(fmprof, 1828 appname, "DirCnr.SubjectDisplayWidth", 1829 &SubjectDisplayWidth, sizeof(ULONG)); 1819 1830 } 1820 1831 break; … … 1960 1971 WinCheckButton(hwnd, CFG5_EXTERNALCOLLECTOR, fExternalCollector); 1961 1972 { 1962 ULONG flWindowAttr = 0, size = sizeof(ULONG); 1973 ULONG flWindowAttr = 0; 1974 ULONG ulSize = sizeof(ULONG); 1963 1975 1964 1976 if (!PrfQueryProfileData(fmprof, 1965 1977 appname, 1966 "CollectorflWindowAttr", &flWindowAttr, & size))1978 "CollectorflWindowAttr", &flWindowAttr, &ulSize)) 1967 1979 flWindowAttr = (CV_NAME | CA_DETAILSVIEWTITLES | CV_MINI | CV_FLOW); 1968 1980 if (flWindowAttr & CV_ICON) … … 1981 1993 mask.attrFile = FILE_DIRECTORY | FILE_ARCHIVED | FILE_HIDDEN | 1982 1994 FILE_SYSTEM | FILE_NORMAL | FILE_READONLY; 1983 size = sizeof(MASK);1995 ulSize = sizeof(MASK); 1984 1996 if (PrfQueryProfileData(fmprof, 1985 appname, "CollectorFilter", &mask, & size)) {1997 appname, "CollectorFilter", &mask, &ulSize)) { 1986 1998 SetMask(NULL, &mask); 1987 1999 } … … 2948 2960 } 2949 2961 2950 NOTEPAGES np[] = { CFGD_FRAME, 2951 IDS_NOTEDIRCNRS1TEXT, 2952 CfgDDlgProc, 2953 0, 2954 0, 2955 0, 2956 CFG5_FRAME, 2957 IDS_NOTEDIRVIEW1TEXT, 2958 Cfg5DlgProc, 2959 0, 2960 0, 2961 0, 2962 CFG6_FRAME, 2963 IDS_NOTEDIRSORT1TEXT, 2964 Cfg6DlgProc, 2965 0, 2966 0, 2967 0, 2968 CFG5_FRAME, 2969 IDS_NOTECOLVIEW1TEXT, 2970 Cfg7DlgProc, 2971 0, 2972 0, 2973 0, 2974 CFG6_FRAME, 2975 IDS_NOTECOLSORT1TEXT, 2976 Cfg8DlgProc, 2977 0, 2978 0, 2979 0, 2980 CFGA_FRAME, 2981 IDS_NOTEARCHIVER1TEXT, 2982 CfgADlgProc, 2983 0, 2984 0, 2985 0, 2986 CFGT_FRAME, 2987 IDS_NOTETREE1TEXT, 2988 CfgTDlgProc, 2989 0, 2990 0, 2991 0, 2992 CFGTS_FRAME, 2993 IDS_NOTETREESORT1TEXT, 2994 CfgTSDlgProc, 2995 0, 2996 0, 2997 0, 2998 CFGV_FRAME, 2999 IDS_NOTEVIEWERS1TEXT, 3000 CfgVDlgProc, 3001 0, 3002 0, 3003 0, 3004 CFGH_FRAME, 3005 IDS_NOTEVIEWERS3TEXT, 3006 CfgHDlgProc, 3007 0, 3008 0, 3009 0, 3010 CFGC_FRAME, 3011 IDS_NOTECOMPARE1TEXT, 3012 CfgCDlgProc, 3013 0, 3014 0, 3015 0, 3016 CFGM_FRAME, 3017 IDS_NOTEMONOLITHIC1TEXT, 3018 CfgMDlgProc, 3019 0, 3020 0, 3021 0, 3022 CFGG_FRAME, 3023 IDS_NOTEGENERAL1TEXT, 3024 CfgGDlgProc, 3025 0, 3026 0, 3027 0, 3028 CFGS_FRAME, 3029 IDS_NOTESCANNING1TEXT, 3030 CfgSDlgProc, 3031 0, 3032 0, 3033 0, 3034 CFGB_FRAME, 3035 IDS_NOTEBUBBLE1TEXT, 3036 CfgBDlgProc, 3037 0, 3038 0, 3039 0, 3040 CFG9_FRAME, 3041 IDS_NOTEQUICK1TEXT, 3042 Cfg9DlgProc, 3043 0, 3044 0, 3045 0, 3046 0, 3047 0, 3048 NULL, 3049 0, 3050 0, 3051 0 2962 struct 2963 { 2964 USHORT usMenuId; 2965 USHORT usFrameId; 2966 ULONG ulTitle; 2967 PFNWP pfnPageProc; 2968 HWND hwnd; 2969 ULONG ulHelpId; 2970 ULONG ulPageId; 2971 } np[] = { 2972 { IDM_DIRCNRSETTINGS, CFGD_FRAME, IDS_NOTEDIRCNRS1TEXT, CfgDDlgProc, 0, 0, 0 }, 2973 { 0, CFG5_FRAME, IDS_NOTEDIRVIEW1TEXT, Cfg5DlgProc, 0, 0, 0}, 2974 { 0, CFG6_FRAME, IDS_NOTEDIRSORT1TEXT, Cfg6DlgProc, 0, 0, 0 }, 2975 { IDM_COLLECTORSETTINGS, CFG5_FRAME, IDS_NOTECOLVIEW1TEXT, Cfg7DlgProc, 0, 0, 0 }, 2976 { 0, CFG6_FRAME, IDS_NOTECOLSORT1TEXT, Cfg8DlgProc, 0, 0, 0 }, 2977 { IDM_ARCHIVERSETTINGS, CFGA_FRAME, IDS_NOTEARCHIVER1TEXT, CfgADlgProc, 0, 0, 0 }, 2978 { 0, CFGT_FRAME, IDS_NOTETREE1TEXT, CfgTDlgProc, 0, 0, 0 }, 2979 { 0, CFGTS_FRAME, IDS_NOTETREESORT1TEXT, CfgTSDlgProc, 0, 0, 0 }, 2980 { 0, CFGV_FRAME, IDS_NOTEVIEWERS1TEXT, CfgVDlgProc, 0, 0, 0 }, 2981 { IDM_VIEWERSETTINGS, CFGH_FRAME, IDS_NOTEVIEWERS3TEXT, CfgHDlgProc, 0, 0, 0 }, 2982 { IDM_COMPARESETTINGS, CFGC_FRAME, IDS_NOTECOMPARE1TEXT, CfgCDlgProc, 0, 0, 0 }, 2983 { 0, CFGM_FRAME, IDS_NOTEMONOLITHIC1TEXT, CfgMDlgProc, 0, 0, 0 }, 2984 { 0, CFGG_FRAME, IDS_NOTEGENERAL1TEXT, CfgGDlgProc, 0, 0, 0 }, 2985 { 0, CFGS_FRAME, IDS_NOTESCANNING1TEXT, CfgSDlgProc, 0, 0, 0 }, 2986 { 0, CFGB_FRAME, IDS_NOTEBUBBLE1TEXT, CfgBDlgProc, 0, 0, 0 }, 2987 { IDM_QUICKSETTINGS, CFG9_FRAME, IDS_NOTEQUICK1TEXT, Cfg9DlgProc, 0, 0, 0 }, 2988 { 0, 0, 0, NULL, 0, 0, 0 } // usFrameId 0 is end marker 3052 2989 }; 3053 2990 … … 3057 2994 USHORT attrib = BKA_FIRST; 3058 2995 INT x; 3059 ULONG pageID; 2996 ULONG ulPageId; 2997 ULONG ulSize; 2998 2999 static PSZ pszIK_LastSettingsPage = "LastSettingsPage"; 3000 static BOOL fInitDone; 3001 3002 static UINT uLastPageIndex; 3060 3003 3061 3004 switch (msg) { 3062 3005 case WM_INITDLG: 3063 3006 hwndNotebook = hwnd; 3007 if (!fInitDone) { 3008 ulSize = sizeof(uLastPageIndex); 3009 PrfQueryProfileData(fmprof, appname, pszIK_LastSettingsPage, &uLastPageIndex, &ulSize); 3010 fInitDone = TRUE; 3011 } 3064 3012 if (mp2) { 3065 if (!strcmp((CHAR *) mp2, "FM/4")) { 3013 // If fm/2 lite drop quick setting page 3014 if (mp2 == MPFROMLONG(IDM_LITESETTINGS)) { 3066 3015 x = 0; 3067 while (np[x]. frameid && np[x].frameid != CFG9_FRAME)3016 while (np[x].usFrameId && np[x].usFrameId != CFG9_FRAME) 3068 3017 x++; 3069 np[x].frameid = 0; 3018 np[x].usFrameId = 0; 3019 mp2 = 0; 3070 3020 } 3071 3021 } … … 3083 3033 BKM_SETDIMENSIONS, 3084 3034 MPFROM2SHORT(0, 0), MPFROMLONG(BKA_MINORTAB)); 3085 for (x = 0; np[x]. frameid; x++) {3035 for (x = 0; np[x].usFrameId; x++) { 3086 3036 hwndTemp = WinLoadDlg(HWND_DESKTOP, 3087 3037 HWND_DESKTOP, 3088 np[x].proc, FM3ModHandle, np[x].frameid, MPVOID); 3089 if (hwndTemp) { 3090 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG) hwnd); 3038 np[x].pfnPageProc, FM3ModHandle, np[x].usFrameId, MPVOID); 3039 if (!hwndTemp) { 3040 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, 3041 "Can not load settings page %u", x); 3042 } 3043 else { 3044 WinSetWindowULong(hwndTemp, QWL_USER, (ULONG)hwnd); 3091 3045 np[x].hwnd = hwndTemp; 3092 np[x].pageID = (ULONG) WinSendDlgItemMsg(hwnd, 3093 CFG_NOTEBOOK, 3094 BKM_INSERTPAGE, 3095 MPFROMLONG(BKA_FIRST), 3096 MPFROM2SHORT(BKA_AUTOPAGESIZE 3097 | 3098 BKA_STATUSTEXTON 3099 | BKA_MAJOR, 3100 attrib)); 3046 np[x].ulPageId = (ULONG)WinSendDlgItemMsg(hwnd, 3047 CFG_NOTEBOOK, 3048 BKM_INSERTPAGE, 3049 MPFROMLONG(BKA_FIRST), 3050 MPFROM2SHORT(BKA_AUTOPAGESIZE | 3051 BKA_STATUSTEXTON | 3052 BKA_MAJOR, attrib)); 3101 3053 attrib = BKA_LAST; 3102 3054 WinSendDlgItemMsg(hwnd, 3103 3055 CFG_NOTEBOOK, 3104 3056 BKM_SETPAGEWINDOWHWND, 3105 MPFROMLONG(np[x]. pageID), MPFROMLONG(np[x].hwnd));3057 MPFROMLONG(np[x].ulPageId), MPFROMLONG(np[x].hwnd)); 3106 3058 WinSendDlgItemMsg(hwnd, 3107 3059 CFG_NOTEBOOK, 3108 3060 BKM_SETTABTEXT, 3109 MPFROMLONG(np[x]. pageID),3110 MPFROMP(GetPString(np[x]. title)));3061 MPFROMLONG(np[x].ulPageId), 3062 MPFROMP(GetPString(np[x].ulTitle))); 3111 3063 WinSendDlgItemMsg(hwnd, 3112 3064 CFG_NOTEBOOK, 3113 3065 BKM_SETSTATUSLINETEXT, 3114 MPFROMLONG(np[x].pageID), 3115 MPFROMP(GetPString(np[x].title + 1))); 3116 } 3117 } 3118 if (mp2 && !strcmp((CHAR *) mp2, "Viewer2")) 3066 MPFROMLONG(np[x].ulPageId), 3067 MPFROMP(GetPString(np[x].ulTitle + 1))); 3068 if (LONGFROMMP(mp2) == np[x].usMenuId) { 3069 uLastPageIndex = x; 3070 } 3071 } 3072 } // for 3073 // If quick settings page requested, assume request is for first time init 3074 // Turn to cfg page and show help 3075 // Page will not be available if running fm/2 lite or if load error 3076 if (mp2 == MPFROMLONG(IDM_QUICKSETTINGS) && 3077 x-- > 0 && np[x].hwnd && np[x].usFrameId == CFG9_FRAME) { 3078 // 10 Jan 08 SHL fixme to know what UM_SETDIR 1 means 3079 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1), MPVOID); 3119 3080 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3120 BKM_TURNTOPAGE, MPFROMLONG(np[9].pageID), MPVOID); 3121 else if (mp2 && !strcmp((CHAR *) mp2, "Viewer1")) 3122 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3123 BKM_TURNTOPAGE, MPFROMLONG(np[8].pageID), MPVOID); 3124 else if (mp2 && !strcmp((CHAR *) mp2, "Compare")) 3125 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3126 BKM_TURNTOPAGE, MPFROMLONG(np[10].pageID), MPVOID); 3127 else if (mp2 && !strcmp((CHAR *) mp2, "Archive")) 3128 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3129 BKM_TURNTOPAGE, MPFROMLONG(np[5].pageID), MPVOID); 3130 else if (mp2 && !strcmp((CHAR *) mp2, "Tree")) 3131 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3132 BKM_TURNTOPAGE, MPFROMLONG(np[6].pageID), MPVOID); 3133 else if (mp2 && !strcmp((CHAR *) mp2, "Collector")) 3134 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3135 BKM_TURNTOPAGE, MPFROMLONG(np[3].pageID), MPVOID); 3136 /* see if we've been asked to display quick cfg page */ 3137 else if (!mp2 || strcmp((CHAR *) mp2, "First Time") || 3138 !x || !np[x - 1].hwnd || !np[x - 1].pageID) 3139 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3140 BKM_TURNTOPAGE, MPFROMLONG(np[0].pageID), MPVOID); 3081 BKM_TURNTOPAGE, MPFROMLONG(np[x].ulPageId), MPVOID); 3082 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x].hwnd), MPVOID); 3083 PostMsg(np[x].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID); 3084 } 3141 3085 else { 3142 PostMsg(MainObjectHwnd, UM_SETDIR, MPFROMLONG(1L), MPVOID);3143 3086 PostMsg(WinWindowFromID(hwnd, CFG_NOTEBOOK), 3144 BKM_TURNTOPAGE, MPFROMLONG(np[x - 1].pageID), MPVOID); 3145 PostMsg(hwnd, UM_FOCUSME, MPFROMLONG(np[x - 1].hwnd), MPVOID); 3146 PostMsg(np[x - 1].hwnd, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID); 3087 BKM_TURNTOPAGE, MPFROMLONG(np[uLastPageIndex].ulPageId), MPVOID); 3147 3088 } 3148 3089 … … 3160 3101 case BKN_PAGESELECTED: 3161 3102 if (mp2) { 3162 3163 3103 PAGESELECTNOTIFY *psn = mp2; 3164 3165 WinSendDlgItemMsg(hwnd, 3166 CFG_NOTEBOOK, 3167 BKM_QUERYPAGEWINDOWHWND, 3168 MPFROMLONG(psn->ulPageIdNew), MPVOID); 3104 ULONG id = psn->ulPageIdNew; 3105 UINT x; 3106 for (x = 0; np[x].usFrameId; x++) { 3107 if (np[x].ulPageId == id) { 3108 uLastPageIndex = x; // Found it 3109 break; 3110 } 3111 } 3169 3112 } 3170 break; 3171 } 3172 break; 3173 } 3113 } // switch BKN 3114 break; 3115 } // switch page 3174 3116 return 0; 3175 3117 … … 3187 3129 case DID_CANCEL: 3188 3130 // Tell current page to undo itself in case changed and still alive 3189 pageID= (ULONG) WinSendDlgItemMsg(hwnd,3131 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd, 3190 3132 CFG_NOTEBOOK, 3191 3133 BKM_QUERYPAGEID, … … 3195 3137 CFG_NOTEBOOK, 3196 3138 BKM_QUERYPAGEWINDOWHWND, 3197 MPFROMLONG(pageID), MPVOID); 3139 MPFROMLONG(ulPageId), MPVOID); 3140 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage, 3141 (PVOID)&uLastPageIndex, sizeof(uLastPageIndex)); 3198 3142 if (hwndTemp) 3199 3143 WinSendMsg(hwndTemp, UM_UNDO, MPVOID, MPVOID); … … 3203 3147 3204 3148 case IDM_HELP: /* relay message to appropriate page's window */ 3205 pageID= (ULONG) WinSendDlgItemMsg(hwnd,3149 ulPageId = (ULONG) WinSendDlgItemMsg(hwnd, 3206 3150 CFG_NOTEBOOK, 3207 3151 BKM_QUERYPAGEID, … … 3211 3155 CFG_NOTEBOOK, 3212 3156 BKM_QUERYPAGEWINDOWHWND, 3213 MPFROMLONG( pageID), MPVOID);3157 MPFROMLONG(ulPageId), MPVOID); 3214 3158 if (hwndTemp) 3215 3159 PostMsg(hwndTemp, WM_COMMAND, MPFROM2SHORT(IDM_HELP, 0), MPVOID); … … 3219 3163 3220 3164 case UM_UNDO: 3221 for (x = 0; np[x]. frameid; x++) {3165 for (x = 0; np[x].usFrameId; x++) { 3222 3166 if (np[x].hwnd) 3223 3167 WinSendMsg(np[x].hwnd, UM_UNDO, MPVOID, MPVOID); … … 3226 3170 3227 3171 case WM_DESTROY: 3228 if (np[0]. frameid) {3229 for (x = 1; np[x]. frameid; x++) {3172 if (np[0].usFrameId) { 3173 for (x = 1; np[x].usFrameId; x++) { 3230 3174 if (np[x].hwnd) { 3231 3175 WinSendMsg(np[x].hwnd, WM_CLOSE, MPVOID, MPVOID); 3232 3176 np[x].hwnd = (HWND) 0; 3233 np[x]. pageID= 0;3177 np[x].ulPageId = 0; 3234 3178 } 3235 3179 } 3236 3180 WinSendMsg(np[0].hwnd, WM_CLOSE, MPVOID, MPVOID); 3237 3181 np[0].hwnd = (HWND) 0; 3238 np[0]. pageID= 0;3182 np[0].ulPageId = 0; 3239 3183 } 3240 3184 hwndNotebook = (HWND) 0; 3185 break; 3186 case WM_CLOSE: 3187 PrfWriteProfileData(fmprof, FM3Str, pszIK_LastSettingsPage, 3188 (PVOID)&uLastPageIndex, sizeof(uLastPageIndex)); 3241 3189 break; 3242 3190 }
Note:
See TracChangeset
for help on using the changeset viewer.