Changeset 445 for trunk/dll/command.c
- Timestamp:
- Aug 24, 2006, 6:51:20 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/command.c
r406 r445 13 13 14 Jul 06 SHL Use Runtime_Error 14 14 29 Jul 06 SHL Use xfgets_bstripcr 15 15 Aug 06 SHL Better can't add message 15 16 16 17 ***********************************************************************/ … … 53 54 case DM_DRAGOVER: 54 55 if(!emphasized) { 55 56 56 emphasized = TRUE; 57 DrawTargetEmphasis(hwnd,emphasized); 57 58 } 58 59 if(AcceptOneDrop(mp1,mp2)) 59 60 60 return MRFROM2SHORT(DOR_DROP, 61 DO_MOVE); 61 62 return MRFROM2SHORT(DOR_NEVERDROP,0); 62 63 63 64 case DM_DRAGLEAVE: 64 65 if(emphasized) { 65 66 66 emphasized = FALSE; 67 DrawTargetEmphasis(hwnd,emphasized); 67 68 } 68 69 break; … … 70 71 case DM_DROPHELP: 71 72 DropHelp(mp1, 72 73 74 73 mp2, 74 hwnd, 75 GetPString(IDS_DROPCMDHELPTEXT)); 75 76 return 0; 76 77 77 78 case DM_DROP: 78 79 { 79 80 81 82 83 84 85 86 87 88 80 char szFrom[CCHMAXPATH + 5]; 81 82 if(emphasized) { 83 emphasized = FALSE; 84 DrawTargetEmphasis(hwnd,emphasized); 85 } 86 if(GetOneDrop(mp1,mp2,szFrom,CCHMAXPATH)) { 87 strcat(szFrom," %a"); 88 WinSetWindowText(hwnd,szFrom); 89 } 89 90 } 90 91 return 0; 91 92 } 92 93 return (oldproc) ? oldproc(hwnd,msg,mp1,mp2) : 93 94 WinDefWindowProc(hwnd,msg,mp1,mp2); 94 95 } 95 96 … … 100 101 case WM_INITDLG: 101 102 if(!cmdhead) { 102 103 103 WinDismissDlg(hwnd,0); 104 break; 104 105 } 105 106 { 106 107 108 109 110 111 112 113 114 115 116 107 LINKCMDS *info; 108 SHORT x; 109 110 info = cmdhead; 111 while(info) { 112 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_INSERTITEM, 113 MPFROMSHORT(LIT_END), 114 MPFROMP(info->title)); 115 if(x < 0) { 116 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 117 WinDismissDlg(hwnd,0); 117 118 } 118 119 else { 119 120 121 } 122 123 120 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SETITEMHANDLE, 121 MPFROMSHORT(x),MPFROMP(info)); 122 } 123 info = info->next; 124 } 124 125 } 125 126 break; … … 130 131 case WM_COMMAND: 131 132 switch(SHORT1FROMMP(mp1)) { 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 133 case DID_CANCEL: 134 WinDismissDlg(hwnd,0); 135 break; 136 137 case DID_OK: 138 { 139 LINKCMDS *temphead = NULL,*info,*last = NULL,*temptail = NULL; 140 SHORT sSelect,numitems; 141 142 sSelect = 0; 143 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 144 LM_QUERYITEMCOUNT, 145 MPVOID,MPVOID); 146 while(numitems) { 147 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 148 LM_QUERYITEMHANDLE, 149 MPFROMSHORT(sSelect++), 150 MPVOID); 151 if(info) { 152 if(!temphead) { 153 temphead = info; 154 info->prev = NULL; 155 } 156 else { 157 last->next = info; 158 info->prev = last; 159 } 160 temptail = info; 161 last = info; 162 info->next = NULL; 163 } 164 numitems--; 165 } 166 sSelect = 0; 167 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 168 LM_QUERYITEMCOUNT, 169 MPVOID,MPVOID); 170 while(numitems) { 171 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 172 LM_QUERYITEMHANDLE, 173 MPFROMSHORT(sSelect++), 174 MPVOID); 175 if(info) { 176 if(!temphead) { 177 temphead = info; 178 info->prev = NULL; 179 } 180 else { 181 last->next = info; 182 info->prev = last; 183 } 184 temptail = info; 185 last = info; 186 info->next = NULL; 187 } 188 numitems--; 189 } 190 cmdhead = temphead; 191 cmdtail = temptail; 192 } 193 WinDismissDlg(hwnd,1); 194 break; 195 196 case IDM_HELP: 197 if(hwndHelp) 198 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 199 MPFROM2SHORT(HELP_REORDERCOMMANDS,0), 200 MPFROMSHORT(HM_RESOURCEID)); 201 break; 202 203 case RE_ADD: 204 { 205 SHORT sSelect,x; 206 LINKCMDS *info; 207 208 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 209 LM_QUERYSELECTION, 210 MPFROMSHORT(LIT_FIRST), 211 MPVOID); 212 while(sSelect >= 0) { 213 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 214 LM_QUERYITEMHANDLE, 215 MPFROMSHORT(sSelect), 216 MPVOID); 217 if(info) { 218 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 219 LM_INSERTITEM, 220 MPFROM2SHORT(LIT_END,0), 221 MPFROMP(info->title)); 222 if(x >= 0) { 223 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 224 LM_SETITEMHANDLE, 225 MPFROMSHORT(x), 226 MPFROMP(info)); 227 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_DELETEITEM, 228 MPFROMSHORT(sSelect),MPVOID); 229 } 230 } 231 else 232 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SELECTITEM, 233 MPFROMSHORT(sSelect),MPFROMSHORT(FALSE)); 234 sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 235 LM_QUERYSELECTION, 236 MPFROMSHORT(LIT_FIRST), 237 MPVOID); 238 } 239 } 240 break; 241 242 case RE_REMOVE: 243 { 244 SHORT sSelect,x; 245 LINKCMDS *info; 246 247 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 248 LM_QUERYSELECTION, 249 MPFROMSHORT(LIT_FIRST), 250 MPVOID); 251 while(sSelect >= 0) { 252 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 253 LM_QUERYITEMHANDLE, 254 MPFROMSHORT(sSelect), 255 MPVOID); 256 if(info) { 257 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 258 LM_INSERTITEM, 259 MPFROM2SHORT(LIT_END,0), 260 MPFROMP(info->title)); 261 if(x >= 0) { 262 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 263 LM_SETITEMHANDLE, 264 MPFROMSHORT(x), 265 MPFROMP(info)); 266 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_DELETEITEM, 267 MPFROMSHORT(sSelect),MPVOID); 268 } 269 } 270 else 271 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_SELECTITEM, 272 MPFROMSHORT(sSelect),MPFROMSHORT(FALSE)); 273 sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 274 LM_QUERYSELECTION, 275 MPFROMSHORT(LIT_FIRST), 276 MPVOID); 277 } 278 } 279 break; 279 280 } 280 281 return 0; … … 337 338 while (!feof(fp)) { 338 339 if (!xfgets_bstripcr(title,sizeof(title),fp,pszSrcFile,__LINE__)) 339 340 break; 340 341 title[34] = 0; // fixme to know why chopped this way? 341 342 bstripcr(title); 342 343 if (!*title || *title == ';') 343 344 continue; 344 345 if (!xfgets(cl,sizeof(cl),fp,pszSrcFile,__LINE__)) 345 346 break; /* error! */ 346 347 if (!xfgets(flags,72,fp,pszSrcFile,__LINE__)) 347 348 break; /* error! */ 348 349 cl[1000] = 0; // fixme to know why chopped this way? 349 350 bstripcr(cl); … … 351 352 bstripcr(flags); 352 353 if(!*cl) 353 354 continue; 354 355 info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__); 355 356 if (info) { 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 357 info->cl = xstrdup(cl,pszSrcFile,__LINE__); 358 info->title = xstrdup(title,pszSrcFile,__LINE__); 359 info->flags = atol(flags); 360 if(!info->cl || !info->title) { 361 if(info->cl) 362 free(info->cl); 363 if(info->title) 364 free(info->title); 365 free(info); 366 break; 367 } 368 if(!cmdhead) 369 cmdhead = info; 370 else { 371 cmdtail->next = info; 372 info->prev = cmdtail; 373 } 374 cmdtail = info; 374 375 } 375 376 } … … 398 399 while(info) { 399 400 fprintf(fp, 400 401 402 403 401 ";\n%0.34s\n%0.1000s\n%lu\n", 402 info->title, 403 info->cl, 404 info->flags); 404 405 info = info->next; 405 406 } … … 409 410 410 411 411 LINKCMDS * add_command (COMMAND *addme) 412 //== add_command() Add command to list == 413 414 LINKCMDS *add_command (COMMAND *addme) 412 415 { 413 416 LINKCMDS *info; 414 417 415 if(addme && *addme->cl && *addme->title) { 416 info = cmdhead; 417 while(info) { 418 if(!stricmp(info->title,addme->title)) 419 return NULL; 420 info = info->next; 421 } 422 if(!info) { 423 info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__); 424 if(info) { 425 info->cl = xstrdup(addme->cl,pszSrcFile,__LINE__); 426 info->title = xstrdup(addme->title,pszSrcFile,__LINE__); 427 if(addme->flags) 428 info->flags = addme->flags; 429 if(!info->cl || !info->title) { 430 if(info->cl) 431 free(info->cl); 432 if(info->title) 433 free(info->title); 434 free(info); 435 } 436 else { 437 if(!cmdhead) /* only item in list */ 438 cmdhead = cmdtail = info; 439 else { /* place at tail */ 440 cmdtail->next = info; 441 info->prev = cmdtail; 442 cmdtail = info; 443 } 444 return info; 445 } 446 } 447 } 448 } 449 return NULL; 418 if (!addme || !*addme->cl || !*addme->title) 419 return NULL; // No data 420 info = cmdhead; 421 while (info) { 422 if (!stricmp(info->title,addme->title)) 423 return NULL; // Got a dup 424 info = info->next; 425 } 426 info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__); 427 if (!info) 428 return NULL; 429 info->cl = xstrdup(addme->cl,pszSrcFile,__LINE__); 430 info->title = xstrdup(addme->title,pszSrcFile,__LINE__); 431 if (addme->flags) 432 info->flags = addme->flags; 433 if (!info->cl || !info->title) { 434 xfree(info->cl); 435 xfree(info->title); 436 free(info); 437 return NULL; 438 } 439 if (!cmdhead) /* only item in list */ 440 cmdhead = cmdtail = info; 441 else { 442 /* place at tail */ 443 cmdtail->next = info; 444 info->prev = cmdtail; 445 cmdtail = info; 446 } 447 return info; 450 448 } 451 449 … … 459 457 while(info) { 460 458 if(!stricmp(info->title,killme)) { 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 459 if(info == cmdhead) { 460 cmdhead = info->next; 461 if(info == cmdtail) 462 cmdtail = info->prev; 463 } 464 else { 465 if(info->next) 466 (info->next)->prev = info->prev; 467 if(info->prev) 468 (info->prev)->next = info->next; 469 if(info == cmdtail) 470 cmdtail = info->prev; 471 } 472 free(info->cl); 473 free(info->title); 474 free(info); 475 return TRUE; 478 476 } 479 477 info = info->next; … … 493 491 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_DELETEALL,MPVOID,MPVOID); 494 492 WinSendDlgItemMsg(hwnd,CMD_CL,EM_SETTEXTLIMIT, 495 493 MPFROM2SHORT(1000,0),MPVOID); 496 494 WinSendDlgItemMsg(hwnd,CMD_TITLE,EM_SETTEXTLIMIT, 497 495 MPFROM2SHORT(33,0),MPVOID); 498 496 WinSetDlgItemText(hwnd,CMD_CL,NullStr); 499 497 WinSetDlgItemText(hwnd,CMD_TITLE,NullStr); … … 503 501 info = cmdhead; 504 502 while(info) { 505 506 507 508 509 510 511 503 x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_INSERTITEM, 504 MPFROM2SHORT(LIT_END,0), 505 MPFROMP(info->title)); 506 if(x >= 0) 507 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SETITEMHANDLE, 508 MPFROMSHORT(x),MPFROMP(info)); 509 info = info->next; 512 510 } 513 511 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SELECTITEM, 514 512 MPFROMSHORT(0),MPFROMSHORT(TRUE)); 515 513 { 516 517 518 519 520 521 514 PFNWP oldproc; 515 516 oldproc = WinSubclassWindow(WinWindowFromID(hwnd,CMD_CL), 517 (PFNWP)CommandTextProc); 518 if(oldproc) 519 WinSetWindowPtr(WinWindowFromID(hwnd,CMD_CL),0,(PVOID)oldproc); 522 520 } 523 521 break; … … 525 523 case WM_CONTROL: 526 524 if(SHORT1FROMMP(mp1) == CMD_LISTBOX) { 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 525 switch(SHORT2FROMMP(mp1)) { 526 case LN_ENTER: 527 case LN_SELECT: 528 x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX, 529 LM_QUERYSELECTION, 530 MPFROMSHORT(LIT_FIRST), 531 MPVOID); 532 if(x >= 0) { 533 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,CMD_LISTBOX, 534 LM_QUERYITEMHANDLE, 535 MPFROMSHORT(x), 536 MPVOID); 537 if(!info) { 538 Runtime_Error(pszSrcFile, __LINE__, "LM_QUERYITEMHANDLE"); 539 break; 540 } 541 WinSetDlgItemText(hwnd,CMD_CL,info->cl); 542 if(!(info->flags & 1023)) 543 WinCheckButton(hwnd,CMD_DEFAULT,TRUE); 544 else { 545 if(info->flags & FULLSCREEN) 546 WinCheckButton(hwnd,CMD_FULLSCREEN,TRUE); 547 else if(info->flags & MINIMIZED) 548 WinCheckButton(hwnd,CMD_MINIMIZED,TRUE); 549 else if(info->flags & MAXIMIZED) 550 WinCheckButton(hwnd,CMD_MAXIMIZED,TRUE); 551 else if(info->flags & INVISIBLE) 552 WinCheckButton(hwnd,CMD_INVISIBLE,TRUE); 553 } 554 WinCheckButton(hwnd,CMD_PROMPT,((info->flags & PROMPT) != 0)); 555 WinCheckButton(hwnd,CMD_KEEP,((info->flags & KEEP) != 0)); 556 WinCheckButton(hwnd,CMD_ONCE,((info->flags & ONCE) != 0)); 557 WinSetDlgItemText(hwnd,CMD_TITLE,info->title); 558 { 559 CHAR env[1002]; 560 ULONG size; 561 562 *env = 0; 563 size = sizeof(env) - 1; 564 if(PrfQueryProfileData(fmprof,FM3Str,info->cl,env,&size) && 565 *env) 566 WinSetDlgItemText(hwnd,CMD_ENVIRON,env); 567 else 568 WinSetDlgItemText(hwnd,CMD_ENVIRON,NullStr); 569 } 570 } 571 break; 572 } 575 573 } 576 574 return 0; … … 578 576 case WM_COMMAND: 579 577 switch(SHORT1FROMMP(mp1)) { 580 case CMD_FIND: 581 { 582 CHAR filename[CCHMAXPATH + 9]; 583 584 *filename = 0; 585 if(insert_filename(hwnd,filename,2,FALSE) && *filename) { 586 strcat(filename," %a"); 587 WinSetDlgItemText(hwnd,CMD_CL,filename); 588 } 589 } 590 break; 591 592 case CMD_REORDER: 593 if(!cmdhead || !cmdhead->next) { 594 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 595 break; 596 } 597 if(WinDlgBox(HWND_DESKTOP,hwnd,ReOrderProc,FM3ModHandle, 598 RE_FRAME,MPVOID)) { 599 WinSendDlgItemMsg(hwnd, 600 CMD_LISTBOX, 601 LM_DELETEALL, 602 MPVOID, 603 MPVOID); 604 WinSetDlgItemText(hwnd, 605 CMD_CL, 606 NullStr); 607 WinSetDlgItemText(hwnd, 608 CMD_TITLE, 609 NullStr); 610 info = cmdhead; 611 while(info) { 612 x = (SHORT)WinSendDlgItemMsg(hwnd, 613 CMD_LISTBOX, 614 LM_INSERTITEM, 615 MPFROM2SHORT(LIT_END,0), 616 MPFROMP(info->title)); 617 if(x >= 0) 618 WinSendDlgItemMsg(hwnd, 619 CMD_LISTBOX, 620 LM_SETITEMHANDLE, 621 MPFROMSHORT(x), 622 MPFROMP(info)); 623 info = info->next; 624 } 625 WinSendDlgItemMsg(hwnd, 626 CMD_LISTBOX, 627 LM_SELECTITEM, 628 MPFROMSHORT(0), 629 MPFROMSHORT(TRUE)); 630 WinCheckButton(hwnd, 631 CMD_DEFAULT, 632 TRUE); 633 WinCheckButton(hwnd, 634 CMD_PROMPT, 635 FALSE); 636 WinCheckButton(hwnd, 637 CMD_ONCE, 638 FALSE); 639 save_commands(); 640 } 641 break; 642 643 case DID_OK: 644 x = (SHORT)WinSendDlgItemMsg(hwnd, 645 CMD_LISTBOX, 646 LM_QUERYSELECTION, 647 MPFROMSHORT(LIT_FIRST), 648 MPVOID); 649 WinDismissDlg(hwnd,0); 650 break; 651 652 case DID_CANCEL: 653 WinDismissDlg(hwnd,0); 654 break; 655 656 case IDM_HELP: 657 if(hwndHelp) 658 WinSendMsg(hwndHelp, 659 HM_DISPLAY_HELP, 660 MPFROM2SHORT(HELP_COMMAND,0), 661 MPFROMSHORT(HM_RESOURCEID)); 662 break; 663 664 case CMD_ADD: 665 { 666 COMMAND temp; 667 668 memset(&temp,0,sizeof(COMMAND)); 669 WinQueryDlgItemText(hwnd, 670 CMD_CL, 671 sizeof(temp.cl), 672 temp.cl); 673 bstrip(temp.cl); 674 WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title); 675 if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT)) 676 temp.flags = 0; 677 else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN)) 678 temp.flags = FULLSCREEN; 679 else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED)) 680 temp.flags = MINIMIZED; 681 else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED)) 682 temp.flags = MAXIMIZED; 683 else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE)) 684 temp.flags = INVISIBLE; 685 if(WinQueryButtonCheckstate(hwnd,CMD_KEEP)) 686 temp.flags |= KEEP; 687 if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT)) 688 temp.flags |= PROMPT; 689 if(WinQueryButtonCheckstate(hwnd,CMD_ONCE)) 690 temp.flags |= ONCE; 691 info = add_command(&temp); 692 if(!info) 693 Runtime_Error(pszSrcFile, __LINE__, "add_command"); 578 case CMD_FIND: 579 { 580 CHAR filename[CCHMAXPATH + 9]; 581 582 *filename = 0; 583 if(insert_filename(hwnd,filename,2,FALSE) && *filename) { 584 strcat(filename," %a"); 585 WinSetDlgItemText(hwnd,CMD_CL,filename); 586 } 587 } 588 break; 589 590 case CMD_REORDER: 591 if(!cmdhead || !cmdhead->next) { 592 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 593 break; 594 } 595 if(WinDlgBox(HWND_DESKTOP,hwnd,ReOrderProc,FM3ModHandle, 596 RE_FRAME,MPVOID)) { 597 WinSendDlgItemMsg(hwnd, 598 CMD_LISTBOX, 599 LM_DELETEALL, 600 MPVOID, 601 MPVOID); 602 WinSetDlgItemText(hwnd, 603 CMD_CL, 604 NullStr); 605 WinSetDlgItemText(hwnd, 606 CMD_TITLE, 607 NullStr); 608 info = cmdhead; 609 while(info) { 610 x = (SHORT)WinSendDlgItemMsg(hwnd, 611 CMD_LISTBOX, 612 LM_INSERTITEM, 613 MPFROM2SHORT(LIT_END,0), 614 MPFROMP(info->title)); 615 if(x >= 0) 616 WinSendDlgItemMsg(hwnd, 617 CMD_LISTBOX, 618 LM_SETITEMHANDLE, 619 MPFROMSHORT(x), 620 MPFROMP(info)); 621 info = info->next; 622 } 623 WinSendDlgItemMsg(hwnd, 624 CMD_LISTBOX, 625 LM_SELECTITEM, 626 MPFROMSHORT(0), 627 MPFROMSHORT(TRUE)); 628 WinCheckButton(hwnd, 629 CMD_DEFAULT, 630 TRUE); 631 WinCheckButton(hwnd, 632 CMD_PROMPT, 633 FALSE); 634 WinCheckButton(hwnd, 635 CMD_ONCE, 636 FALSE); 637 save_commands(); 638 } 639 break; 640 641 case DID_OK: 642 x = (SHORT)WinSendDlgItemMsg(hwnd, 643 CMD_LISTBOX, 644 LM_QUERYSELECTION, 645 MPFROMSHORT(LIT_FIRST), 646 MPVOID); 647 WinDismissDlg(hwnd,0); 648 break; 649 650 case DID_CANCEL: 651 WinDismissDlg(hwnd,0); 652 break; 653 654 case IDM_HELP: 655 if(hwndHelp) 656 WinSendMsg(hwndHelp, 657 HM_DISPLAY_HELP, 658 MPFROM2SHORT(HELP_COMMAND,0), 659 MPFROMSHORT(HM_RESOURCEID)); 660 break; 661 662 case CMD_ADD: 663 { 664 COMMAND temp; 665 666 memset(&temp,0,sizeof(COMMAND)); 667 WinQueryDlgItemText(hwnd,CMD_CL,sizeof(temp.cl),temp.cl); 668 bstrip(temp.cl); 669 WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title); 670 if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT)) 671 temp.flags = 0; 672 else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN)) 673 temp.flags = FULLSCREEN; 674 else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED)) 675 temp.flags = MINIMIZED; 676 else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED)) 677 temp.flags = MAXIMIZED; 678 else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE)) 679 temp.flags = INVISIBLE; 680 if(WinQueryButtonCheckstate(hwnd,CMD_KEEP)) 681 temp.flags |= KEEP; 682 if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT)) 683 temp.flags |= PROMPT; 684 if(WinQueryButtonCheckstate(hwnd,CMD_ONCE)) 685 temp.flags |= ONCE; 686 info = add_command(&temp); 687 if (!info) { 688 saymsg(MB_ENTER, 689 hwnd, 690 GetPString(IDS_ERRORTEXT), 691 // GetPString(IDS_CANTADDCOMMANDTEXT), 692 "Can't add %s to command list", temp.title); // fixme to be in fm3dll.str 693 } 694 694 else { 695 { 696 CHAR env[1002]; 697 698 *env = 0; 699 WinQueryDlgItemText(hwnd, 700 CMD_ENVIRON, 701 1000, 702 env); 703 bstripcr(env); 704 if(*env) 705 PrfWriteProfileString(fmprof, 706 FM3Str, 707 temp.cl, 708 env); 709 } 710 x = (SHORT)WinSendDlgItemMsg(hwnd, 711 CMD_LISTBOX, 712 LM_INSERTITEM, 713 MPFROM2SHORT(LIT_END,0), 714 MPFROMP(temp.title)); 715 if(x >= 0) { 716 WinSendDlgItemMsg(hwnd, 717 CMD_LISTBOX, 718 LM_SETITEMHANDLE, 719 MPFROMSHORT(x), 720 MPFROMP(info)); 721 WinSendDlgItemMsg(hwnd, 722 CMD_LISTBOX, 723 LM_SELECTITEM, 724 MPFROMSHORT(x), 725 MPFROMSHORT(TRUE)); 726 save_commands(); 727 } 728 } 729 } 730 break; 731 732 case CMD_DELETE: 733 { 734 CHAR temp[34]; 735 736 WinQueryDlgItemText(hwnd,CMD_TITLE,34,temp); 737 bstrip(temp); 738 if (!kill_command(temp)) 739 Runtime_Error(pszSrcFile, __LINE__, "kill_command"); 695 CHAR env[1002]; 696 697 *env = 0; 698 WinQueryDlgItemText(hwnd,CMD_ENVIRON,1000,env); 699 bstripcr(env); 700 if (*env) { 701 PrfWriteProfileString(fmprof, 702 FM3Str, 703 temp.cl, 704 env); 705 } 706 x = (SHORT)WinSendDlgItemMsg(hwnd, 707 CMD_LISTBOX, 708 LM_INSERTITEM, 709 MPFROM2SHORT(LIT_END,0), 710 MPFROMP(temp.title)); 711 if(x >= 0) { 712 WinSendDlgItemMsg(hwnd, 713 CMD_LISTBOX, 714 LM_SETITEMHANDLE, 715 MPFROMSHORT(x), 716 MPFROMP(info)); 717 WinSendDlgItemMsg(hwnd, 718 CMD_LISTBOX, 719 LM_SELECTITEM, 720 MPFROMSHORT(x), 721 MPFROMSHORT(TRUE)); 722 save_commands(); 723 } 724 } 725 } 726 break; 727 728 case CMD_DELETE: 729 { 730 CHAR temp[34]; 731 732 WinQueryDlgItemText(hwnd,CMD_TITLE,34,temp); 733 bstrip(temp); 734 if (!kill_command(temp)) 735 Runtime_Error(pszSrcFile, __LINE__, "kill_command"); 740 736 else { 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 737 x = (SHORT)WinSendDlgItemMsg(hwnd, 738 CMD_LISTBOX, 739 LM_QUERYSELECTION, 740 MPFROMSHORT(LIT_FIRST), 741 MPVOID); 742 if(x >= 0) { 743 WinSendDlgItemMsg(hwnd, 744 CMD_LISTBOX, 745 LM_DELETEITEM, 746 MPFROMSHORT(x), 747 MPVOID); 748 WinSendDlgItemMsg(hwnd, 749 CMD_LISTBOX, 750 LM_SELECTITEM, 751 MPFROMSHORT(LIT_NONE), 752 MPFROMSHORT(FALSE)); 753 } 754 save_commands(); 755 } 756 } 757 break; 762 758 } 763 759 return 0; … … 804 800 flags &= (~ONCE); 805 801 for(cntr = 0;list[cntr];cntr++) { 806 807 808 809 810 811 812 813 802 *fakelist = list[cntr]; 803 fakelist[1] = NULL; 804 ExecOnList(hwnd, 805 info->cl, 806 flags, 807 NULL, 808 fakelist, 809 GetPString(IDS_EXECCMDTITLETEXT)); 814 810 } 815 811 } 816 812 else 817 813 ExecOnList(hwnd, 818 819 820 821 822 814 info->cl, 815 flags, 816 NULL, 817 list, 818 GetPString(IDS_EXECCMDTITLETEXT)); 823 819 } 824 820 FreeList(list); … … 837 833 load_commands(); 838 834 WinDlgBox(HWND_DESKTOP, 839 840 841 842 843 835 hwnd, 836 CommandDlgProc, 837 FM3ModHandle, 838 CMD_FRAME, 839 MPFROMP(&hwnd)); 844 840 stop = 0; 845 841 }
Note:
See TracChangeset
for help on using the changeset viewer.