Changeset 551 for trunk/dll/command.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/command.c
r507 r551 33 33 #include "tools.h" 34 34 35 typedef struct { 36 CHAR cl[1001]; 37 INT flags; 38 CHAR title[34]; 39 } COMMAND; 35 typedef struct 36 { 37 CHAR cl[1001]; 38 INT flags; 39 CHAR title[34]; 40 } 41 COMMAND; 40 42 41 43 #pragma data_seg(DATA1) … … 46 48 #pragma alloc_text(COMMAND,CommandDlgProc,EditCommands,ReOrderProc,CommandTextProc) 47 49 48 49 MRESULT EXPENTRY CommandTextProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 50 { 51 PFNWP oldproc = (PFNWP)WinQueryWindowPtr(hwnd,0); 50 MRESULT EXPENTRY CommandTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 51 { 52 PFNWP oldproc = (PFNWP) WinQueryWindowPtr(hwnd, 0); 52 53 static BOOL emphasized = FALSE; 53 54 54 switch(msg) { 55 case DM_DRAGOVER: 56 if(!emphasized) { 57 emphasized = TRUE; 58 DrawTargetEmphasis(hwnd,emphasized); 59 } 60 if(AcceptOneDrop(mp1,mp2)) 61 return MRFROM2SHORT(DOR_DROP, 62 DO_MOVE); 63 return MRFROM2SHORT(DOR_NEVERDROP,0); 64 65 case DM_DRAGLEAVE: 66 if(emphasized) { 55 switch (msg) { 56 case DM_DRAGOVER: 57 if (!emphasized) { 58 emphasized = TRUE; 59 DrawTargetEmphasis(hwnd, emphasized); 60 } 61 if (AcceptOneDrop(mp1, mp2)) 62 return MRFROM2SHORT(DOR_DROP, DO_MOVE); 63 return MRFROM2SHORT(DOR_NEVERDROP, 0); 64 65 case DM_DRAGLEAVE: 66 if (emphasized) { 67 emphasized = FALSE; 68 DrawTargetEmphasis(hwnd, emphasized); 69 } 70 break; 71 72 case DM_DROPHELP: 73 DropHelp(mp1, mp2, hwnd, GetPString(IDS_DROPCMDHELPTEXT)); 74 return 0; 75 76 case DM_DROP: 77 { 78 char szFrom[CCHMAXPATH + 5]; 79 80 if (emphasized) { 67 81 emphasized = FALSE; 68 DrawTargetEmphasis(hwnd,emphasized); 69 } 70 break; 71 72 case DM_DROPHELP: 73 DropHelp(mp1, 74 mp2, 75 hwnd, 76 GetPString(IDS_DROPCMDHELPTEXT)); 77 return 0; 78 79 case DM_DROP: 82 DrawTargetEmphasis(hwnd, emphasized); 83 } 84 if (GetOneDrop(mp1, mp2, szFrom, CCHMAXPATH)) { 85 strcat(szFrom, " %a"); 86 WinSetWindowText(hwnd, szFrom); 87 } 88 } 89 return 0; 90 } 91 return (oldproc) ? oldproc(hwnd, msg, mp1, mp2) : 92 WinDefWindowProc(hwnd, msg, mp1, mp2); 93 } 94 95 MRESULT EXPENTRY ReOrderProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 96 { 97 switch (msg) { 98 case WM_INITDLG: 99 if (!cmdhead) { 100 WinDismissDlg(hwnd, 0); 101 break; 102 } 103 { 104 LINKCMDS *info; 105 SHORT x; 106 107 info = cmdhead; 108 while (info) { 109 x = (SHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, LM_INSERTITEM, 110 MPFROMSHORT(LIT_END), 111 MPFROMP(info->title)); 112 if (x < 0) { 113 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 114 WinDismissDlg(hwnd, 0); 115 } 116 else { 117 WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, LM_SETITEMHANDLE, 118 MPFROMSHORT(x), MPFROMP(info)); 119 } 120 info = info->next; 121 } 122 } 123 break; 124 125 case WM_CONTROL: 126 return 0; 127 128 case WM_COMMAND: 129 switch (SHORT1FROMMP(mp1)) { 130 case DID_CANCEL: 131 WinDismissDlg(hwnd, 0); 132 break; 133 134 case DID_OK: 80 135 { 81 char szFrom[CCHMAXPATH + 5]; 82 83 if(emphasized) { 84 emphasized = FALSE; 85 DrawTargetEmphasis(hwnd,emphasized); 86 } 87 if(GetOneDrop(mp1,mp2,szFrom,CCHMAXPATH)) { 88 strcat(szFrom," %a"); 89 WinSetWindowText(hwnd,szFrom); 90 } 91 } 92 return 0; 93 } 94 return (oldproc) ? oldproc(hwnd,msg,mp1,mp2) : 95 WinDefWindowProc(hwnd,msg,mp1,mp2); 96 } 97 98 99 MRESULT EXPENTRY ReOrderProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 100 { 101 switch(msg) { 102 case WM_INITDLG: 103 if(!cmdhead) { 104 WinDismissDlg(hwnd,0); 105 break; 106 } 136 LINKCMDS *temphead = NULL, *info, *last = NULL, *temptail = NULL; 137 SHORT sSelect, numitems; 138 139 sSelect = 0; 140 numitems = (SHORT) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 141 LM_QUERYITEMCOUNT, 142 MPVOID, MPVOID); 143 while (numitems) { 144 info = (LINKCMDS *) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 145 LM_QUERYITEMHANDLE, 146 MPFROMSHORT(sSelect++), 147 MPVOID); 148 if (info) { 149 if (!temphead) { 150 temphead = info; 151 info->prev = NULL; 152 } 153 else { 154 last->next = info; 155 info->prev = last; 156 } 157 temptail = info; 158 last = info; 159 info->next = NULL; 160 } 161 numitems--; 162 } 163 sSelect = 0; 164 numitems = (SHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 165 LM_QUERYITEMCOUNT, 166 MPVOID, MPVOID); 167 while (numitems) { 168 info = (LINKCMDS *) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 169 LM_QUERYITEMHANDLE, 170 MPFROMSHORT(sSelect++), 171 MPVOID); 172 if (info) { 173 if (!temphead) { 174 temphead = info; 175 info->prev = NULL; 176 } 177 else { 178 last->next = info; 179 info->prev = last; 180 } 181 temptail = info; 182 last = info; 183 info->next = NULL; 184 } 185 numitems--; 186 } 187 cmdhead = temphead; 188 cmdtail = temptail; 189 } 190 WinDismissDlg(hwnd, 1); 191 break; 192 193 case IDM_HELP: 194 if (hwndHelp) 195 WinSendMsg(hwndHelp, HM_DISPLAY_HELP, 196 MPFROM2SHORT(HELP_REORDERCOMMANDS, 0), 197 MPFROMSHORT(HM_RESOURCEID)); 198 break; 199 200 case RE_ADD: 107 201 { 202 SHORT sSelect, x; 108 203 LINKCMDS *info; 109 SHORT x; 110 111 info = cmdhead; 112 while(info) { 113 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_INSERTITEM, 114 MPFROMSHORT(LIT_END), 115 MPFROMP(info->title)); 116 if(x < 0) { 117 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 118 WinDismissDlg(hwnd,0); 119 } 120 else { 121 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SETITEMHANDLE, 122 MPFROMSHORT(x),MPFROMP(info)); 123 } 124 info = info->next; 125 } 126 } 127 break; 128 129 case WM_CONTROL: 130 return 0; 131 132 case WM_COMMAND: 133 switch(SHORT1FROMMP(mp1)) { 134 case DID_CANCEL: 135 WinDismissDlg(hwnd,0); 136 break; 137 138 case DID_OK: 139 { 140 LINKCMDS *temphead = NULL,*info,*last = NULL,*temptail = NULL; 141 SHORT sSelect,numitems; 142 143 sSelect = 0; 144 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 145 LM_QUERYITEMCOUNT, 146 MPVOID,MPVOID); 147 while(numitems) { 148 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 149 LM_QUERYITEMHANDLE, 150 MPFROMSHORT(sSelect++), 151 MPVOID); 152 if(info) { 153 if(!temphead) { 154 temphead = info; 155 info->prev = NULL; 156 } 157 else { 158 last->next = info; 159 info->prev = last; 160 } 161 temptail = info; 162 last = info; 163 info->next = NULL; 164 } 165 numitems--; 204 205 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 206 LM_QUERYSELECTION, 207 MPFROMSHORT(LIT_FIRST), MPVOID); 208 while (sSelect >= 0) { 209 info = (LINKCMDS *) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 210 LM_QUERYITEMHANDLE, 211 MPFROMSHORT(sSelect), MPVOID); 212 if (info) { 213 x = (SHORT) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 214 LM_INSERTITEM, 215 MPFROM2SHORT(LIT_END, 0), 216 MPFROMP(info->title)); 217 if (x >= 0) { 218 WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 219 LM_SETITEMHANDLE, 220 MPFROMSHORT(x), MPFROMP(info)); 221 WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, LM_DELETEITEM, 222 MPFROMSHORT(sSelect), MPVOID); 166 223 } 167 sSelect = 0; 168 numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 169 LM_QUERYITEMCOUNT, 170 MPVOID,MPVOID); 171 while(numitems) { 172 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 173 LM_QUERYITEMHANDLE, 174 MPFROMSHORT(sSelect++), 175 MPVOID); 176 if(info) { 177 if(!temphead) { 178 temphead = info; 179 info->prev = NULL; 180 } 181 else { 182 last->next = info; 183 info->prev = last; 184 } 185 temptail = info; 186 last = info; 187 info->next = NULL; 188 } 189 numitems--; 190 } 191 cmdhead = temphead; 192 cmdtail = temptail; 193 } 194 WinDismissDlg(hwnd,1); 195 break; 196 197 case IDM_HELP: 198 if(hwndHelp) 199 WinSendMsg(hwndHelp,HM_DISPLAY_HELP, 200 MPFROM2SHORT(HELP_REORDERCOMMANDS,0), 201 MPFROMSHORT(HM_RESOURCEID)); 202 break; 203 204 case RE_ADD: 205 { 206 SHORT sSelect,x; 207 LINKCMDS *info; 208 209 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 224 } 225 else 226 WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, LM_SELECTITEM, 227 MPFROMSHORT(sSelect), MPFROMSHORT(FALSE)); 228 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 210 229 LM_QUERYSELECTION, 211 230 MPFROMSHORT(LIT_FIRST), 212 231 MPVOID); 213 while(sSelect >= 0) { 214 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 215 LM_QUERYITEMHANDLE, 216 MPFROMSHORT(sSelect), 217 MPVOID); 218 if(info) { 219 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 220 LM_INSERTITEM, 221 MPFROM2SHORT(LIT_END,0), 222 MPFROMP(info->title)); 223 if(x >= 0) { 224 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 225 LM_SETITEMHANDLE, 226 MPFROMSHORT(x), 227 MPFROMP(info)); 228 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_DELETEITEM, 229 MPFROMSHORT(sSelect),MPVOID); 230 } 231 } 232 else 233 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SELECTITEM, 234 MPFROMSHORT(sSelect),MPFROMSHORT(FALSE)); 235 sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 236 LM_QUERYSELECTION, 237 MPFROMSHORT(LIT_FIRST), 238 MPVOID); 232 } 233 } 234 break; 235 236 case RE_REMOVE: 237 { 238 SHORT sSelect, x; 239 LINKCMDS *info; 240 241 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 242 LM_QUERYSELECTION, 243 MPFROMSHORT(LIT_FIRST), MPVOID); 244 while (sSelect >= 0) { 245 info = (LINKCMDS *) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 246 LM_QUERYITEMHANDLE, 247 MPFROMSHORT(sSelect), MPVOID); 248 if (info) { 249 x = (SHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 250 LM_INSERTITEM, 251 MPFROM2SHORT(LIT_END, 0), 252 MPFROMP(info->title)); 253 if (x >= 0) { 254 WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX, 255 LM_SETITEMHANDLE, 256 MPFROMSHORT(x), MPFROMP(info)); 257 WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, LM_DELETEITEM, 258 MPFROMSHORT(sSelect), MPVOID); 239 259 } 240 260 } 241 break; 242 243 case RE_REMOVE: 244 { 245 SHORT sSelect,x; 246 LINKCMDS *info; 247 248 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 261 else 262 WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, LM_SELECTITEM, 263 MPFROMSHORT(sSelect), MPFROMSHORT(FALSE)); 264 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX, 249 265 LM_QUERYSELECTION, 250 266 MPFROMSHORT(LIT_FIRST), 251 267 MPVOID); 252 while(sSelect >= 0) { 253 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 254 LM_QUERYITEMHANDLE, 255 MPFROMSHORT(sSelect), 256 MPVOID); 257 if(info) { 258 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 259 LM_INSERTITEM, 260 MPFROM2SHORT(LIT_END,0), 261 MPFROMP(info->title)); 262 if(x >= 0) { 263 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX, 264 LM_SETITEMHANDLE, 265 MPFROMSHORT(x), 266 MPFROMP(info)); 267 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_DELETEITEM, 268 MPFROMSHORT(sSelect),MPVOID); 269 } 270 } 271 else 272 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_SELECTITEM, 273 MPFROMSHORT(sSelect),MPFROMSHORT(FALSE)); 274 sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX, 275 LM_QUERYSELECTION, 276 MPFROMSHORT(LIT_FIRST), 277 MPVOID); 278 } 279 } 280 break; 281 } 282 return 0; 283 } 284 return WinDefDlgProc(hwnd,msg,mp1,mp2); 285 } 286 287 288 CHAR *command_title (INT cx) 289 { 290 static CHAR duh[] = "???"; 291 LINKCMDS *info; 292 INT x = 0; 293 294 if(!cmdloaded) 268 } 269 } 270 break; 271 } 272 return 0; 273 } 274 return WinDefDlgProc(hwnd, msg, mp1, mp2); 275 } 276 277 CHAR *command_title(INT cx) 278 { 279 static CHAR duh[] = "???"; 280 LINKCMDS *info; 281 INT x = 0; 282 283 if (!cmdloaded) 295 284 load_commands(); 296 285 info = cmdhead; 297 while (info) {298 if (x == cx)286 while (info) { 287 if (x == cx) 299 288 return info->title; 300 289 info = info->next; … … 303 292 } 304 293 305 306 VOID free_commands (VOID) 307 { 308 LINKCMDS *info,*next; 294 VOID free_commands(VOID) 295 { 296 LINKCMDS *info, *next; 309 297 310 298 info = cmdhead; 311 while (info) {299 while (info) { 312 300 next = info->next; 313 301 free(info->title); … … 319 307 } 320 308 321 322 VOID load_commands (VOID) 323 { 324 FILE *fp; 309 VOID load_commands(VOID) 310 { 311 FILE *fp; 325 312 LINKCMDS *info; 326 CHAR 327 CHAR 328 CHAR 329 330 if (cmdhead)313 CHAR cl[1024]; 314 CHAR title[100]; 315 CHAR flags[72]; 316 317 if (cmdhead) 331 318 free_commands(); 332 319 cmdloaded = TRUE; 333 320 save_dir2(cl); 334 if (cl[strlen(cl) - 1] != '\\')335 strcat(cl, "\\");336 strcat(cl, "COMMANDS.DAT");337 fp = _fsopen(cl, "r",SH_DENYWR);338 if (fp) {321 if (cl[strlen(cl) - 1] != '\\') 322 strcat(cl, "\\"); 323 strcat(cl, "COMMANDS.DAT"); 324 fp = _fsopen(cl, "r", SH_DENYWR); 325 if (fp) { 339 326 while (!feof(fp)) { 340 if (!xfgets_bstripcr(title, sizeof(title),fp,pszSrcFile,__LINE__))327 if (!xfgets_bstripcr(title, sizeof(title), fp, pszSrcFile, __LINE__)) 341 328 break; 342 329 title[34] = 0; // fixme to know why chopped this way? … … 344 331 if (!*title || *title == ';') 345 332 continue; 346 if (!xfgets(cl, sizeof(cl),fp,pszSrcFile,__LINE__))347 break; 348 if (!xfgets(flags, 72,fp,pszSrcFile,__LINE__))349 break; 333 if (!xfgets(cl, sizeof(cl), fp, pszSrcFile, __LINE__)) 334 break; /* error! */ 335 if (!xfgets(flags, 72, fp, pszSrcFile, __LINE__)) 336 break; /* error! */ 350 337 cl[1000] = 0; // fixme to know why chopped this way? 351 338 bstripcr(cl); 352 339 flags[34] = 0; 353 340 bstripcr(flags); 354 if (!*cl)341 if (!*cl) 355 342 continue; 356 info = xmallocz(sizeof(LINKCMDS), pszSrcFile,__LINE__);343 info = xmallocz(sizeof(LINKCMDS), pszSrcFile, __LINE__); 357 344 if (info) { 358 info->cl = xstrdup(cl, pszSrcFile,__LINE__);359 info->title = xstrdup(title, pszSrcFile,__LINE__);345 info->cl = xstrdup(cl, pszSrcFile, __LINE__); 346 info->title = xstrdup(title, pszSrcFile, __LINE__); 360 347 info->flags = atol(flags); 361 if (!info->cl || !info->title) {362 if (info->cl)348 if (!info->cl || !info->title) { 349 if (info->cl) 363 350 free(info->cl); 364 if (info->title)351 if (info->title) 365 352 free(info->title); 366 353 free(info); 367 354 break; 368 355 } 369 if (!cmdhead)356 if (!cmdhead) 370 357 cmdhead = info; 371 358 else { … … 380 367 } 381 368 382 383 VOID save_commands (VOID) 369 VOID save_commands(VOID) 384 370 { 385 371 LINKCMDS *info; 386 FILE 387 CHAR 388 389 if (!cmdloaded || !cmdhead)372 FILE *fp; 373 CHAR s[CCHMAXPATH + 14]; 374 375 if (!cmdloaded || !cmdhead) 390 376 return; 391 377 info = cmdhead; 392 378 save_dir2(s); 393 if (s[strlen(s) - 1] != '\\')394 strcat(s, "\\");395 strcat(s, "COMMANDS.DAT");396 fp = xfopen(s, "w",pszSrcFile,__LINE__);379 if (s[strlen(s) - 1] != '\\') 380 strcat(s, "\\"); 381 strcat(s, "COMMANDS.DAT"); 382 fp = xfopen(s, "w", pszSrcFile, __LINE__); 397 383 if (fp) { 398 fputs(GetPString(IDS_COMMANDFILETEXT), fp);384 fputs(GetPString(IDS_COMMANDFILETEXT), fp); 399 385 info = cmdhead; 400 while (info) {386 while (info) { 401 387 fprintf(fp, 402 388 ";\n%0.34s\n%0.1000s\n%lu\n", 403 info->title, 404 info->cl, 405 info->flags); 389 info->title, info->cl, info->flags); 406 390 info = info->next; 407 391 } … … 410 394 } 411 395 412 413 396 //== add_command() Add command to list == 414 397 415 LINKCMDS *add_command (COMMAND *addme)398 LINKCMDS *add_command(COMMAND * addme) 416 399 { 417 400 LINKCMDS *info; 418 401 419 402 if (!addme || !*addme->cl || !*addme->title) 420 return NULL; // No data403 return NULL; // No data 421 404 info = cmdhead; 422 405 while (info) { 423 if (!stricmp(info->title, addme->title))424 return NULL; // Got a dup406 if (!stricmp(info->title, addme->title)) 407 return NULL; // Got a dup 425 408 info = info->next; 426 409 } 427 info = xmallocz(sizeof(LINKCMDS), pszSrcFile,__LINE__);410 info = xmallocz(sizeof(LINKCMDS), pszSrcFile, __LINE__); 428 411 if (!info) 429 412 return NULL; 430 info->cl = xstrdup(addme->cl, pszSrcFile,__LINE__);431 info->title = xstrdup(addme->title, pszSrcFile,__LINE__);413 info->cl = xstrdup(addme->cl, pszSrcFile, __LINE__); 414 info->title = xstrdup(addme->title, pszSrcFile, __LINE__); 432 415 if (addme->flags) 433 416 info->flags = addme->flags; … … 449 432 } 450 433 451 452 BOOL kill_command (CHAR *killme) 434 BOOL kill_command(CHAR * killme) 453 435 { 454 436 LINKCMDS *info; 455 437 456 if (killme && *killme) {438 if (killme && *killme) { 457 439 info = cmdhead; 458 while (info) {459 if (!stricmp(info->title,killme)) {460 if (info == cmdhead) {440 while (info) { 441 if (!stricmp(info->title, killme)) { 442 if (info == cmdhead) { 461 443 cmdhead = info->next; 462 if (info == cmdtail)444 if (info == cmdtail) 463 445 cmdtail = info->prev; 464 446 } 465 447 else { 466 if (info->next)448 if (info->next) 467 449 (info->next)->prev = info->prev; 468 if (info->prev)450 if (info->prev) 469 451 (info->prev)->next = info->next; 470 if (info == cmdtail)452 if (info == cmdtail) 471 453 cmdtail = info->prev; 472 454 } … … 482 464 } 483 465 484 485 MRESULT EXPENTRY CommandDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 486 { 487 SHORT x; 466 MRESULT EXPENTRY CommandDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 467 { 468 SHORT x; 488 469 LINKCMDS *info; 489 470 490 switch(msg) { 491 case WM_INITDLG: 492 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_DELETEALL,MPVOID,MPVOID); 493 WinSendDlgItemMsg(hwnd,CMD_CL,EM_SETTEXTLIMIT, 494 MPFROM2SHORT(1000,0),MPVOID); 495 WinSendDlgItemMsg(hwnd,CMD_TITLE,EM_SETTEXTLIMIT, 496 MPFROM2SHORT(33,0),MPVOID); 497 WinSetDlgItemText(hwnd,CMD_CL,NullStr); 498 WinSetDlgItemText(hwnd,CMD_TITLE,NullStr); 499 WinCheckButton(hwnd,CMD_DEFAULT,TRUE); 500 WinCheckButton(hwnd,CMD_PROMPT,FALSE); 501 WinCheckButton(hwnd,CMD_ONCE,FALSE); 502 info = cmdhead; 503 while(info) { 504 x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_INSERTITEM, 505 MPFROM2SHORT(LIT_END,0), 506 MPFROMP(info->title)); 507 if(x >= 0) 508 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SETITEMHANDLE, 509 MPFROMSHORT(x),MPFROMP(info)); 510 info = info->next; 511 } 512 WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SELECTITEM, 513 MPFROMSHORT(0),MPFROMSHORT(TRUE)); 471 switch (msg) { 472 case WM_INITDLG: 473 WinSendDlgItemMsg(hwnd, CMD_LISTBOX, LM_DELETEALL, MPVOID, MPVOID); 474 WinSendDlgItemMsg(hwnd, CMD_CL, EM_SETTEXTLIMIT, 475 MPFROM2SHORT(1000, 0), MPVOID); 476 WinSendDlgItemMsg(hwnd, CMD_TITLE, EM_SETTEXTLIMIT, 477 MPFROM2SHORT(33, 0), MPVOID); 478 WinSetDlgItemText(hwnd, CMD_CL, NullStr); 479 WinSetDlgItemText(hwnd, CMD_TITLE, NullStr); 480 WinCheckButton(hwnd, CMD_DEFAULT, TRUE); 481 WinCheckButton(hwnd, CMD_PROMPT, FALSE); 482 WinCheckButton(hwnd, CMD_ONCE, FALSE); 483 info = cmdhead; 484 while (info) { 485 x = (SHORT) WinSendDlgItemMsg(hwnd, CMD_LISTBOX, LM_INSERTITEM, 486 MPFROM2SHORT(LIT_END, 0), 487 MPFROMP(info->title)); 488 if (x >= 0) 489 WinSendDlgItemMsg(hwnd, CMD_LISTBOX, LM_SETITEMHANDLE, 490 MPFROMSHORT(x), MPFROMP(info)); 491 info = info->next; 492 } 493 WinSendDlgItemMsg(hwnd, CMD_LISTBOX, LM_SELECTITEM, 494 MPFROMSHORT(0), MPFROMSHORT(TRUE)); 495 { 496 PFNWP oldproc; 497 498 oldproc = WinSubclassWindow(WinWindowFromID(hwnd, CMD_CL), 499 (PFNWP) CommandTextProc); 500 if (oldproc) 501 WinSetWindowPtr(WinWindowFromID(hwnd, CMD_CL), 0, (PVOID) oldproc); 502 } 503 break; 504 505 case WM_CONTROL: 506 if (SHORT1FROMMP(mp1) == CMD_LISTBOX) { 507 switch (SHORT2FROMMP(mp1)) { 508 case LN_ENTER: 509 case LN_SELECT: 510 x = (SHORT) WinSendDlgItemMsg(hwnd, CMD_LISTBOX, 511 LM_QUERYSELECTION, 512 MPFROMSHORT(LIT_FIRST), MPVOID); 513 if (x >= 0) { 514 info = (LINKCMDS *) WinSendDlgItemMsg(hwnd, CMD_LISTBOX, 515 LM_QUERYITEMHANDLE, 516 MPFROMSHORT(x), MPVOID); 517 if (!info) { 518 Runtime_Error(pszSrcFile, __LINE__, "LM_QUERYITEMHANDLE"); 519 break; 520 } 521 WinSetDlgItemText(hwnd, CMD_CL, info->cl); 522 if (!(info->flags & 1023)) 523 WinCheckButton(hwnd, CMD_DEFAULT, TRUE); 524 else { 525 if (info->flags & FULLSCREEN) 526 WinCheckButton(hwnd, CMD_FULLSCREEN, TRUE); 527 else if (info->flags & MINIMIZED) 528 WinCheckButton(hwnd, CMD_MINIMIZED, TRUE); 529 else if (info->flags & MAXIMIZED) 530 WinCheckButton(hwnd, CMD_MAXIMIZED, TRUE); 531 else if (info->flags & INVISIBLE) 532 WinCheckButton(hwnd, CMD_INVISIBLE, TRUE); 533 } 534 WinCheckButton(hwnd, CMD_PROMPT, ((info->flags & PROMPT) != 0)); 535 WinCheckButton(hwnd, CMD_KEEP, ((info->flags & KEEP) != 0)); 536 WinCheckButton(hwnd, CMD_ONCE, ((info->flags & ONCE) != 0)); 537 WinSetDlgItemText(hwnd, CMD_TITLE, info->title); 538 { 539 CHAR env[1002]; 540 ULONG size; 541 542 *env = 0; 543 size = sizeof(env) - 1; 544 if (PrfQueryProfileData(fmprof, FM3Str, info->cl, env, &size) && 545 *env) 546 WinSetDlgItemText(hwnd, CMD_ENVIRON, env); 547 else 548 WinSetDlgItemText(hwnd, CMD_ENVIRON, NullStr); 549 } 550 } 551 break; 552 } 553 } 554 return 0; 555 556 case WM_COMMAND: 557 switch (SHORT1FROMMP(mp1)) { 558 case CMD_FIND: 514 559 { 515 PFNWP oldproc; 516 517 oldproc = WinSubclassWindow(WinWindowFromID(hwnd,CMD_CL), 518 (PFNWP)CommandTextProc); 519 if(oldproc) 520 WinSetWindowPtr(WinWindowFromID(hwnd,CMD_CL),0,(PVOID)oldproc); 521 } 522 break; 523 524 case WM_CONTROL: 525 if(SHORT1FROMMP(mp1) == CMD_LISTBOX) { 526 switch(SHORT2FROMMP(mp1)) { 527 case LN_ENTER: 528 case LN_SELECT: 529 x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX, 530 LM_QUERYSELECTION, 531 MPFROMSHORT(LIT_FIRST), 532 MPVOID); 533 if(x >= 0) { 534 info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,CMD_LISTBOX, 535 LM_QUERYITEMHANDLE, 536 MPFROMSHORT(x), 537 MPVOID); 538 if(!info) { 539 Runtime_Error(pszSrcFile, __LINE__, "LM_QUERYITEMHANDLE"); 540 break; 541 } 542 WinSetDlgItemText(hwnd,CMD_CL,info->cl); 543 if(!(info->flags & 1023)) 544 WinCheckButton(hwnd,CMD_DEFAULT,TRUE); 545 else { 546 if(info->flags & FULLSCREEN) 547 WinCheckButton(hwnd,CMD_FULLSCREEN,TRUE); 548 else if(info->flags & MINIMIZED) 549 WinCheckButton(hwnd,CMD_MINIMIZED,TRUE); 550 else if(info->flags & MAXIMIZED) 551 WinCheckButton(hwnd,CMD_MAXIMIZED,TRUE); 552 else if(info->flags & INVISIBLE) 553 WinCheckButton(hwnd,CMD_INVISIBLE,TRUE); 554 } 555 WinCheckButton(hwnd,CMD_PROMPT,((info->flags & PROMPT) != 0)); 556 WinCheckButton(hwnd,CMD_KEEP,((info->flags & KEEP) != 0)); 557 WinCheckButton(hwnd,CMD_ONCE,((info->flags & ONCE) != 0)); 558 WinSetDlgItemText(hwnd,CMD_TITLE,info->title); 559 { 560 CHAR env[1002]; 561 ULONG size; 562 563 *env = 0; 564 size = sizeof(env) - 1; 565 if(PrfQueryProfileData(fmprof,FM3Str,info->cl,env,&size) && 566 *env) 567 WinSetDlgItemText(hwnd,CMD_ENVIRON,env); 568 else 569 WinSetDlgItemText(hwnd,CMD_ENVIRON,NullStr); 570 } 571 } 572 break; 573 } 574 } 575 return 0; 576 577 case WM_COMMAND: 578 switch(SHORT1FROMMP(mp1)) { 579 case CMD_FIND: 580 { 581 CHAR filename[CCHMAXPATH + 9]; 582 583 *filename = 0; 584 if(insert_filename(hwnd,filename,2,FALSE) && *filename) { 585 strcat(filename," %a"); 586 WinSetDlgItemText(hwnd,CMD_CL,filename); 587 } 588 } 589 break; 590 591 case CMD_REORDER: 592 if(!cmdhead || !cmdhead->next) { 593 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 594 break; 595 } 596 if(WinDlgBox(HWND_DESKTOP,hwnd,ReOrderProc,FM3ModHandle, 597 RE_FRAME,MPVOID)) { 598 WinSendDlgItemMsg(hwnd, 599 CMD_LISTBOX, 600 LM_DELETEALL, 601 MPVOID, 602 MPVOID); 603 WinSetDlgItemText(hwnd, 604 CMD_CL, 605 NullStr); 606 WinSetDlgItemText(hwnd, 607 CMD_TITLE, 608 NullStr); 609 info = cmdhead; 610 while(info) { 611 x = (SHORT)WinSendDlgItemMsg(hwnd, 612 CMD_LISTBOX, 613 LM_INSERTITEM, 614 MPFROM2SHORT(LIT_END,0), 615 MPFROMP(info->title)); 616 if(x >= 0) 617 WinSendDlgItemMsg(hwnd, 618 CMD_LISTBOX, 619 LM_SETITEMHANDLE, 620 MPFROMSHORT(x), 621 MPFROMP(info)); 622 info = info->next; 623 } 560 CHAR filename[CCHMAXPATH + 9]; 561 562 *filename = 0; 563 if (insert_filename(hwnd, filename, 2, FALSE) && *filename) { 564 strcat(filename, " %a"); 565 WinSetDlgItemText(hwnd, CMD_CL, filename); 566 } 567 } 568 break; 569 570 case CMD_REORDER: 571 if (!cmdhead || !cmdhead->next) { 572 Runtime_Error(pszSrcFile, __LINE__, "no cmd"); 573 break; 574 } 575 if (WinDlgBox(HWND_DESKTOP, hwnd, ReOrderProc, FM3ModHandle, 576 RE_FRAME, MPVOID)) { 577 WinSendDlgItemMsg(hwnd, CMD_LISTBOX, LM_DELETEALL, MPVOID, MPVOID); 578 WinSetDlgItemText(hwnd, CMD_CL, NullStr); 579 WinSetDlgItemText(hwnd, CMD_TITLE, NullStr); 580 info = cmdhead; 581 while (info) { 582 x = (SHORT) WinSendDlgItemMsg(hwnd, 583 CMD_LISTBOX, 584 LM_INSERTITEM, 585 MPFROM2SHORT(LIT_END, 0), 586 MPFROMP(info->title)); 587 if (x >= 0) 588 WinSendDlgItemMsg(hwnd, 589 CMD_LISTBOX, 590 LM_SETITEMHANDLE, 591 MPFROMSHORT(x), MPFROMP(info)); 592 info = info->next; 593 } 594 WinSendDlgItemMsg(hwnd, 595 CMD_LISTBOX, 596 LM_SELECTITEM, MPFROMSHORT(0), MPFROMSHORT(TRUE)); 597 WinCheckButton(hwnd, CMD_DEFAULT, TRUE); 598 WinCheckButton(hwnd, CMD_PROMPT, FALSE); 599 WinCheckButton(hwnd, CMD_ONCE, FALSE); 600 save_commands(); 601 } 602 break; 603 604 case DID_OK: 605 { 606 x = (SHORT) WinSendDlgItemMsg(hwnd, 607 CMD_LISTBOX, 608 LM_QUERYSELECTION, MPVOID, MPVOID); 609 if (x == LIT_NONE) 610 x = (SHORT) WinSendDlgItemMsg(hwnd, 611 CMD_LISTBOX, 612 LM_SELECTITEM, 613 MPFROMSHORT(0), MPFROMSHORT(TRUE)); 614 } 615 { 616 COMMAND temp; 617 618 memset(&temp, 0, sizeof(COMMAND)); 619 WinQueryDlgItemText(hwnd, CMD_CL, sizeof(temp.cl), temp.cl); 620 bstrip(temp.cl); 621 WinQueryDlgItemText(hwnd, CMD_TITLE, sizeof(temp.title), temp.title); 622 if (WinQueryButtonCheckstate(hwnd, CMD_DEFAULT)) 623 temp.flags = 0; 624 else if (WinQueryButtonCheckstate(hwnd, CMD_FULLSCREEN)) 625 temp.flags = FULLSCREEN; 626 else if (WinQueryButtonCheckstate(hwnd, CMD_MINIMIZED)) 627 temp.flags = MINIMIZED; 628 else if (WinQueryButtonCheckstate(hwnd, CMD_MAXIMIZED)) 629 temp.flags = MAXIMIZED; 630 else if (WinQueryButtonCheckstate(hwnd, CMD_INVISIBLE)) 631 temp.flags = INVISIBLE; 632 if (WinQueryButtonCheckstate(hwnd, CMD_KEEP)) 633 temp.flags |= KEEP; 634 if (WinQueryButtonCheckstate(hwnd, CMD_PROMPT)) 635 temp.flags |= PROMPT; 636 if (WinQueryButtonCheckstate(hwnd, CMD_ONCE)) 637 temp.flags |= ONCE; 638 info = add_command(&temp); 639 if (!info) 640 WinDismissDlg(hwnd, 0); 641 /*{ 642 /* saymsg(MB_ENTER, 643 hwnd, 644 GetPString(IDS_ERRORTEXT), 645 // GetPString(IDS_CANTADDCOMMANDTEXT), 646 "Can't add %s to command list", temp.title); // fixme to be in fm3dll.str 647 } */ 648 else { 649 CHAR env[1002]; 650 651 *env = 0; 652 WinQueryDlgItemText(hwnd, CMD_ENVIRON, 1000, env); 653 bstripcr(env); 654 if (*env) { 655 PrfWriteProfileString(fmprof, FM3Str, temp.cl, env); 656 } 657 x = (SHORT) WinSendDlgItemMsg(hwnd, 658 CMD_LISTBOX, 659 LM_INSERTITEM, 660 MPFROM2SHORT(LIT_END, 0), 661 MPFROMP(temp.title)); 662 if (x >= 0) { 663 WinSendDlgItemMsg(hwnd, 664 CMD_LISTBOX, 665 LM_SETITEMHANDLE, 666 MPFROMSHORT(x), MPFROMP(info)); 624 667 WinSendDlgItemMsg(hwnd, 625 668 CMD_LISTBOX, 626 669 LM_SELECTITEM, 627 MPFROMSHORT(0), 628 MPFROMSHORT(TRUE)); 629 WinCheckButton(hwnd, 630 CMD_DEFAULT, 631 TRUE); 632 WinCheckButton(hwnd, 633 CMD_PROMPT, 634 FALSE); 635 WinCheckButton(hwnd, 636 CMD_ONCE, 637 FALSE); 670 MPFROMSHORT(x), MPFROMSHORT(TRUE)); 638 671 save_commands(); 639 672 } 640 break; 641 642 case DID_OK: 643 { 644 x = (SHORT)WinSendDlgItemMsg(hwnd, 645 CMD_LISTBOX, 646 LM_QUERYSELECTION, 647 MPVOID, 648 MPVOID); 649 if(x==LIT_NONE) 650 x = (SHORT) WinSendDlgItemMsg(hwnd, 651 CMD_LISTBOX, 652 LM_SELECTITEM, 653 MPFROMSHORT(0), 654 MPFROMSHORT(TRUE)); 655 } 656 { 657 COMMAND temp; 658 659 memset(&temp,0,sizeof(COMMAND)); 660 WinQueryDlgItemText(hwnd,CMD_CL,sizeof(temp.cl),temp.cl); 661 bstrip(temp.cl); 662 WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title); 663 if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT)) 664 temp.flags = 0; 665 else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN)) 666 temp.flags = FULLSCREEN; 667 else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED)) 668 temp.flags = MINIMIZED; 669 else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED)) 670 temp.flags = MAXIMIZED; 671 else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE)) 672 temp.flags = INVISIBLE; 673 if(WinQueryButtonCheckstate(hwnd,CMD_KEEP)) 674 temp.flags |= KEEP; 675 if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT)) 676 temp.flags |= PROMPT; 677 if(WinQueryButtonCheckstate(hwnd,CMD_ONCE)) 678 temp.flags |= ONCE; 679 info = add_command(&temp); 680 if (!info) 681 WinDismissDlg(hwnd,0); 682 /*{ 683 /* saymsg(MB_ENTER, 684 hwnd, 685 GetPString(IDS_ERRORTEXT), 686 // GetPString(IDS_CANTADDCOMMANDTEXT), 687 "Can't add %s to command list", temp.title); // fixme to be in fm3dll.str 688 } */ 689 else { 690 CHAR env[1002]; 691 692 *env = 0; 693 WinQueryDlgItemText(hwnd,CMD_ENVIRON,1000,env); 694 bstripcr(env); 695 if (*env) { 696 PrfWriteProfileString(fmprof, 697 FM3Str, 698 temp.cl, 699 env); 700 } 701 x = (SHORT)WinSendDlgItemMsg(hwnd, 702 CMD_LISTBOX, 703 LM_INSERTITEM, 704 MPFROM2SHORT(LIT_END,0), 705 MPFROMP(temp.title)); 706 if(x >= 0) { 707 WinSendDlgItemMsg(hwnd, 708 CMD_LISTBOX, 709 LM_SETITEMHANDLE, 710 MPFROMSHORT(x), 711 MPFROMP(info)); 712 WinSendDlgItemMsg(hwnd, 713 CMD_LISTBOX, 714 LM_SELECTITEM, 715 MPFROMSHORT(x), 716 MPFROMSHORT(TRUE)); 717 save_commands(); 718 } 719 } 720 } 721 x = (SHORT)WinSendDlgItemMsg(hwnd, 722 CMD_LISTBOX, 723 LM_QUERYSELECTION, 724 MPFROMSHORT(LIT_FIRST), 725 MPVOID); 726 WinDismissDlg(hwnd,0); 727 break; 728 729 case DID_CANCEL: 730 WinDismissDlg(hwnd,0); 731 break; 732 733 case IDM_HELP: 734 if(hwndHelp) 735 WinSendMsg(hwndHelp, 736 HM_DISPLAY_HELP, 737 MPFROM2SHORT(HELP_COMMAND,0), 738 MPFROMSHORT(HM_RESOURCEID)); 739 break; 740 741 case CMD_ADD: 742 { 743 COMMAND temp; 744 745 memset(&temp,0,sizeof(COMMAND)); 746 WinQueryDlgItemText(hwnd,CMD_CL,sizeof(temp.cl),temp.cl); 747 bstrip(temp.cl); 748 WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title); 749 if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT)) 750 temp.flags = 0; 751 else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN)) 752 temp.flags = FULLSCREEN; 753 else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED)) 754 temp.flags = MINIMIZED; 755 else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED)) 756 temp.flags = MAXIMIZED; 757 else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE)) 758 temp.flags = INVISIBLE; 759 if(WinQueryButtonCheckstate(hwnd,CMD_KEEP)) 760 temp.flags |= KEEP; 761 if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT)) 762 temp.flags |= PROMPT; 763 if(WinQueryButtonCheckstate(hwnd,CMD_ONCE)) 764 temp.flags |= ONCE; 765 info = add_command(&temp); 766 if (!info) { 767 saymsg(MB_ENTER, 768 hwnd, 769 GetPString(IDS_ERRORTEXT), 770 // GetPString(IDS_CANTADDCOMMANDTEXT), 771 "Can't add %s to command list It has a duplicate title", temp.title); // fixme to be in fm3dll.str 772 } 773 else { 774 CHAR env[1002]; 775 776 *env = 0; 777 WinQueryDlgItemText(hwnd,CMD_ENVIRON,1000,env); 778 bstripcr(env); 779 if (*env) { 780 PrfWriteProfileString(fmprof, 781 FM3Str, 782 temp.cl, 783 env); 784 } 785 x = (SHORT)WinSendDlgItemMsg(hwnd, 786 CMD_LISTBOX, 787 LM_INSERTITEM, 788 MPFROM2SHORT(LIT_END,0), 789 MPFROMP(temp.title)); 790 if(x >= 0) { 791 WinSendDlgItemMsg(hwnd, 792 CMD_LISTBOX, 793 LM_SETITEMHANDLE, 794 MPFROMSHORT(x), 795 MPFROMP(info)); 796 WinSendDlgItemMsg(hwnd, 797 CMD_LISTBOX, 798 LM_SELECTITEM, 799 MPFROMSHORT(x), 800 MPFROMSHORT(TRUE)); 801 save_commands(); 802 } 803 } 804 } 805 break; 806 807 case CMD_DELETE: 808 { 809 CHAR temp[34]; 810 811 WinQueryDlgItemText(hwnd,CMD_TITLE,34,temp); 812 bstrip(temp); 813 if (!kill_command(temp)) 814 Runtime_Error(pszSrcFile, __LINE__, "kill_command"); 815 else { 816 x = (SHORT)WinSendDlgItemMsg(hwnd, 817 CMD_LISTBOX, 818 LM_QUERYSELECTION, 819 MPFROMSHORT(LIT_FIRST), 820 MPVOID); 821 if(x >= 0) { 822 WinSendDlgItemMsg(hwnd, 823 CMD_LISTBOX, 824 LM_DELETEITEM, 825 MPFROMSHORT(x), 826 MPVOID); 827 WinSendDlgItemMsg(hwnd, 828 CMD_LISTBOX, 829 LM_SELECTITEM, 830 MPFROMSHORT(LIT_NONE), 831 MPFROMSHORT(FALSE)); 832 } 833 save_commands(); 834 } 835 } 836 break; 837 case CMD_REPLACE: 838 { 839 CHAR temp[34]; 840 841 WinQueryDlgItemText(hwnd,CMD_TITLE,34,temp); 842 bstrip(temp); 843 if (!kill_command(temp)) 844 Runtime_Error(pszSrcFile, __LINE__, "kill_command"); 845 else { 846 x = (SHORT)WinSendDlgItemMsg(hwnd, 847 CMD_LISTBOX, 848 LM_QUERYSELECTION, 849 MPFROMSHORT(LIT_FIRST), 850 MPVOID); 851 if(x >= 0) { 852 WinSendDlgItemMsg(hwnd, 853 CMD_LISTBOX, 854 LM_DELETEITEM, 855 MPFROMSHORT(x), 856 MPVOID); 857 WinSendDlgItemMsg(hwnd, 858 CMD_LISTBOX, 859 LM_SELECTITEM, 860 MPFROMSHORT(LIT_NONE), 861 MPFROMSHORT(FALSE)); 862 } 863 save_commands(); 864 } 865 } 866 { 867 COMMAND temp; 868 869 memset(&temp,0,sizeof(COMMAND)); 870 WinQueryDlgItemText(hwnd,CMD_CL,sizeof(temp.cl),temp.cl); 871 bstrip(temp.cl); 872 WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title); 873 if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT)) 874 temp.flags = 0; 875 else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN)) 876 temp.flags = FULLSCREEN; 877 else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED)) 878 temp.flags = MINIMIZED; 879 else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED)) 880 temp.flags = MAXIMIZED; 881 else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE)) 882 temp.flags = INVISIBLE; 883 if(WinQueryButtonCheckstate(hwnd,CMD_KEEP)) 884 temp.flags |= KEEP; 885 if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT)) 886 temp.flags |= PROMPT; 887 if(WinQueryButtonCheckstate(hwnd,CMD_ONCE)) 888 temp.flags |= ONCE; 889 info = add_command(&temp); 890 if (!info) { 891 saymsg(MB_ENTER, 892 hwnd, 893 GetPString(IDS_ERRORTEXT), 894 // GetPString(IDS_CANTADDCOMMANDTEXT), 895 "Can't add %s to command list", temp.title); // fixme to be in fm3dll.str 896 } 897 else { 898 CHAR env[1002]; 899 900 *env = 0; 901 WinQueryDlgItemText(hwnd,CMD_ENVIRON,1000,env); 902 bstripcr(env); 903 if (*env) { 904 PrfWriteProfileString(fmprof, 905 FM3Str, 906 temp.cl, 907 env); 908 } 909 x = (SHORT)WinSendDlgItemMsg(hwnd, 910 CMD_LISTBOX, 911 LM_INSERTITEM, 912 MPFROM2SHORT(LIT_END,0), 913 MPFROMP(temp.title)); 914 if(x >= 0) { 915 WinSendDlgItemMsg(hwnd, 916 CMD_LISTBOX, 917 LM_SETITEMHANDLE, 918 MPFROMSHORT(x), 919 MPFROMP(info)); 920 WinSendDlgItemMsg(hwnd, 921 CMD_LISTBOX, 922 LM_SELECTITEM, 923 MPFROMSHORT(x), 924 MPFROMSHORT(TRUE)); 925 save_commands(); 926 } 927 } 928 } 929 break; 930 } 931 return 0; 932 } 933 return WinDefDlgProc(hwnd,msg,mp1,mp2); 934 } 935 936 937 VOID RunCommand (HWND hwnd,INT cx) 938 { 939 INT x; 940 CHAR **list; 941 LINKCMDS *info; 673 } 674 } 675 x = (SHORT) WinSendDlgItemMsg(hwnd, 676 CMD_LISTBOX, 677 LM_QUERYSELECTION, 678 MPFROMSHORT(LIT_FIRST), MPVOID); 679 WinDismissDlg(hwnd, 0); 680 break; 681 682 case DID_CANCEL: 683 WinDismissDlg(hwnd, 0); 684 break; 685 686 case IDM_HELP: 687 if (hwndHelp) 688 WinSendMsg(hwndHelp, 689 HM_DISPLAY_HELP, 690 MPFROM2SHORT(HELP_COMMAND, 0), MPFROMSHORT(HM_RESOURCEID)); 691 break; 692 693 case CMD_ADD: 694 { 695 COMMAND temp; 696 697 memset(&temp, 0, sizeof(COMMAND)); 698 WinQueryDlgItemText(hwnd, CMD_CL, sizeof(temp.cl), temp.cl); 699 bstrip(temp.cl); 700 WinQueryDlgItemText(hwnd, CMD_TITLE, sizeof(temp.title), temp.title); 701 if (WinQueryButtonCheckstate(hwnd, CMD_DEFAULT)) 702 temp.flags = 0; 703 else if (WinQueryButtonCheckstate(hwnd, CMD_FULLSCREEN)) 704 temp.flags = FULLSCREEN; 705 else if (WinQueryButtonCheckstate(hwnd, CMD_MINIMIZED)) 706 temp.flags = MINIMIZED; 707 else if (WinQueryButtonCheckstate(hwnd, CMD_MAXIMIZED)) 708 temp.flags = MAXIMIZED; 709 else if (WinQueryButtonCheckstate(hwnd, CMD_INVISIBLE)) 710 temp.flags = INVISIBLE; 711 if (WinQueryButtonCheckstate(hwnd, CMD_KEEP)) 712 temp.flags |= KEEP; 713 if (WinQueryButtonCheckstate(hwnd, CMD_PROMPT)) 714 temp.flags |= PROMPT; 715 if (WinQueryButtonCheckstate(hwnd, CMD_ONCE)) 716 temp.flags |= ONCE; 717 info = add_command(&temp); 718 if (!info) { 719 saymsg(MB_ENTER, hwnd, GetPString(IDS_ERRORTEXT), 720 // GetPString(IDS_CANTADDCOMMANDTEXT), 721 "Can't add %s to command list It has a duplicate title", temp.title); // fixme to be in fm3dll.str 722 } 723 else { 724 CHAR env[1002]; 725 726 *env = 0; 727 WinQueryDlgItemText(hwnd, CMD_ENVIRON, 1000, env); 728 bstripcr(env); 729 if (*env) { 730 PrfWriteProfileString(fmprof, FM3Str, temp.cl, env); 731 } 732 x = (SHORT) WinSendDlgItemMsg(hwnd, 733 CMD_LISTBOX, 734 LM_INSERTITEM, 735 MPFROM2SHORT(LIT_END, 0), 736 MPFROMP(temp.title)); 737 if (x >= 0) { 738 WinSendDlgItemMsg(hwnd, 739 CMD_LISTBOX, 740 LM_SETITEMHANDLE, 741 MPFROMSHORT(x), MPFROMP(info)); 742 WinSendDlgItemMsg(hwnd, 743 CMD_LISTBOX, 744 LM_SELECTITEM, 745 MPFROMSHORT(x), MPFROMSHORT(TRUE)); 746 save_commands(); 747 } 748 } 749 } 750 break; 751 752 case CMD_DELETE: 753 { 754 CHAR temp[34]; 755 756 WinQueryDlgItemText(hwnd, CMD_TITLE, 34, temp); 757 bstrip(temp); 758 if (!kill_command(temp)) 759 Runtime_Error(pszSrcFile, __LINE__, "kill_command"); 760 else { 761 x = (SHORT) WinSendDlgItemMsg(hwnd, 762 CMD_LISTBOX, 763 LM_QUERYSELECTION, 764 MPFROMSHORT(LIT_FIRST), MPVOID); 765 if (x >= 0) { 766 WinSendDlgItemMsg(hwnd, 767 CMD_LISTBOX, 768 LM_DELETEITEM, MPFROMSHORT(x), MPVOID); 769 WinSendDlgItemMsg(hwnd, 770 CMD_LISTBOX, 771 LM_SELECTITEM, 772 MPFROMSHORT(LIT_NONE), MPFROMSHORT(FALSE)); 773 } 774 save_commands(); 775 } 776 } 777 break; 778 case CMD_REPLACE: 779 { 780 CHAR temp[34]; 781 782 WinQueryDlgItemText(hwnd, CMD_TITLE, 34, temp); 783 bstrip(temp); 784 if (!kill_command(temp)) 785 Runtime_Error(pszSrcFile, __LINE__, "kill_command"); 786 else { 787 x = (SHORT) WinSendDlgItemMsg(hwnd, 788 CMD_LISTBOX, 789 LM_QUERYSELECTION, 790 MPFROMSHORT(LIT_FIRST), MPVOID); 791 if (x >= 0) { 792 WinSendDlgItemMsg(hwnd, 793 CMD_LISTBOX, 794 LM_DELETEITEM, MPFROMSHORT(x), MPVOID); 795 WinSendDlgItemMsg(hwnd, 796 CMD_LISTBOX, 797 LM_SELECTITEM, 798 MPFROMSHORT(LIT_NONE), MPFROMSHORT(FALSE)); 799 } 800 save_commands(); 801 } 802 } 803 { 804 COMMAND temp; 805 806 memset(&temp, 0, sizeof(COMMAND)); 807 WinQueryDlgItemText(hwnd, CMD_CL, sizeof(temp.cl), temp.cl); 808 bstrip(temp.cl); 809 WinQueryDlgItemText(hwnd, CMD_TITLE, sizeof(temp.title), temp.title); 810 if (WinQueryButtonCheckstate(hwnd, CMD_DEFAULT)) 811 temp.flags = 0; 812 else if (WinQueryButtonCheckstate(hwnd, CMD_FULLSCREEN)) 813 temp.flags = FULLSCREEN; 814 else if (WinQueryButtonCheckstate(hwnd, CMD_MINIMIZED)) 815 temp.flags = MINIMIZED; 816 else if (WinQueryButtonCheckstate(hwnd, CMD_MAXIMIZED)) 817 temp.flags = MAXIMIZED; 818 else if (WinQueryButtonCheckstate(hwnd, CMD_INVISIBLE)) 819 temp.flags = INVISIBLE; 820 if (WinQueryButtonCheckstate(hwnd, CMD_KEEP)) 821 temp.flags |= KEEP; 822 if (WinQueryButtonCheckstate(hwnd, CMD_PROMPT)) 823 temp.flags |= PROMPT; 824 if (WinQueryButtonCheckstate(hwnd, CMD_ONCE)) 825 temp.flags |= ONCE; 826 info = add_command(&temp); 827 if (!info) { 828 saymsg(MB_ENTER, hwnd, GetPString(IDS_ERRORTEXT), 829 // GetPString(IDS_CANTADDCOMMANDTEXT), 830 "Can't add %s to command list", temp.title); // fixme to be in fm3dll.str 831 } 832 else { 833 CHAR env[1002]; 834 835 *env = 0; 836 WinQueryDlgItemText(hwnd, CMD_ENVIRON, 1000, env); 837 bstripcr(env); 838 if (*env) { 839 PrfWriteProfileString(fmprof, FM3Str, temp.cl, env); 840 } 841 x = (SHORT) WinSendDlgItemMsg(hwnd, 842 CMD_LISTBOX, 843 LM_INSERTITEM, 844 MPFROM2SHORT(LIT_END, 0), 845 MPFROMP(temp.title)); 846 if (x >= 0) { 847 WinSendDlgItemMsg(hwnd, 848 CMD_LISTBOX, 849 LM_SETITEMHANDLE, 850 MPFROMSHORT(x), MPFROMP(info)); 851 WinSendDlgItemMsg(hwnd, 852 CMD_LISTBOX, 853 LM_SELECTITEM, 854 MPFROMSHORT(x), MPFROMSHORT(TRUE)); 855 save_commands(); 856 } 857 } 858 } 859 break; 860 } 861 return 0; 862 } 863 return WinDefDlgProc(hwnd, msg, mp1, mp2); 864 } 865 866 VOID RunCommand(HWND hwnd, INT cx) 867 { 868 INT x; 869 CHAR **list; 870 LINKCMDS *info; 942 871 943 872 list = BuildList(hwnd); 944 if (!list || !list[0])873 if (!list || !list[0]) 945 874 return; 946 875 x = 0; 947 876 info = cmdhead; 948 while (info) {877 while (info) { 949 878 x++; 950 if (x == cx)879 if (x == cx) 951 880 break; 952 881 info = info->next; 953 882 } 954 if (info) {955 956 INT 883 if (info) { 884 885 INT flags; 957 886 958 887 x--; 959 888 flags = info->flags; 960 if (!(flags & FULLSCREEN))889 if (!(flags & FULLSCREEN)) 961 890 flags |= WINDOWED; 962 if (flags & KEEP)891 if (flags & KEEP) 963 892 flags |= SEPARATEKEEP; 964 893 else 965 894 flags |= SEPARATE; 966 895 flags &= ~(KEEP | DIEAFTER); 967 if ((flags & ONCE) && list && list[0]) {968 969 CHAR 970 INT 896 if ((flags & ONCE) && list && list[0]) { 897 898 CHAR *fakelist[2]; 899 INT cntr; 971 900 972 901 flags &= (~ONCE); 973 for (cntr = 0;list[cntr];cntr++) {902 for (cntr = 0; list[cntr]; cntr++) { 974 903 *fakelist = list[cntr]; 975 904 fakelist[1] = NULL; 976 905 ExecOnList(hwnd, 977 906 info->cl, 978 flags, 979 NULL, 980 fakelist, 981 GetPString(IDS_EXECCMDTITLETEXT)); 907 flags, NULL, fakelist, GetPString(IDS_EXECCMDTITLETEXT)); 982 908 } 983 909 } … … 985 911 ExecOnList(hwnd, 986 912 info->cl, 987 flags, 988 NULL, 989 list, 990 GetPString(IDS_EXECCMDTITLETEXT)); 913 flags, NULL, list, GetPString(IDS_EXECCMDTITLETEXT)); 991 914 } 992 915 FreeList(list); … … 994 917 } 995 918 996 997 VOID EditCommands (HWND hwnd) 919 VOID EditCommands(HWND hwnd) 998 920 { 999 921 static CHAR stop = 0; 1000 922 1001 if (stop)923 if (stop) 1002 924 return; 1003 925 stop++; 1004 if (!cmdloaded)926 if (!cmdloaded) 1005 927 load_commands(); 1006 928 WinDlgBox(HWND_DESKTOP, 1007 hwnd, 1008 CommandDlgProc, 1009 FM3ModHandle, 1010 CMD_FRAME, 1011 MPFROMP(&hwnd)); 929 hwnd, CommandDlgProc, FM3ModHandle, CMD_FRAME, MPFROMP(&hwnd)); 1012 930 stop = 0; 1013 931 }
Note:
See TracChangeset
for help on using the changeset viewer.