Changeset 551 for trunk/dll/tools.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/tools.c
r512 r551 42 42 TOOL *toolhead = NULL; 43 43 44 45 44 //== load_quicktools() build *.tls array == 46 45 47 46 VOID load_quicktools(VOID) 48 47 { 49 FILE 50 CHAR 51 INT 48 FILE *fp; 49 CHAR s[CCHMAXPATH + 14]; 50 INT x; 52 51 53 52 qtloaded = TRUE; … … 62 61 save_dir2(s); 63 62 if (s[strlen(s) - 1] != '\\') 64 strcat(s, "\\");65 strcat(s, "QUICKTLS.DAT");66 fp = _fsopen(s, "r",SH_DENYWR);63 strcat(s, "\\"); 64 strcat(s, "QUICKTLS.DAT"); 65 fp = _fsopen(s, "r", SH_DENYWR); 67 66 if (fp) { 68 67 x = 0; 69 68 while (!feof(fp)) { 70 if (!xfgets_bstripcr(s, CCHMAXPATH + 2,fp,pszSrcFile,__LINE__))71 69 if (!xfgets_bstripcr(s, CCHMAXPATH + 2, fp, pszSrcFile, __LINE__)) 70 break; 72 71 if (!*s || *s == ';') 73 72 continue; 74 73 if (x >= 50) { 75 74 Runtime_Error(pszSrcFile, __LINE__, "add"); 76 75 break; 77 76 } 78 quicktool[x] = xstrdup(s, pszSrcFile,__LINE__);77 quicktool[x] = xstrdup(s, pszSrcFile, __LINE__); 79 78 if (!quicktool[x]) 80 79 break; 81 80 x++; 82 81 } … … 85 84 } 86 85 87 88 86 VOID save_quicktools(VOID) 89 87 { 90 88 FILE *fp; 91 INT 92 CHAR 89 INT x = 0; 90 CHAR s[CCHMAXPATH + 14]; 93 91 94 92 if (!quicktool[0]) … … 96 94 save_dir2(s); 97 95 if (s[strlen(s) - 1] != '\\') 98 strcat(s, "\\");99 strcat(s, "QUICKTLS.DAT");100 fp = xfopen(s, "w",pszSrcFile,__LINE__);96 strcat(s, "\\"); 97 strcat(s, "QUICKTLS.DAT"); 98 fp = xfopen(s, "w", pszSrcFile, __LINE__); 101 99 if (fp) { 102 for (x = 0; quicktool[x] && x < 50;x++)103 fprintf(fp, "%s\n",quicktool[x]);100 for (x = 0; quicktool[x] && x < 50; x++) 101 fprintf(fp, "%s\n", quicktool[x]); 104 102 fclose(fp); 105 103 } 106 104 } 107 105 108 109 106 //== load_tools() Build tools list given .tls filename == 110 107 111 TOOL *load_tools(CHAR * filename)112 { 113 FILE 114 CHAR help[80],text[80],flagstr[80],idstr[80],*fname;115 TOOL 108 TOOL *load_tools(CHAR * filename) 109 { 110 FILE *fp; 111 CHAR help[80], text[80], flagstr[80], idstr[80], *fname; 112 TOOL *info; 116 113 117 114 if (!fToolbar) { … … 119 116 return toolhead; 120 117 } 121 if (!filename || 122 !*filename) 118 if (!filename || !*filename) 123 119 filename = (*lasttoolbox) ? lasttoolbox : "CMDS.TLS"; 124 120 if (*filename) 125 121 fname = searchpath(filename); 126 if (!fname || 127 !*fname) 122 if (!fname || !*fname) 128 123 fname = "FM3TOOLS.DAT"; 129 if (fname && 130 *fname) { 124 if (fname && *fname) { 131 125 filename = fname; 132 strcpy(lasttoolbox, filename);133 fp = _fsopen(filename, "r",SH_DENYWR);126 strcpy(lasttoolbox, filename); 127 fp = _fsopen(filename, "r", SH_DENYWR); 134 128 if (fp) { 135 129 toolhead = free_tools(); 136 130 while (!feof(fp)) { 137 138 if (!xfgets(help,sizeof(help),fp,pszSrcFile,__LINE__))139 140 141 142 if (!xfgets(text,sizeof(text),fp,pszSrcFile,__LINE__))143 144 145 if (!xfgets(flagstr,sizeof(flagstr),fp,pszSrcFile,__LINE__))146 147 if (!xfgets(idstr,sizeof(idstr),fp,pszSrcFile,__LINE__))148 149 if (!(USHORT)atoi(idstr))150 151 info = xmallocz(sizeof(TOOL),pszSrcFile,__LINE__);152 153 154 155 156 info->help = xstrdup(help,pszSrcFile,__LINE__);157 158 159 info->text = xstrdup(text,pszSrcFile,__LINE__);160 161 info->id = (USHORT)atoi(idstr);162 163 164 131 do { 132 if (!xfgets(help, sizeof(help), fp, pszSrcFile, __LINE__)) 133 break; 134 } while (*help == ';' && !feof(fp)); 135 stripcr(help); 136 if (!xfgets(text, sizeof(text), fp, pszSrcFile, __LINE__)) 137 break; 138 stripcr(text); 139 if (!xfgets(flagstr, sizeof(flagstr), fp, pszSrcFile, __LINE__)) 140 break; 141 if (!xfgets(idstr, sizeof(idstr), fp, pszSrcFile, __LINE__)) 142 break; 143 if (!(USHORT) atoi(idstr)) 144 continue; 145 info = xmallocz(sizeof(TOOL), pszSrcFile, __LINE__); 146 if (info) { 147 if (*help) { 148 literal(help); 149 if (*help) 150 info->help = xstrdup(help, pszSrcFile, __LINE__); 151 } 152 if (*text) 153 info->text = xstrdup(text, pszSrcFile, __LINE__); 154 info->flags = (atoi(flagstr) & (~(T_TEXT | T_EMPHASIZED))); 155 info->id = (USHORT) atoi(idstr); 156 info->next = NULL; 157 add_tool(info); 158 } 165 159 } 166 160 fclose(fp); … … 171 165 } 172 166 173 174 VOID save_tools(CHAR *filename) 175 { 176 FILE *fp; 177 CHAR *fname; 178 TOOL *info; 167 VOID save_tools(CHAR * filename) 168 { 169 FILE *fp; 170 CHAR *fname; 171 TOOL *info; 179 172 180 173 if (!filename) … … 194 187 } 195 188 196 if (stristr(filename, "FM3TOOLS.DAT"))189 if (stristr(filename, "FM3TOOLS.DAT")) 197 190 filename = "FM3TOOLS.TLS"; 198 191 if (toolhead && filename && *filename) { 199 strcpy(lasttoolbox, filename);200 PrfWriteProfileString(fmprof, FM3Str,"LastToolBox",filename);192 strcpy(lasttoolbox, filename); 193 PrfWriteProfileString(fmprof, FM3Str, "LastToolBox", filename); 201 194 } 202 195 if (!toolhead) { 203 unlinkf("%s", filename);196 unlinkf("%s", filename); 204 197 return; 205 198 } 206 fp = xfopen(filename, "w",pszSrcFile,__LINE__);199 fp = xfopen(filename, "w", pszSrcFile, __LINE__); 207 200 if (fp) { 208 fprintf(fp, GetPString(IDS_TOOLFILETEXT),filename);201 fprintf(fp, GetPString(IDS_TOOLFILETEXT), filename); 209 202 info = toolhead; 210 203 while (info) { 211 204 fprintf(fp, 212 "%s\n%s\n%u\n%u\n;\n", 213 (info->help) ? info->help : NullStr, 214 (info->text) ? info->text : NullStr, 215 (info->flags & (~(T_EMPHASIZED | T_TEXT))), 216 info->id); 205 "%s\n%s\n%u\n%u\n;\n", 206 (info->help) ? info->help : NullStr, 207 (info->text) ? info->text : NullStr, 208 (info->flags & (~(T_EMPHASIZED | T_TEXT))), info->id); 217 209 info = info->next; 218 210 } … … 221 213 } 222 214 if (hwndMain) 223 PostMsg(hwndMain,UM_FILLBUTTONLIST,MPVOID,MPVOID); 224 } 225 226 227 TOOL *add_tool(TOOL *tool) 215 PostMsg(hwndMain, UM_FILLBUTTONLIST, MPVOID, MPVOID); 216 } 217 218 TOOL *add_tool(TOOL * tool) 228 219 { 229 220 TOOL *info; … … 233 224 if (info) { 234 225 while (info->next) 235 226 info = info->next; 236 227 } 237 228 if (info) … … 244 235 } 245 236 246 247 TOOL *insert_tool(TOOL *tool,TOOL *after) 237 TOOL *insert_tool(TOOL * tool, TOOL * after) 248 238 { 249 239 if (tool) { … … 264 254 } 265 255 266 267 TOOL *del_tool(TOOL *tool) 268 { 269 TOOL *info,*prev = NULL; 256 TOOL *del_tool(TOOL * tool) 257 { 258 TOOL *info, *prev = NULL; 270 259 271 260 if (tool) { … … 273 262 while (info) { 274 263 if (info == tool) { 275 276 277 278 279 280 281 282 283 284 285 264 if (info == toolhead) 265 toolhead = info->next; 266 if (prev) 267 prev->next = info->next; 268 if (info->help) 269 free(info->help); 270 if (info->text) 271 free(info->text); 272 free(info); 273 fToolsChanged = TRUE; 274 break; 286 275 } 287 276 prev = info; … … 291 280 return toolhead; 292 281 } 293 294 282 295 283 TOOL *find_tool(USHORT id) … … 301 289 while (tool) { 302 290 if (id && tool->id == id) 303 291 return tool; 304 292 tool = tool->next; 305 293 } … … 308 296 } 309 297 310 311 TOOL *next_tool(TOOL *tool,BOOL skipinvisible) 298 TOOL *next_tool(TOOL * tool, BOOL skipinvisible) 312 299 { 313 300 while (tool) { … … 320 307 } 321 308 322 323 TOOL *prev_tool(TOOL *tool,BOOL skipinvisible) 309 TOOL *prev_tool(TOOL * tool, BOOL skipinvisible) 324 310 { 325 311 TOOL *info; … … 330 316 while (info) { 331 317 if (info->next == tool) { 332 333 334 335 336 318 if (skipinvisible && (info->flags & T_INVISIBLE)) { 319 tool = info; 320 goto Again; 321 } 322 return info; 337 323 } 338 324 if (!info->next && tool == toolhead) 339 325 return info; 340 326 info = info->next; 341 327 } … … 345 331 } 346 332 347 348 TOOL *swap_tools(TOOL *tool1,TOOL *tool2) 349 { 350 TOOL *prev1 = NULL,*prev2 = NULL,*info; 333 TOOL *swap_tools(TOOL * tool1, TOOL * tool2) 334 { 335 TOOL *prev1 = NULL, *prev2 = NULL, *info; 351 336 352 337 if (tool1 && tool2 && tool1 != tool2) { … … 354 339 while (info && !prev1 && !prev2) { 355 340 if (info->next == tool1) 356 341 prev1 = info; 357 342 else if (info->next == tool2) 358 343 prev2 = info; 359 344 info = info->next; 360 345 } … … 374 359 } 375 360 376 377 361 TOOL *free_tools(VOID) 378 362 { 379 TOOL *tool, *next;363 TOOL *tool, *next; 380 364 381 365 tool = toolhead; … … 393 377 } 394 378 395 396 MRESULT EXPENTRY ReOrderToolsProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)379 MRESULT EXPENTRY ReOrderToolsProc(HWND hwnd, ULONG msg, MPARAM mp1, 380 MPARAM mp2) 397 381 { 398 382 switch (msg) { 399 case WM_INITDLG: 400 if (!toolhead || !toolhead->next) 401 WinDismissDlg(hwnd,0); 402 WinSetWindowText(hwnd,GetPString(IDS_RETOOLTEXT)); 383 case WM_INITDLG: 384 if (!toolhead || !toolhead->next) 385 WinDismissDlg(hwnd, 0); 386 WinSetWindowText(hwnd, GetPString(IDS_RETOOLTEXT)); 387 { 388 TOOL *tool; 389 CHAR s[133]; 390 SHORT sSelect; 391 392 tool = toolhead; 393 while (tool) { 394 sprintf(s, "%-5u %s", tool->id, (tool->help) ? tool->help : "?"); 395 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, 396 RE_ADDLISTBOX, 397 LM_INSERTITEM, 398 MPFROMSHORT(LIT_END), MPFROMP(s)); 399 if (sSelect >= 0) 400 WinSendDlgItemMsg(hwnd, 401 RE_ADDLISTBOX, 402 LM_SETITEMHANDLE, 403 MPFROMSHORT(sSelect), MPFROMLONG((ULONG) tool)); 404 tool = tool->next; 405 } 406 } 407 break; 408 409 case WM_CONTROL: 410 return 0; 411 412 case WM_COMMAND: 413 switch (SHORT1FROMMP(mp1)) { 414 case DID_CANCEL: 415 WinDismissDlg(hwnd, 0); 416 break; 417 418 case DID_OK: 403 419 { 404 TOOL *tool; 405 CHAR s[133]; 406 SHORT sSelect; 407 408 tool = toolhead; 409 while (tool) { 410 sprintf(s, 411 "%-5u %s", 412 tool->id, 413 (tool->help) ? tool->help : "?"); 414 sSelect = (SHORT)WinSendDlgItemMsg(hwnd, 415 RE_ADDLISTBOX, 416 LM_INSERTITEM, 417 MPFROMSHORT(LIT_END), 418 MPFROMP(s)); 419 if (sSelect >= 0) 420 WinSendDlgItemMsg(hwnd, 421 RE_ADDLISTBOX, 422 LM_SETITEMHANDLE, 423 MPFROMSHORT(sSelect), 424 MPFROMLONG((ULONG)tool)); 425 tool = tool->next; 426 } 427 } 428 break; 429 430 case WM_CONTROL: 431 return 0; 432 433 case WM_COMMAND: 434 switch (SHORT1FROMMP(mp1)) { 435 case DID_CANCEL: 436 WinDismissDlg(hwnd,0); 437 break; 438 439 case DID_OK: 440 { 441 TOOL *tool,*thead = NULL,*last = NULL; 442 SHORT sSelect = 0,numitems; 443 444 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 445 LM_QUERYITEMCOUNT, 446 MPVOID,MPVOID); 447 while (numitems) { 448 tool = (TOOL *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 449 LM_QUERYITEMHANDLE, 450 MPFROMSHORT(sSelect++),MPVOID); 451 if (tool) { 452 if (!thead) 453 thead = tool; 454 else 455 last->next = tool; 456 last = tool; 457 } 458 numitems--; 459 } 460 sSelect = 0; 461 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 462 LM_QUERYITEMCOUNT, 463 MPVOID,MPVOID); 464 while (numitems) { 465 tool = (TOOL *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 466 LM_QUERYITEMHANDLE, 467 MPFROMSHORT(sSelect++), 468 MPVOID); 469 if (tool) { 470 if (!thead) 471 thead = tool; 472 else 473 last->next = tool; 474 last = tool; 475 } 476 numitems--; 477 } 478 if (last) 479 last->next = NULL; 480 toolhead = thead; 481 } 482 fToolsChanged = TRUE; 483 WinDismissDlg(hwnd,1); 484 break; 485 486 case IDM_HELP: 487 if (hwndHelp) 488 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 489 MPFROM2SHORT(HELP_REORDERBUTTONS,0), 490 MPFROMSHORT(HM_RESOURCEID)); 491 break; 492 493 case RE_ADD: 494 { 495 SHORT sSelect,sSelect2; 496 CHAR s[133]; 497 TOOL *tool; 498 499 sSelect = (USHORT)WinSendDlgItemMsg(hwnd, 500 RE_ADDLISTBOX, 501 LM_QUERYSELECTION, 502 MPFROMSHORT(LIT_FIRST), 503 MPVOID); 504 while (sSelect >= 0) { 505 tool = (TOOL *)WinSendDlgItemMsg(hwnd, 506 RE_ADDLISTBOX, 507 LM_QUERYITEMHANDLE, 508 MPFROMSHORT(sSelect), 509 MPVOID); 510 if (tool) { 511 sprintf(s, 512 "%-5u %s", 513 tool->id, 514 (tool->help) ? tool->help : "?"); 515 sSelect2 = (SHORT)WinSendDlgItemMsg(hwnd, 516 RE_REMOVELISTBOX, 517 LM_INSERTITEM, 518 MPFROM2SHORT(LIT_END,0), 519 MPFROMP(s)); 520 if (sSelect2 >= 0) 521 WinSendDlgItemMsg(hwnd, 522 RE_REMOVELISTBOX, 523 LM_SETITEMHANDLE, 524 MPFROMSHORT(sSelect2), 525 MPFROMLONG((ULONG)tool)); 526 WinSendDlgItemMsg(hwnd, 527 RE_ADDLISTBOX, 528 LM_DELETEITEM, 529 MPFROMSHORT(sSelect), 530 MPVOID); 531 } 532 else 533 WinSendDlgItemMsg(hwnd, 534 RE_ADDLISTBOX, 535 LM_SELECTITEM, 536 MPFROMSHORT(sSelect), 537 MPFROMSHORT(FALSE)); 538 sSelect = (USHORT)WinSendDlgItemMsg(hwnd, 539 RE_ADDLISTBOX, 540 LM_QUERYSELECTION, 541 MPFROMSHORT(LIT_FIRST), 542 MPVOID); 543 } 544 } 545 break; 546 547 case RE_REMOVE: 548 { 549 SHORT sSelect,sSelect2; 550 CHAR s[133]; 551 TOOL *tool; 552 553 sSelect = (USHORT)WinSendDlgItemMsg(hwnd, 554 RE_REMOVELISTBOX, 555 LM_QUERYSELECTION, 556 MPFROMSHORT(LIT_FIRST), 557 MPVOID); 558 while (sSelect >= 0) { 559 tool = (TOOL *)WinSendDlgItemMsg(hwnd, 560 RE_REMOVELISTBOX, 561 LM_QUERYITEMHANDLE, 562 MPFROMSHORT(sSelect), 563 MPVOID); 564 if (tool) { 565 sprintf(s, 566 "%-5u %s", 567 tool->id, 568 (tool->help) ? tool->help : "?"); 569 sSelect2 = (SHORT)WinSendDlgItemMsg(hwnd, 570 RE_ADDLISTBOX, 571 LM_INSERTITEM, 572 MPFROM2SHORT(LIT_END,0), 573 MPFROMP(s)); 574 if (sSelect2 >= 0) 575 WinSendDlgItemMsg(hwnd, 576 RE_ADDLISTBOX, 577 LM_SETITEMHANDLE, 578 MPFROMSHORT(sSelect2), 579 MPFROMLONG((ULONG)tool)); 580 WinSendDlgItemMsg(hwnd, 581 RE_REMOVELISTBOX, 582 LM_DELETEITEM, 583 MPFROMSHORT(sSelect), 584 MPVOID); 585 } 586 else 587 WinSendDlgItemMsg(hwnd, 588 RE_REMOVELISTBOX, 589 LM_SELECTITEM, 590 MPFROMSHORT(sSelect), 591 MPFROMSHORT(FALSE)); 592 sSelect = (USHORT)WinSendDlgItemMsg(hwnd, 593 RE_REMOVELISTBOX, 594 LM_QUERYSELECTION, 595 MPFROMSHORT(LIT_FIRST), 596 MPVOID); 597 } 598 } 599 break; 600 } 601 return 0; 602 } 603 return WinDefDlgProc(hwnd,msg,mp1,mp2); 604 } 605 606 607 MRESULT EXPENTRY AddToolProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 420 TOOL *tool, *thead = NULL, *last = NULL; 421 SHORT sSelect = 0, numitems; 422 423 numitems = (SHORT) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 424 LM_QUERYITEMCOUNT, 425 MPVOID, MPVOID); 426 while (numitems) { 427 tool = (TOOL *) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 428 LM_QUERYITEMHANDLE, 429 MPFROMSHORT(sSelect++), MPVOID); 430 if (tool) { 431 if (!thead) 432 thead = tool; 433 else 434 last->next = tool; 435 last = tool; 436 } 437 numitems--; 438 } 439 sSelect = 0; 440 numitems = (SHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 441 LM_QUERYITEMCOUNT, 442 MPVOID, MPVOID); 443 while (numitems) { 444 tool = (TOOL *) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 445 LM_QUERYITEMHANDLE, 446 MPFROMSHORT(sSelect++), MPVOID); 447 if (tool) { 448 if (!thead) 449 thead = tool; 450 else 451 last->next = tool; 452 last = tool; 453 } 454 numitems--; 455 } 456 if (last) 457 last->next = NULL; 458 toolhead = thead; 459 } 460 fToolsChanged = TRUE; 461 WinDismissDlg(hwnd, 1); 462 break; 463 464 case IDM_HELP: 465 if (hwndHelp) 466 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 467 MPFROM2SHORT(HELP_REORDERBUTTONS, 0), 468 MPFROMSHORT(HM_RESOURCEID)); 469 break; 470 471 case RE_ADD: 472 { 473 SHORT sSelect, sSelect2; 474 CHAR s[133]; 475 TOOL *tool; 476 477 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, 478 RE_ADDLISTBOX, 479 LM_QUERYSELECTION, 480 MPFROMSHORT(LIT_FIRST), MPVOID); 481 while (sSelect >= 0) { 482 tool = (TOOL *) WinSendDlgItemMsg(hwnd, 483 RE_ADDLISTBOX, 484 LM_QUERYITEMHANDLE, 485 MPFROMSHORT(sSelect), MPVOID); 486 if (tool) { 487 sprintf(s, "%-5u %s", tool->id, (tool->help) ? tool->help : "?"); 488 sSelect2 = (SHORT) WinSendDlgItemMsg(hwnd, 489 RE_REMOVELISTBOX, 490 LM_INSERTITEM, 491 MPFROM2SHORT(LIT_END, 0), 492 MPFROMP(s)); 493 if (sSelect2 >= 0) 494 WinSendDlgItemMsg(hwnd, 495 RE_REMOVELISTBOX, 496 LM_SETITEMHANDLE, 497 MPFROMSHORT(sSelect2), 498 MPFROMLONG((ULONG) tool)); 499 WinSendDlgItemMsg(hwnd, 500 RE_ADDLISTBOX, 501 LM_DELETEITEM, MPFROMSHORT(sSelect), MPVOID); 502 } 503 else 504 WinSendDlgItemMsg(hwnd, 505 RE_ADDLISTBOX, 506 LM_SELECTITEM, 507 MPFROMSHORT(sSelect), MPFROMSHORT(FALSE)); 508 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, 509 RE_ADDLISTBOX, 510 LM_QUERYSELECTION, 511 MPFROMSHORT(LIT_FIRST), 512 MPVOID); 513 } 514 } 515 break; 516 517 case RE_REMOVE: 518 { 519 SHORT sSelect, sSelect2; 520 CHAR s[133]; 521 TOOL *tool; 522 523 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, 524 RE_REMOVELISTBOX, 525 LM_QUERYSELECTION, 526 MPFROMSHORT(LIT_FIRST), MPVOID); 527 while (sSelect >= 0) { 528 tool = (TOOL *) WinSendDlgItemMsg(hwnd, 529 RE_REMOVELISTBOX, 530 LM_QUERYITEMHANDLE, 531 MPFROMSHORT(sSelect), MPVOID); 532 if (tool) { 533 sprintf(s, "%-5u %s", tool->id, (tool->help) ? tool->help : "?"); 534 sSelect2 = (SHORT) WinSendDlgItemMsg(hwnd, 535 RE_ADDLISTBOX, 536 LM_INSERTITEM, 537 MPFROM2SHORT(LIT_END, 0), 538 MPFROMP(s)); 539 if (sSelect2 >= 0) 540 WinSendDlgItemMsg(hwnd, 541 RE_ADDLISTBOX, 542 LM_SETITEMHANDLE, 543 MPFROMSHORT(sSelect2), 544 MPFROMLONG((ULONG) tool)); 545 WinSendDlgItemMsg(hwnd, 546 RE_REMOVELISTBOX, 547 LM_DELETEITEM, MPFROMSHORT(sSelect), MPVOID); 548 } 549 else 550 WinSendDlgItemMsg(hwnd, 551 RE_REMOVELISTBOX, 552 LM_SELECTITEM, 553 MPFROMSHORT(sSelect), MPFROMSHORT(FALSE)); 554 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, 555 RE_REMOVELISTBOX, 556 LM_QUERYSELECTION, 557 MPFROMSHORT(LIT_FIRST), 558 MPVOID); 559 } 560 } 561 break; 562 } 563 return 0; 564 } 565 return WinDefDlgProc(hwnd, msg, mp1, mp2); 566 } 567 568 MRESULT EXPENTRY AddToolProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 608 569 { 609 570 switch (msg) { 610 case WM_INITDLG: 611 WinSetWindowPtr(hwnd,QWL_USER,mp2); 612 if (mp2) { 613 WinSetWindowText(hwnd,GetPString(IDS_EDITTOOLTEXT)); 614 WinSendDlgItemMsg(hwnd,ADDBTN_ID,EM_SETREADONLY, 615 MPFROM2SHORT(TRUE,0),MPVOID); 616 } 617 WinSendDlgItemMsg(hwnd,ADDBTN_HELP,EM_SETTEXTLIMIT, 618 MPFROM2SHORT(80,0),MPVOID); 619 WinSendDlgItemMsg(hwnd,ADDBTN_TEXT,EM_SETTEXTLIMIT, 620 MPFROM2SHORT(80,0),MPVOID); 621 WinSendDlgItemMsg(hwnd,ADDBTN_ID,EM_SETTEXTLIMIT, 622 MPFROM2SHORT(5,0),MPVOID); 623 if (!mp2) 624 WinCheckButton(hwnd,ADDBTN_VISIBLE,TRUE); 625 else { 626 TOOL *tool = (TOOL *)mp2; 627 CHAR s[33]; 628 629 if (tool->help) 630 WinSetDlgItemText(hwnd,ADDBTN_HELP,tool->help); 631 if (tool->text) 632 WinSetDlgItemText(hwnd,ADDBTN_TEXT,tool->text); 633 if (tool->flags & T_MYICON) 634 WinCheckButton(hwnd,ADDBTN_MYICON,TRUE); 635 else 636 WinEnableWindow(WinWindowFromID(hwnd,ADDBTN_EDITBMP),FALSE); 637 if (tool->flags & T_DROPABLE) 638 WinCheckButton(hwnd,ADDBTN_DROPABLE,TRUE); 639 if (!(tool->flags & T_INVISIBLE)) 640 WinCheckButton(hwnd,ADDBTN_VISIBLE,TRUE); 641 if (tool->flags & T_SEPARATOR) 642 WinCheckButton(hwnd,ADDBTN_SEPARATOR,TRUE); 643 if (tool->flags & T_TEXT) 644 WinCheckButton(hwnd,ADDBTN_SHOWTEXT,TRUE); 645 sprintf(s,"%u",tool->id); 646 WinSetDlgItemText(hwnd,ADDBTN_ID,s); 647 WinEnableWindow(WinWindowFromID(hwnd,ADDBTN_SHOWTEXT),FALSE); 648 } 649 WinShowWindow(WinWindowFromID(hwnd,ADDBTN_SHOWTEXT),FALSE); 650 PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID); 651 break; 652 653 case WM_ADJUSTWINDOWPOS: 654 PostMsg(hwnd,UM_SETDIR,MPVOID,MPVOID); 655 break; 656 657 case UM_SETDIR: 658 PaintRecessedWindow(WinWindowFromID(hwnd,ADDBTN_HELPME),(HPS)0,FALSE, 659 TRUE); 660 PaintRecessedWindow(WinWindowFromID(hwnd,ADDBTN_BMP),(HPS)0,TRUE, 661 FALSE); 662 return 0; 663 664 case UM_SETUP: 571 case WM_INITDLG: 572 WinSetWindowPtr(hwnd, QWL_USER, mp2); 573 if (mp2) { 574 WinSetWindowText(hwnd, GetPString(IDS_EDITTOOLTEXT)); 575 WinSendDlgItemMsg(hwnd, ADDBTN_ID, EM_SETREADONLY, 576 MPFROM2SHORT(TRUE, 0), MPVOID); 577 } 578 WinSendDlgItemMsg(hwnd, ADDBTN_HELP, EM_SETTEXTLIMIT, 579 MPFROM2SHORT(80, 0), MPVOID); 580 WinSendDlgItemMsg(hwnd, ADDBTN_TEXT, EM_SETTEXTLIMIT, 581 MPFROM2SHORT(80, 0), MPVOID); 582 WinSendDlgItemMsg(hwnd, ADDBTN_ID, EM_SETTEXTLIMIT, 583 MPFROM2SHORT(5, 0), MPVOID); 584 if (!mp2) 585 WinCheckButton(hwnd, ADDBTN_VISIBLE, TRUE); 586 else { 587 TOOL *tool = (TOOL *) mp2; 588 CHAR s[33]; 589 590 if (tool->help) 591 WinSetDlgItemText(hwnd, ADDBTN_HELP, tool->help); 592 if (tool->text) 593 WinSetDlgItemText(hwnd, ADDBTN_TEXT, tool->text); 594 if (tool->flags & T_MYICON) 595 WinCheckButton(hwnd, ADDBTN_MYICON, TRUE); 596 else 597 WinEnableWindow(WinWindowFromID(hwnd, ADDBTN_EDITBMP), FALSE); 598 if (tool->flags & T_DROPABLE) 599 WinCheckButton(hwnd, ADDBTN_DROPABLE, TRUE); 600 if (!(tool->flags & T_INVISIBLE)) 601 WinCheckButton(hwnd, ADDBTN_VISIBLE, TRUE); 602 if (tool->flags & T_SEPARATOR) 603 WinCheckButton(hwnd, ADDBTN_SEPARATOR, TRUE); 604 if (tool->flags & T_TEXT) 605 WinCheckButton(hwnd, ADDBTN_SHOWTEXT, TRUE); 606 sprintf(s, "%u", tool->id); 607 WinSetDlgItemText(hwnd, ADDBTN_ID, s); 608 WinEnableWindow(WinWindowFromID(hwnd, ADDBTN_SHOWTEXT), FALSE); 609 } 610 WinShowWindow(WinWindowFromID(hwnd, ADDBTN_SHOWTEXT), FALSE); 611 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 612 break; 613 614 case WM_ADJUSTWINDOWPOS: 615 PostMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 616 break; 617 618 case UM_SETDIR: 619 PaintRecessedWindow(WinWindowFromID(hwnd, ADDBTN_HELPME), (HPS) 0, FALSE, 620 TRUE); 621 PaintRecessedWindow(WinWindowFromID(hwnd, ADDBTN_BMP), (HPS) 0, TRUE, 622 FALSE); 623 return 0; 624 625 case UM_SETUP: 626 { 627 HBITMAP hbm = (HBITMAP) 0, hbmd, hbmdd; 628 HPS hps; 629 CHAR idstr[7]; 630 USHORT id; 631 632 *idstr = 0; 633 WinQueryDlgItemText(hwnd, ADDBTN_ID, 6, idstr); 634 id = atoi(idstr); 635 if (id) { 636 hps = WinGetPS(WinWindowFromID(hwnd, ADDBTN_BMP)); 637 if (!WinQueryButtonCheckstate(hwnd, ADDBTN_MYICON)) 638 hbm = GpiLoadBitmap(hps, 0, id, 28, 28); 639 if (!hbm) 640 hbm = LoadBitmapFromFileNum(id); 641 if (hbm) { 642 hbmd = (HBITMAP) WinSendDlgItemMsg(hwnd, ADDBTN_BMP, SM_QUERYHANDLE, 643 MPVOID, MPVOID); 644 hbmdd = (HBITMAP) WinSendDlgItemMsg(hwnd, ADDBTN_BMP, SM_SETHANDLE, 645 MPFROMLONG(hbm), MPVOID); 646 if (hbmdd && hbmd && hbmd != hbmdd) 647 GpiDeleteBitmap(hbmd); 648 } 649 } 650 } 651 return 0; 652 653 case WM_CONTROL: 654 switch (SHORT1FROMMP(mp1)) { 655 case ADDBTN_HELP: 656 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 657 WinSetDlgItemText(hwnd, ADDBTN_HELPME, NullStr); 658 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 659 WinSetDlgItemText(hwnd, ADDBTN_HELPME, 660 GetPString(IDS_ADDTOOLQUICKHELPTEXT)); 661 break; 662 663 case ADDBTN_TEXT: 664 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 665 WinSetDlgItemText(hwnd, ADDBTN_HELPME, NullStr); 666 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 667 WinSetDlgItemText(hwnd, ADDBTN_HELPME, 668 GetPString(IDS_ADDTOOLBUTTONTEXT)); 669 break; 670 671 case ADDBTN_ID: 672 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) { 673 WinSetDlgItemText(hwnd, ADDBTN_HELPME, NullStr); 674 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 675 } 676 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 677 WinSetDlgItemText(hwnd, 678 ADDBTN_HELPME, GetPString(IDS_ADDTOOLBUTTONIDTEXT)); 679 break; 680 681 case ADDBTN_MYICON: 682 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 683 WinEnableWindow(WinWindowFromID(hwnd, ADDBTN_EDITBMP), 684 WinQueryButtonCheckstate(hwnd, ADDBTN_MYICON)); 685 break; 686 } 687 return 0; 688 689 case WM_COMMAND: 690 switch (SHORT1FROMMP(mp1)) { 691 case DID_OK: 665 692 { 666 HBITMAP hbm = (HBITMAP)0,hbmd,hbmdd; 667 HPS hps; 668 CHAR idstr[7]; 669 USHORT id; 670 671 *idstr = 0; 672 WinQueryDlgItemText(hwnd,ADDBTN_ID,6,idstr); 673 id = atoi(idstr); 674 if (id) { 675 hps = WinGetPS(WinWindowFromID(hwnd,ADDBTN_BMP)); 676 if (!WinQueryButtonCheckstate(hwnd,ADDBTN_MYICON)) 677 hbm = GpiLoadBitmap(hps,0,id,28,28); 678 if (!hbm) 679 hbm = LoadBitmapFromFileNum(id); 680 if (hbm) { 681 hbmd = (HBITMAP)WinSendDlgItemMsg(hwnd,ADDBTN_BMP,SM_QUERYHANDLE, 682 MPVOID,MPVOID); 683 hbmdd = (HBITMAP)WinSendDlgItemMsg(hwnd,ADDBTN_BMP,SM_SETHANDLE, 684 MPFROMLONG(hbm),MPVOID); 685 if (hbmdd && hbmd && hbmd != hbmdd) 686 GpiDeleteBitmap(hbmd); 687 } 688 } 689 } 690 return 0; 691 692 case WM_CONTROL: 693 switch (SHORT1FROMMP(mp1)) { 694 case ADDBTN_HELP: 695 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 696 WinSetDlgItemText(hwnd,ADDBTN_HELPME,NullStr); 697 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 698 WinSetDlgItemText(hwnd,ADDBTN_HELPME, 699 GetPString(IDS_ADDTOOLQUICKHELPTEXT)); 700 break; 701 702 case ADDBTN_TEXT: 703 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) 704 WinSetDlgItemText(hwnd,ADDBTN_HELPME,NullStr); 705 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 706 WinSetDlgItemText(hwnd,ADDBTN_HELPME, 707 GetPString(IDS_ADDTOOLBUTTONTEXT)); 708 break; 709 710 case ADDBTN_ID: 711 if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) { 712 WinSetDlgItemText(hwnd,ADDBTN_HELPME,NullStr); 713 PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID); 714 } 715 if (SHORT2FROMMP(mp1) == EN_SETFOCUS) 716 WinSetDlgItemText(hwnd, 717 ADDBTN_HELPME, 718 GetPString(IDS_ADDTOOLBUTTONIDTEXT)); 719 break; 720 721 case ADDBTN_MYICON: 722 PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID); 723 WinEnableWindow(WinWindowFromID(hwnd,ADDBTN_EDITBMP), 724 WinQueryButtonCheckstate(hwnd,ADDBTN_MYICON)); 725 break; 726 } 727 return 0; 728 729 case WM_COMMAND: 730 switch (SHORT1FROMMP(mp1)) { 731 case DID_OK: 732 { 733 CHAR help[81],text[81],idstr[7]; 734 BOOL invisible,dropable,separator,istext,myicon; 735 TOOL *tool; 736 737 WinQueryDlgItemText(hwnd,ADDBTN_HELP,80,help); 738 WinQueryDlgItemText(hwnd,ADDBTN_TEXT,80,text); 739 if (WinQueryButtonCheckstate(hwnd,ADDBTN_DROPABLE)) 740 dropable = TRUE; 741 else 742 dropable = FALSE; 743 myicon = WinQueryButtonCheckstate(hwnd,ADDBTN_MYICON); 744 if (WinQueryButtonCheckstate(hwnd,ADDBTN_VISIBLE)) 745 invisible = FALSE; 746 else 747 invisible = TRUE; 748 if (WinQueryButtonCheckstate(hwnd,ADDBTN_SEPARATOR)) 749 separator = TRUE; 750 else 751 separator = FALSE; 752 if (WinQueryButtonCheckstate(hwnd,ADDBTN_SHOWTEXT)) 753 istext = TRUE; 754 else 755 istext = FALSE; 756 tool = INSTDATA(hwnd); 757 if (tool) { /* just editing strings... */ 758 istext = ((tool->flags & T_TEXT) != 0); 759 if (tool->help) 760 free(tool->help); 761 tool->help = NULL; 762 if (tool->text) 763 free(tool->text); 764 tool->text = NULL; 765 if (*help) 766 tool->help = xstrdup(help,pszSrcFile,__LINE__); 767 if (*text) 768 tool->text = xstrdup(text,pszSrcFile,__LINE__); 769 tool->flags = (((dropable) ? T_DROPABLE : 0) | 770 ((invisible) ? T_INVISIBLE : 0) | 771 ((separator) ? T_SEPARATOR : 0) | 772 ((myicon) ? T_MYICON : 0) | 773 ((istext) ? T_TEXT : 0)); 774 fToolsChanged = TRUE; 775 WinDismissDlg(hwnd,1); 776 break; 777 } 778 *idstr = 0; 779 WinQueryDlgItemText(hwnd,ADDBTN_ID,6,idstr); 780 if (!(USHORT)atoi(idstr)) { 781 DosBeep(250,100); 782 break; 783 } 784 tool = toolhead; 785 while (tool) { 786 if (tool->id == (USHORT)atoi(idstr) && tool != tool) { 787 saymsg(MB_ENTER, 788 hwnd, 789 GetPString(IDS_DUPLICATETEXT), 790 GetPString(IDS_TOOLIDEXISTS)); 791 WinSetDlgItemText(hwnd,ADDBTN_ID,NullStr); 792 WinSetFocus(HWND_DESKTOP,WinWindowFromID(hwnd,ADDBTN_ID)); 793 break; 794 } 795 tool = tool->next; 796 } 797 tool = xmallocz(sizeof(TOOL),pszSrcFile,__LINE__); 798 if (tool) { 799 if (*help) 800 tool->help = xstrdup(help,pszSrcFile,__LINE__); 801 if (*text) 802 tool->text = xstrdup(text,pszSrcFile,__LINE__); 803 tool->id = (USHORT)atoi(idstr); 804 tool->flags = (((dropable) ? T_DROPABLE : 0) | 805 ((invisible) ? T_INVISIBLE : 0) | 806 ((separator) ? T_SEPARATOR : 0) | 807 ((myicon) ? T_MYICON : 0) | 808 ((istext) ? T_TEXT : 0)); 809 add_tool(tool); 810 WinDismissDlg(hwnd,tool->id); 811 } 812 } 813 break; 814 815 case DID_CANCEL: 816 WinDismissDlg(hwnd,0); 817 break; 818 819 case ADDBTN_EDITBMP: 820 { 821 CHAR idstr[6],filename[34]; 822 823 *idstr = 0; 824 WinQueryDlgItemText(hwnd,ADDBTN_ID,6,idstr); 825 if (!(USHORT)atoi(idstr)) { 826 DosBeep(250,100); 827 break; 828 } 829 sprintf(filename,"%u.BMP",atoi(idstr)); 830 if (IsFile(filename) != 1) { 831 CHAR s[CCHMAXPATH] = "EMPTY.BMP"; 832 docopyf(COPY, s, filename); 693 CHAR help[81], text[81], idstr[7]; 694 BOOL invisible, dropable, separator, istext, myicon; 695 TOOL *tool; 696 697 WinQueryDlgItemText(hwnd, ADDBTN_HELP, 80, help); 698 WinQueryDlgItemText(hwnd, ADDBTN_TEXT, 80, text); 699 if (WinQueryButtonCheckstate(hwnd, ADDBTN_DROPABLE)) 700 dropable = TRUE; 701 else 702 dropable = FALSE; 703 myicon = WinQueryButtonCheckstate(hwnd, ADDBTN_MYICON); 704 if (WinQueryButtonCheckstate(hwnd, ADDBTN_VISIBLE)) 705 invisible = FALSE; 706 else 707 invisible = TRUE; 708 if (WinQueryButtonCheckstate(hwnd, ADDBTN_SEPARATOR)) 709 separator = TRUE; 710 else 711 separator = FALSE; 712 if (WinQueryButtonCheckstate(hwnd, ADDBTN_SHOWTEXT)) 713 istext = TRUE; 714 else 715 istext = FALSE; 716 tool = INSTDATA(hwnd); 717 if (tool) { /* just editing strings... */ 718 istext = ((tool->flags & T_TEXT) != 0); 719 if (tool->help) 720 free(tool->help); 721 tool->help = NULL; 722 if (tool->text) 723 free(tool->text); 724 tool->text = NULL; 725 if (*help) 726 tool->help = xstrdup(help, pszSrcFile, __LINE__); 727 if (*text) 728 tool->text = xstrdup(text, pszSrcFile, __LINE__); 729 tool->flags = (((dropable) ? T_DROPABLE : 0) | 730 ((invisible) ? T_INVISIBLE : 0) | 731 ((separator) ? T_SEPARATOR : 0) | 732 ((myicon) ? T_MYICON : 0) | ((istext) ? T_TEXT : 0)); 733 fToolsChanged = TRUE; 734 WinDismissDlg(hwnd, 1); 735 break; 736 } 737 *idstr = 0; 738 WinQueryDlgItemText(hwnd, ADDBTN_ID, 6, idstr); 739 if (!(USHORT) atoi(idstr)) { 740 DosBeep(250, 100); 741 break; 742 } 743 tool = toolhead; 744 while (tool) { 745 if (tool->id == (USHORT) atoi(idstr) && tool != tool) { 746 saymsg(MB_ENTER, 747 hwnd, 748 GetPString(IDS_DUPLICATETEXT), 749 GetPString(IDS_TOOLIDEXISTS)); 750 WinSetDlgItemText(hwnd, ADDBTN_ID, NullStr); 751 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, ADDBTN_ID)); 752 break; 753 } 754 tool = tool->next; 755 } 756 tool = xmallocz(sizeof(TOOL), pszSrcFile, __LINE__); 757 if (tool) { 758 if (*help) 759 tool->help = xstrdup(help, pszSrcFile, __LINE__); 760 if (*text) 761 tool->text = xstrdup(text, pszSrcFile, __LINE__); 762 tool->id = (USHORT) atoi(idstr); 763 tool->flags = (((dropable) ? T_DROPABLE : 0) | 764 ((invisible) ? T_INVISIBLE : 0) | 765 ((separator) ? T_SEPARATOR : 0) | 766 ((myicon) ? T_MYICON : 0) | ((istext) ? T_TEXT : 0)); 767 add_tool(tool); 768 WinDismissDlg(hwnd, tool->id); 769 } 770 } 771 break; 772 773 case DID_CANCEL: 774 WinDismissDlg(hwnd, 0); 775 break; 776 777 case ADDBTN_EDITBMP: 778 { 779 CHAR idstr[6], filename[34]; 780 781 *idstr = 0; 782 WinQueryDlgItemText(hwnd, ADDBTN_ID, 6, idstr); 783 if (!(USHORT) atoi(idstr)) { 784 DosBeep(250, 100); 785 break; 786 } 787 sprintf(filename, "%u.BMP", atoi(idstr)); 788 if (IsFile(filename) != 1) { 789 CHAR s[CCHMAXPATH] = "EMPTY.BMP"; 790 791 docopyf(COPY, s, filename); 792 } 793 runemf2(SEPARATE | WINDOWED, 794 hwnd, NULL, NULL, "ICONEDIT.EXE %s", filename); 795 } 796 break; 797 798 case IDM_HELP: 799 if (hwndHelp) { 800 if (INSTDATA(hwnd)) 801 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 802 MPFROM2SHORT(HELP_CHANGEBUTTON, 0), 803 MPFROMSHORT(HM_RESOURCEID)); 804 else 805 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 806 MPFROM2SHORT(HELP_ADDBUTTON, 0), 807 MPFROMSHORT(HM_RESOURCEID)); 808 } 809 break; 810 } 811 return 0; 812 } 813 return WinDefDlgProc(hwnd, msg, mp1, mp2); 814 } 815 816 MRESULT EXPENTRY PickToolProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 817 { 818 switch (msg) { 819 case WM_INITDLG: 820 if (mp2) { 821 CHAR s[133]; 822 823 sprintf(s, GetPString(IDS_PICKTOOLTITLETEXT), (CHAR *) mp2); 824 WinSetWindowText(hwnd, s); 825 } 826 { 827 TOOL *tool; 828 CHAR s[133]; 829 830 tool = toolhead; 831 while (tool) { 832 sprintf(s, "%-5u %s", tool->id, (tool->help) ? tool->help : "?"); 833 WinSendDlgItemMsg(hwnd, 834 PICKBTN_LISTBOX, 835 LM_INSERTITEM, MPFROMSHORT(LIT_END), MPFROMP(s)); 836 tool = tool->next; 837 } 838 } 839 break; 840 841 case WM_CONTROL: 842 if (SHORT1FROMMP(mp1) == PICKBTN_LISTBOX) { 843 switch (SHORT2FROMMP(mp1)) { 844 case LN_ENTER: 845 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID); 846 break; 847 } 848 } 849 return 0; 850 851 case WM_COMMAND: 852 switch (SHORT1FROMMP(mp1)) { 853 case DID_CANCEL: 854 WinDismissDlg(hwnd, 0); 855 break; 856 case DID_OK: 857 { 858 SHORT sSelect; 859 CHAR s[33]; 860 861 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, PICKBTN_LISTBOX, 862 LM_QUERYSELECTION, 863 MPFROMSHORT(LIT_FIRST), MPVOID); 864 if (sSelect >= 0) { 865 *s = 0; 866 WinSendDlgItemMsg(hwnd, PICKBTN_LISTBOX, LM_QUERYITEMTEXT, 867 MPFROM2SHORT(sSelect, 32), MPFROMP(s)); 868 if (*s) 869 WinDismissDlg(hwnd, (USHORT) atoi(s)); 870 } 871 } 872 break; 873 } 874 return 0; 875 } 876 return WinDefDlgProc(hwnd, msg, mp1, mp2); 877 } 878 879 MRESULT EXPENTRY ToolIODlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 880 { 881 switch (msg) { 882 case WM_INITDLG: 883 if (mp2) 884 WinSetWindowULong(hwnd, QWL_USER, TRUE); 885 else { 886 WinSetWindowULong(hwnd, QWL_USER, FALSE); 887 WinSetWindowText(hwnd, GetPString(IDS_LOADTOOLBOXTITLETEXT)); 888 } 889 WinSendDlgItemMsg(hwnd, 890 SVBTN_ENTRY, 891 EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID); 892 { 893 FILEFINDBUF3 findbuf; 894 HDIR hDir; 895 ULONG ulSearchCount, x = 0; 896 CHAR *masks[] = { "*.TLS", "FM3TOOLS.DAT", NULL }; 897 898 if (mp2) 899 masks[1] = NULL; 900 while (masks[x]) { 901 hDir = HDIR_CREATE; 902 ulSearchCount = 1L; 903 DosError(FERR_DISABLEHARDERR); 904 if (!DosFindFirst(masks[x], 905 &hDir, 906 FILE_ARCHIVED, 907 &findbuf, 908 sizeof(FILEFINDBUF3), 909 &ulSearchCount, FIL_STANDARD)) { 910 do { 911 priority_bumped(); 912 WinSendMsg(WinWindowFromID(hwnd, 913 SVBTN_LISTBOX), 914 LM_INSERTITEM, 915 MPFROM2SHORT(LIT_SORTASCENDING, 0), 916 MPFROMP(findbuf.achName)); 917 ulSearchCount = 1L; 918 } while (!DosFindNext(hDir, 919 &findbuf, 920 sizeof(FILEFINDBUF3), &ulSearchCount)); 921 DosFindClose(hDir); 922 priority_bumped(); 923 } 924 x++; 925 } 926 DosError(FERR_DISABLEHARDERR); 927 } 928 if (!WinSendDlgItemMsg(hwnd, 929 SVBTN_LISTBOX, 930 LM_QUERYITEMCOUNT, MPVOID, MPVOID)) { 931 WinEnableWindow(WinWindowFromID(hwnd, SVBTN_LISTBOX), FALSE); 932 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID); 933 } 934 WinSetDlgItemText(hwnd, 935 SVBTN_CURRENT, 936 (*lasttoolbox) ? lasttoolbox : "FM3TOOLS.DAT"); 937 break; 938 939 case UM_SETUP: 940 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, SVBTN_ENTRY)); 941 return 0; 942 943 case WM_CONTROL: 944 if (SHORT1FROMMP(mp1) == SVBTN_LISTBOX) { 945 SHORT sSelect; 946 CHAR szBuffer[CCHMAXPATH]; 947 948 switch (SHORT2FROMMP(mp1)) { 949 case LN_SELECT: 950 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, SVBTN_LISTBOX, 951 LM_QUERYSELECTION, 952 MPFROMSHORT(LIT_FIRST), MPVOID); 953 if (sSelect >= 0) { 954 *szBuffer = 0; 955 WinSendDlgItemMsg(hwnd, SVBTN_LISTBOX, LM_QUERYITEMTEXT, 956 MPFROM2SHORT(sSelect, CCHMAXPATH), 957 MPFROMP(szBuffer)); 958 if (*szBuffer) 959 WinSetDlgItemText(hwnd, SVBTN_ENTRY, szBuffer); 960 } 961 break; 962 963 case LN_ENTER: 964 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID); 965 break; 966 } 967 } 968 return 0; 969 970 case WM_COMMAND: 971 switch (SHORT1FROMMP(mp1)) { 972 case IDM_HELP: 973 if (hwndHelp) { 974 if (INSTDATA(hwnd)) 975 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 976 MPFROM2SHORT(HELP_SAVETOOLS, 0), 977 MPFROMSHORT(HM_RESOURCEID)); 978 else 979 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 980 MPFROM2SHORT(HELP_LOADTOOLS, 0), 981 MPFROMSHORT(HM_RESOURCEID)); 982 } 983 break; 984 985 case DID_CANCEL: 986 WinDismissDlg(hwnd, 0); 987 break; 988 989 case DID_OK: 990 { 991 BOOL saving = WinQueryWindowULong(hwnd, QWL_USER); 992 CHAR temptools[CCHMAXPATH]; 993 994 strcpy(temptools, lasttoolbox); 995 if (fToolsChanged) 996 save_tools(NULL); 997 WinQueryDlgItemText(hwnd, 998 SVBTN_ENTRY, sizeof(lasttoolbox), lasttoolbox); 999 if (*lasttoolbox) { 1000 if (!strchr(lasttoolbox, '.')) 1001 strcat(lasttoolbox, ".TLS"); 1002 } 1003 if (saving && *lasttoolbox) 1004 save_tools(NULL); 1005 else { 1006 if (!load_tools(NULL)) { 1007 strcpy(lasttoolbox, temptools); 1008 if (!load_tools(NULL)) { 1009 *lasttoolbox = 0; 1010 load_tools(NULL); 833 1011 } 834 runemf2(SEPARATE | WINDOWED, 835 hwnd, 836 NULL, 837 NULL, 838 "ICONEDIT.EXE %s", 839 filename); 840 } 841 break; 842 843 case IDM_HELP: 844 if (hwndHelp) { 845 if (INSTDATA(hwnd)) 846 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 847 MPFROM2SHORT(HELP_CHANGEBUTTON,0), 848 MPFROMSHORT(HM_RESOURCEID)); 849 else 850 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 851 MPFROM2SHORT(HELP_ADDBUTTON,0), 852 MPFROMSHORT(HM_RESOURCEID)); 853 } 854 break; 855 } 856 return 0; 857 } 858 return WinDefDlgProc(hwnd,msg,mp1,mp2); 859 } 860 861 862 MRESULT EXPENTRY PickToolProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 863 { 864 switch (msg) { 865 case WM_INITDLG: 866 if (mp2) { 867 CHAR s[133]; 868 869 sprintf(s, 870 GetPString(IDS_PICKTOOLTITLETEXT), 871 (CHAR *)mp2); 872 WinSetWindowText(hwnd,s); 873 } 874 { 875 TOOL *tool; 876 CHAR s[133]; 877 878 tool = toolhead; 879 while (tool) { 880 sprintf(s, 881 "%-5u %s", 882 tool->id, 883 (tool->help) ? tool->help : "?"); 884 WinSendDlgItemMsg(hwnd, 885 PICKBTN_LISTBOX, 886 LM_INSERTITEM, 887 MPFROMSHORT(LIT_END), 888 MPFROMP(s)); 889 tool = tool->next; 890 } 891 } 892 break; 893 894 case WM_CONTROL: 895 if (SHORT1FROMMP(mp1) == PICKBTN_LISTBOX) { 896 switch (SHORT2FROMMP(mp1)) { 897 case LN_ENTER: 898 PostMsg(hwnd,WM_COMMAND,MPFROM2SHORT(DID_OK,0),MPVOID); 899 break; 900 } 901 } 902 return 0; 903 904 case WM_COMMAND: 905 switch (SHORT1FROMMP(mp1)) { 906 case DID_CANCEL: 907 WinDismissDlg(hwnd,0); 908 break; 909 case DID_OK: 910 { 911 SHORT sSelect; 912 CHAR s[33]; 913 914 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,PICKBTN_LISTBOX, 915 LM_QUERYSELECTION, 916 MPFROMSHORT(LIT_FIRST), 917 MPVOID); 918 if (sSelect >= 0) { 919 *s = 0; 920 WinSendDlgItemMsg(hwnd,PICKBTN_LISTBOX,LM_QUERYITEMTEXT, 921 MPFROM2SHORT(sSelect,32),MPFROMP(s)); 922 if (*s) 923 WinDismissDlg(hwnd,(USHORT)atoi(s)); 924 } 925 } 926 break; 927 } 928 return 0; 929 } 930 return WinDefDlgProc(hwnd,msg,mp1,mp2); 931 } 932 933 934 MRESULT EXPENTRY ToolIODlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 935 { 936 switch (msg) { 937 case WM_INITDLG: 938 if (mp2) 939 WinSetWindowULong(hwnd,QWL_USER,TRUE); 940 else { 941 WinSetWindowULong(hwnd,QWL_USER,FALSE); 942 WinSetWindowText(hwnd, 943 GetPString(IDS_LOADTOOLBOXTITLETEXT)); 944 } 945 WinSendDlgItemMsg(hwnd, 946 SVBTN_ENTRY, 947 EM_SETTEXTLIMIT, 948 MPFROM2SHORT(CCHMAXPATH,0), 949 MPVOID); 950 { 951 FILEFINDBUF3 findbuf; 952 HDIR hDir; 953 ULONG ulSearchCount,x = 0; 954 CHAR *masks[] = {"*.TLS","FM3TOOLS.DAT",NULL}; 955 956 if (mp2) 957 masks[1] = NULL; 958 while (masks[x]) { 959 hDir = HDIR_CREATE; 960 ulSearchCount = 1L; 961 DosError(FERR_DISABLEHARDERR); 962 if (!DosFindFirst(masks[x], 963 &hDir, 964 FILE_ARCHIVED, 965 &findbuf, 966 sizeof(FILEFINDBUF3), 967 &ulSearchCount, 968 FIL_STANDARD)) { 969 do { 970 priority_bumped(); 971 WinSendMsg(WinWindowFromID(hwnd, 972 SVBTN_LISTBOX), 973 LM_INSERTITEM, 974 MPFROM2SHORT(LIT_SORTASCENDING,0), 975 MPFROMP(findbuf.achName)); 976 ulSearchCount = 1L; 977 } while (!DosFindNext(hDir, 978 &findbuf, 979 sizeof(FILEFINDBUF3), 980 &ulSearchCount)); 981 DosFindClose(hDir); 982 priority_bumped(); 983 } 984 x++; 985 } 986 DosError(FERR_DISABLEHARDERR); 987 } 988 if (!WinSendDlgItemMsg(hwnd, 989 SVBTN_LISTBOX, 990 LM_QUERYITEMCOUNT, 991 MPVOID, 992 MPVOID)) { 993 WinEnableWindow(WinWindowFromID(hwnd,SVBTN_LISTBOX), 994 FALSE); 995 PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID); 996 } 997 WinSetDlgItemText(hwnd, 998 SVBTN_CURRENT, 999 (*lasttoolbox) ? 1000 lasttoolbox : 1001 "FM3TOOLS.DAT"); 1002 break; 1003 1004 case UM_SETUP: 1005 WinSetFocus(HWND_DESKTOP,WinWindowFromID(hwnd,SVBTN_ENTRY)); 1006 return 0; 1007 1008 case WM_CONTROL: 1009 if (SHORT1FROMMP(mp1) == SVBTN_LISTBOX) { 1010 SHORT sSelect; 1011 CHAR szBuffer[CCHMAXPATH]; 1012 1013 switch (SHORT2FROMMP(mp1)) { 1014 case LN_SELECT: 1015 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,SVBTN_LISTBOX, 1016 LM_QUERYSELECTION, 1017 MPFROMSHORT(LIT_FIRST), 1018 MPVOID); 1019 if (sSelect >= 0) { 1020 *szBuffer = 0; 1021 WinSendDlgItemMsg(hwnd,SVBTN_LISTBOX,LM_QUERYITEMTEXT, 1022 MPFROM2SHORT(sSelect,CCHMAXPATH), 1023 MPFROMP(szBuffer)); 1024 if (*szBuffer) 1025 WinSetDlgItemText(hwnd,SVBTN_ENTRY,szBuffer); 1026 } 1027 break; 1028 1029 case LN_ENTER: 1030 PostMsg(hwnd,WM_COMMAND,MPFROM2SHORT(DID_OK,0),MPVOID); 1031 break; 1032 } 1033 } 1034 return 0; 1035 1036 case WM_COMMAND: 1037 switch (SHORT1FROMMP(mp1)) { 1038 case IDM_HELP: 1039 if (hwndHelp) { 1040 if (INSTDATA(hwnd)) 1041 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 1042 MPFROM2SHORT(HELP_SAVETOOLS,0), 1043 MPFROMSHORT(HM_RESOURCEID)); 1044 else 1045 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 1046 MPFROM2SHORT(HELP_LOADTOOLS,0), 1047 MPFROMSHORT(HM_RESOURCEID)); 1048 } 1049 break; 1050 1051 case DID_CANCEL: 1052 WinDismissDlg(hwnd,0); 1053 break; 1054 1055 case DID_OK: 1056 { 1057 BOOL saving = WinQueryWindowULong(hwnd,QWL_USER); 1058 CHAR temptools[CCHMAXPATH]; 1059 1060 strcpy(temptools,lasttoolbox); 1061 if (fToolsChanged) 1062 save_tools(NULL); 1063 WinQueryDlgItemText(hwnd, 1064 SVBTN_ENTRY, 1065 sizeof(lasttoolbox), 1066 lasttoolbox); 1067 if (*lasttoolbox) { 1068 if (!strchr(lasttoolbox,'.')) 1069 strcat(lasttoolbox,".TLS"); 1070 } 1071 if (saving && *lasttoolbox) 1072 save_tools(NULL); 1073 else { 1074 if (!load_tools(NULL)) { 1075 strcpy(lasttoolbox,temptools); 1076 if (!load_tools(NULL)) { 1077 *lasttoolbox = 0; 1078 load_tools(NULL); 1079 } 1080 } 1081 } 1082 PrfWriteProfileString(fmprof, 1083 FM3Str, 1084 "LastToolBox", 1085 lasttoolbox); 1086 } 1087 WinDismissDlg(hwnd,1); 1088 break; 1089 } 1090 return 0; 1091 } 1092 return WinDefDlgProc(hwnd,msg,mp1,mp2); 1093 } 1094 1012 } 1013 } 1014 PrfWriteProfileString(fmprof, FM3Str, "LastToolBox", lasttoolbox); 1015 } 1016 WinDismissDlg(hwnd, 1); 1017 break; 1018 } 1019 return 0; 1020 } 1021 return WinDefDlgProc(hwnd, msg, mp1, mp2); 1022 }
Note:
See TracChangeset
for help on using the changeset viewer.