- Timestamp:
- Aug 24, 2006, 6:51:20 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/dll/command.c (modified) (16 diffs)
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 emphasized = TRUE;56 DrawTargetEmphasis(hwnd,emphasized);56 emphasized = TRUE; 57 DrawTargetEmphasis(hwnd,emphasized); 57 58 } 58 59 if(AcceptOneDrop(mp1,mp2)) 59 return MRFROM2SHORT(DOR_DROP,60 DO_MOVE);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 emphasized = FALSE;66 DrawTargetEmphasis(hwnd,emphasized);66 emphasized = FALSE; 67 DrawTargetEmphasis(hwnd,emphasized); 67 68 } 68 69 break; … … 70 71 case DM_DROPHELP: 71 72 DropHelp(mp1, 72 mp2,73 hwnd,74 GetPString(IDS_DROPCMDHELPTEXT));73 mp2, 74 hwnd, 75 GetPString(IDS_DROPCMDHELPTEXT)); 75 76 return 0; 76 77 77 78 case DM_DROP: 78 79 { 79 char szFrom[CCHMAXPATH + 5];80 81 if(emphasized) {82 emphasized = FALSE;83 DrawTargetEmphasis(hwnd,emphasized);84 }85 if(GetOneDrop(mp1,mp2,szFrom,CCHMAXPATH)) {86 strcat(szFrom," %a");87 WinSetWindowText(hwnd,szFrom);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 WinDefWindowProc(hwnd,msg,mp1,mp2);94 WinDefWindowProc(hwnd,msg,mp1,mp2); 94 95 } 95 96 … … 100 101 case WM_INITDLG: 101 102 if(!cmdhead) { 102 WinDismissDlg(hwnd,0);103 break;103 WinDismissDlg(hwnd,0); 104 break; 104 105 } 105 106 { 106 LINKCMDS *info;107 SHORT x;108 109 info = cmdhead;110 while(info) {111 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_INSERTITEM,112 MPFROMSHORT(LIT_END),113 MPFROMP(info->title));114 if(x < 0) {115 Runtime_Error(pszSrcFile, __LINE__, "no cmd");116 WinDismissDlg(hwnd,0);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 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SETITEMHANDLE,120 MPFROMSHORT(x),MPFROMP(info));121 } 122 info = info->next;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 case DID_CANCEL:133 WinDismissDlg(hwnd,0);134 break;135 136 case DID_OK:137 {138 LINKCMDS *temphead = NULL,*info,*last = NULL,*temptail = NULL;139 SHORT sSelect,numitems;140 141 sSelect = 0;142 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,143 LM_QUERYITEMCOUNT,144 MPVOID,MPVOID);145 while(numitems) {146 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,147 LM_QUERYITEMHANDLE,148 MPFROMSHORT(sSelect++),149 MPVOID);150 if(info) {151 if(!temphead) {152 temphead = info;153 info->prev = NULL;154 }155 else {156 last->next = info;157 info->prev = last;158 }159 temptail = info;160 last = info;161 info->next = NULL;162 }163 numitems--;164 }165 sSelect = 0;166 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,167 LM_QUERYITEMCOUNT,168 MPVOID,MPVOID);169 while(numitems) {170 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,171 LM_QUERYITEMHANDLE,172 MPFROMSHORT(sSelect++),173 MPVOID);174 if(info) {175 if(!temphead) {176 temphead = info;177 info->prev = NULL;178 }179 else {180 last->next = info;181 info->prev = last;182 }183 temptail = info;184 last = info;185 info->next = NULL;186 }187 numitems--;188 }189 cmdhead = temphead;190 cmdtail = temptail;191 }192 WinDismissDlg(hwnd,1);193 break;194 195 case IDM_HELP:196 if(hwndHelp)197 WinSendMsg(hwndHelp,HM_DISPLAY_HELP,198 MPFROM2SHORT(HELP_REORDERCOMMANDS,0),199 MPFROMSHORT(HM_RESOURCEID));200 break;201 202 case RE_ADD:203 {204 SHORT sSelect,x;205 LINKCMDS *info;206 207 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,208 LM_QUERYSELECTION,209 MPFROMSHORT(LIT_FIRST),210 MPVOID);211 while(sSelect >= 0) {212 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,213 LM_QUERYITEMHANDLE,214 MPFROMSHORT(sSelect),215 MPVOID);216 if(info) {217 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,218 LM_INSERTITEM,219 MPFROM2SHORT(LIT_END,0),220 MPFROMP(info->title));221 if(x >= 0) {222 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,223 LM_SETITEMHANDLE,224 MPFROMSHORT(x),225 MPFROMP(info));226 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_DELETEITEM,227 MPFROMSHORT(sSelect),MPVOID);228 }229 }230 else231 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SELECTITEM,232 MPFROMSHORT(sSelect),MPFROMSHORT(FALSE));233 sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,234 LM_QUERYSELECTION,235 MPFROMSHORT(LIT_FIRST),236 MPVOID);237 }238 }239 break;240 241 case RE_REMOVE:242 {243 SHORT sSelect,x;244 LINKCMDS *info;245 246 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,247 LM_QUERYSELECTION,248 MPFROMSHORT(LIT_FIRST),249 MPVOID);250 while(sSelect >= 0) {251 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,252 LM_QUERYITEMHANDLE,253 MPFROMSHORT(sSelect),254 MPVOID);255 if(info) {256 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,257 LM_INSERTITEM,258 MPFROM2SHORT(LIT_END,0),259 MPFROMP(info->title));260 if(x >= 0) {261 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,262 LM_SETITEMHANDLE,263 MPFROMSHORT(x),264 MPFROMP(info));265 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_DELETEITEM,266 MPFROMSHORT(sSelect),MPVOID);267 }268 }269 else270 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_SELECTITEM,271 MPFROMSHORT(sSelect),MPFROMSHORT(FALSE));272 sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,273 LM_QUERYSELECTION,274 MPFROMSHORT(LIT_FIRST),275 MPVOID);276 }277 }278 break;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 break;340 break; 340 341 title[34] = 0; // fixme to know why chopped this way? 341 342 bstripcr(title); 342 343 if (!*title || *title == ';') 343 continue;344 continue; 344 345 if (!xfgets(cl,sizeof(cl),fp,pszSrcFile,__LINE__)) 345 break; /* error! */346 break; /* error! */ 346 347 if (!xfgets(flags,72,fp,pszSrcFile,__LINE__)) 347 break; /* error! */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 continue;354 continue; 354 355 info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__); 355 356 if (info) { 356 info->cl = xstrdup(cl,pszSrcFile,__LINE__);357 info->title = xstrdup(title,pszSrcFile,__LINE__);358 info->flags = atol(flags);359 if(!info->cl || !info->title) {360 if(info->cl)361 free(info->cl);362 if(info->title)363 free(info->title);364 free(info);365 break;366 }367 if(!cmdhead)368 cmdhead = info;369 else {370 cmdtail->next = info;371 info->prev = cmdtail;372 }373 cmdtail = info;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 ";\n%0.34s\n%0.1000s\n%lu\n",401 info->title,402 info->cl,403 info->flags);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 if(info == cmdhead) {462 cmdhead = info->next;463 if(info == cmdtail)464 cmdtail = info->prev;465 }466 else {467 if(info->next)468 (info->next)->prev = info->prev;469 if(info->prev)470 (info->prev)->next = info->next;471 if(info == cmdtail)472 cmdtail = info->prev;473 }474 free(info->cl);475 free(info->title);476 free(info);477 return TRUE;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 MPFROM2SHORT(1000,0),MPVOID);493 MPFROM2SHORT(1000,0),MPVOID); 496 494 WinSendDlgItemMsg(hwnd,CMD_TITLE,EM_SETTEXTLIMIT, 497 MPFROM2SHORT(33,0),MPVOID);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 x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_INSERTITEM,506 MPFROM2SHORT(LIT_END,0),507 MPFROMP(info->title));508 if(x >= 0)509 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SETITEMHANDLE,510 MPFROMSHORT(x),MPFROMP(info));511 info = info->next;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 MPFROMSHORT(0),MPFROMSHORT(TRUE));512 MPFROMSHORT(0),MPFROMSHORT(TRUE)); 515 513 { 516 PFNWP oldproc;517 518 oldproc = WinSubclassWindow(WinWindowFromID(hwnd,CMD_CL),519 (PFNWP)CommandTextProc);520 if(oldproc)521 WinSetWindowPtr(WinWindowFromID(hwnd,CMD_CL),0,(PVOID)oldproc);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 switch(SHORT2FROMMP(mp1)) {528 case LN_ENTER:529 case LN_SELECT:530 x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,531 LM_QUERYSELECTION,532 MPFROMSHORT(LIT_FIRST),533 MPVOID);534 if(x >= 0) {535 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,536 LM_QUERYITEMHANDLE,537 MPFROMSHORT(x),538 MPVOID);539 if(!info) {540 Runtime_Error(pszSrcFile, __LINE__, "LM_QUERYITEMHANDLE");541 break;542 }543 WinSetDlgItemText(hwnd,CMD_CL,info->cl);544 if(!(info->flags & 1023))545 WinCheckButton(hwnd,CMD_DEFAULT,TRUE);546 else {547 if(info->flags & FULLSCREEN)548 WinCheckButton(hwnd,CMD_FULLSCREEN,TRUE);549 else if(info->flags & MINIMIZED)550 WinCheckButton(hwnd,CMD_MINIMIZED,TRUE);551 else if(info->flags & MAXIMIZED)552 WinCheckButton(hwnd,CMD_MAXIMIZED,TRUE);553 else if(info->flags & INVISIBLE)554 WinCheckButton(hwnd,CMD_INVISIBLE,TRUE);555 }556 WinCheckButton(hwnd,CMD_PROMPT,((info->flags & PROMPT) != 0));557 WinCheckButton(hwnd,CMD_KEEP,((info->flags & KEEP) != 0));558 WinCheckButton(hwnd,CMD_ONCE,((info->flags & ONCE) != 0));559 WinSetDlgItemText(hwnd,CMD_TITLE,info->title);560 {561 CHAR env[1002];562 ULONG size;563 564 *env = 0;565 size = sizeof(env) - 1;566 if(PrfQueryProfileData(fmprof,FM3Str,info->cl,env,&size) &&567 *env)568 WinSetDlgItemText(hwnd,CMD_ENVIRON,env);569 else570 WinSetDlgItemText(hwnd,CMD_ENVIRON,NullStr);571 }572 }573 break;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 x = (SHORT)WinSendDlgItemMsg(hwnd,742 CMD_LISTBOX,743 LM_QUERYSELECTION,744 MPFROMSHORT(LIT_FIRST),745 MPVOID);746 if(x >= 0) {747 WinSendDlgItemMsg(hwnd,748 CMD_LISTBOX,749 LM_DELETEITEM,750 MPFROMSHORT(x),751 MPVOID);752 WinSendDlgItemMsg(hwnd,753 CMD_LISTBOX,754 LM_SELECTITEM,755 MPFROMSHORT(LIT_NONE),756 MPFROMSHORT(FALSE));757 }758 save_commands();759 }760 }761 break;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 *fakelist = list[cntr];807 fakelist[1] = NULL;808 ExecOnList(hwnd,809 info->cl,810 flags,811 NULL,812 fakelist,813 GetPString(IDS_EXECCMDTITLETEXT));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 info->cl,819 flags,820 NULL,821 list,822 GetPString(IDS_EXECCMDTITLETEXT));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 hwnd,840 CommandDlgProc,841 FM3ModHandle,842 CMD_FRAME,843 MPFROMP(&hwnd));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.
