Rev 493 | Rev 496 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 493 | Rev 495 | ||
---|---|---|---|
Line 357... | Line 357... | ||
357 | #endif |
357 | #endif |
358 | dispose_preview(); |
358 | dispose_preview(); |
359 | return false; // end dialog |
359 | return false; // end dialog |
360 | case OPENITEM: |
360 | case OPENITEM: |
361 | { |
361 | { |
362 | TCHAR filters[3000]; |
362 | TCHAR* tmp1; |
363 | TCHAR *tmp1, *tmp2; |
363 | TCHAR* filters = (TCHAR*)malloc(4096); |
364 | size_t len; |
364 | if (filters == NULL) return false; |
365 | - | ||
366 | memset(&filters[0], 0, sizeof(filters)); |
365 | memset(filters, 0, 4096); |
367 | tmp1 = &filters[0]; |
366 | tmp1 = filters; |
368 | 367 | ||
369 | FF_GetMsg(tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
368 | strcpy_advance_id(&tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
370 | tmp1 += xstrlen(tmp1); |
- | |
371 | len = xstrlen(tmp2 = TEXT(" (*.afs, *.8bf, *.pff, *.prm, *.bin, *.rsrc, *.txt, *.ffx)")); |
369 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.afs, *.8bf, *.pff, *.prm, *.bin, *.rsrc, *.txt, *.ffx)")); tmp1++; |
372 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
373 | tmp1 += (len + 1); |
- | |
374 | len = xstrlen(tmp2 = TEXT("*.afs;*.8bf;*.pff;*.prm;*.bin;*.rsrc;*.txt;*.ffx")); |
370 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.afs;*.8bf;*.pff;*.prm;*.bin;*.rsrc;*.txt;*.ffx")); tmp1++; |
375 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
376 | tmp1 += (len + 1); |
- | |
377 | 371 | ||
378 | FF_GetMsg(tmp1, MSG_OPEN_AFS_ID); |
372 | strcpy_advance_id(&tmp1, MSG_OPEN_AFS_ID); |
379 | tmp1 += xstrlen(tmp1); |
- | |
380 | len = xstrlen(tmp2 = TEXT(" (*.afs)")); |
373 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.afs)")); tmp1++; |
381 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
382 | tmp1 += (len + 1); |
- | |
383 | len = xstrlen(tmp2 = TEXT("*.afs")); |
374 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.afs")); tmp1++; |
384 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
385 | tmp1 += (len + 1); |
- | |
386 | 375 | ||
387 | FF_GetMsg(tmp1, MSG_OPEN_TXT_ID); |
376 | strcpy_advance_id(&tmp1, MSG_OPEN_TXT_ID); |
388 | tmp1 += xstrlen(tmp1); |
- | |
389 | len = xstrlen(tmp2 = TEXT(" (*.txt)")); |
377 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.txt)")); tmp1++; |
390 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
391 | tmp1 += (len + 1); |
- | |
392 | len = xstrlen(tmp2 = TEXT("*.txt")); |
378 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.txt")); tmp1++; |
393 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
394 | tmp1 += (len + 1); |
- | |
395 | 379 | ||
396 | FF_GetMsg(tmp1, MSG_OPEN_8BF_ID); |
380 | strcpy_advance_id(&tmp1, MSG_OPEN_8BF_ID); |
397 | tmp1 += xstrlen(tmp1); |
- | |
398 | len = xstrlen(tmp2 = TEXT(" (*.8bf)")); |
381 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.8bf)")); tmp1++; |
399 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
400 | tmp1 += (len + 1); |
- | |
401 | len = xstrlen(tmp2 = TEXT("*.8bf")); |
382 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.8bf")); tmp1++; |
402 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
403 | tmp1 += (len + 1); |
- | |
404 | 383 | ||
405 | FF_GetMsg(tmp1, MSG_OPEN_PFF_ID); |
384 | strcpy_advance_id(&tmp1, MSG_OPEN_PFF_ID); |
406 | tmp1 += xstrlen(tmp1); |
- | |
407 | len = xstrlen(tmp2 = TEXT(" (*.pff)")); |
385 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.pff)")); tmp1++; |
408 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
409 | tmp1 += (len + 1); |
- | |
410 | len = xstrlen(tmp2 = TEXT("*.pff")); |
386 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.pff")); tmp1++; |
411 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
412 | tmp1 += (len + 1); |
- | |
413 | 387 | ||
414 | FF_GetMsg(tmp1, MSG_OPEN_PRM_ID); |
388 | strcpy_advance_id(&tmp1, MSG_OPEN_PRM_ID); |
415 | tmp1 += xstrlen(tmp1); |
- | |
416 | len = xstrlen(tmp2 = TEXT(" (*.prm)")); |
389 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.prm)")); tmp1++; |
417 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
418 | tmp1 += (len + 1); |
- | |
419 | len = xstrlen(tmp2 = TEXT("*.prm")); |
390 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.prm")); tmp1++; |
420 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
421 | tmp1 += (len + 1); |
- | |
422 | 391 | ||
423 | FF_GetMsg(tmp1, MSG_OPEN_RSRC_ID); |
392 | strcpy_advance_id(&tmp1, MSG_OPEN_RSRC_ID); |
424 | tmp1 += xstrlen(tmp1); |
- | |
425 | len = xstrlen(tmp2 = TEXT(" (*.bin, *.rsrc)")); |
393 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.bin, *.rsrc)")); tmp1++; |
426 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
427 | tmp1 += (len + 1); |
- | |
428 | len = xstrlen(tmp2 = TEXT("*.bin;*.rsrc")); |
394 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.bin;*.rsrc")); tmp1++; |
429 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
430 | tmp1 += (len + 1); |
- | |
431 | 395 | ||
432 | FF_GetMsg(tmp1, MSG_OPEN_FFX_ID); |
396 | strcpy_advance_id(&tmp1, MSG_OPEN_FFX_ID); |
433 | tmp1 += xstrlen(tmp1); |
- | |
434 | len = xstrlen(tmp2 = TEXT(" (*.ffx)")); |
397 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.ffx)")); tmp1++; |
435 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
436 | tmp1 += (len + 1); |
- | |
437 | len = xstrlen(tmp2 = TEXT("*.ffx")); |
398 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.ffx")); tmp1++; |
438 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
439 | tmp1 += (len + 1); |
- | |
440 | 399 | ||
441 | FF_GetMsg(tmp1, MSG_ALL_FILES_ID); |
400 | strcpy_advance_id(&tmp1, MSG_ALL_FILES_ID); |
442 | tmp1 += xstrlen(tmp1); |
- | |
443 | len = xstrlen(tmp2 = TEXT(" (*.*)")); |
401 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.*)")); tmp1++; |
444 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
445 | tmp1 += (len + 1); |
- | |
446 | len = xstrlen(tmp2 = TEXT("*.*")); |
402 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.*")); tmp1++; |
447 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
448 | tmp1 += (len + 1); |
- | |
449 | 403 | ||
450 | if (!gdata->standalone && choosefiletypes( |
404 | if (!gdata->standalone && choosefiletypes( |
451 | #ifdef MAC_ENV |
405 | #ifdef MAC_ENV |
452 | (StringPtr)_strdup("\pChoose filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
406 | (StringPtr)_strdup("\pChoose filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
453 | &sfr, &reply, types, 2, |
407 | &sfr, &reply, types, 2, |
454 | &filters[0] |
408 | filters |
455 | #else |
409 | #else |
456 | FF_GetMsg_Cpy(MSG_LOAD_FILTER_SETTINGS_TITLE_ID), |
410 | FF_GetMsg_Cpy(MSG_LOAD_FILTER_SETTINGS_TITLE_ID), |
457 | &sfr, &reply, types, 2, |
411 | &sfr, &reply, types, 2, |
458 | &filters[0], gdata->hWndMainDlg |
412 | filters, gdata->hWndMainDlg |
459 | #endif |
413 | #endif |
460 | )) { |
414 | )) { |
461 | // Backup everything, otherwise we might lose parameter data if the loading fails |
415 | // Backup everything, otherwise we might lose parameter data if the loading fails |
462 | bakState = saveInternalState(); |
416 | bakState = saveInternalState(); |
463 | 417 | ||
Line 470... | Line 424... | ||
470 | 424 | ||
471 | // Restore |
425 | // Restore |
472 | restoreInternalState(bakState); |
426 | restoreInternalState(bakState); |
473 | } |
427 | } |
474 | } |
428 | } |
- | 429 | free(filters); |
|
475 | break; |
430 | break; |
476 | } |
431 | } |
477 | case SAVEITEM: |
432 | case SAVEITEM: |
478 | { |
433 | { |
479 | TCHAR filters[3000]; |
434 | TCHAR* tmp1; |
480 | TCHAR* tmp1, * tmp2; |
435 | TCHAR* filters = (TCHAR*)malloc(4096); |
481 | size_t len; |
436 | if (filters == NULL) return false; |
482 | - | ||
483 | memset(&filters[0], 0, sizeof(filters)); |
437 | memset(filters, 0, 4096); |
484 | tmp1 = &filters[0]; |
438 | tmp1 = filters; |
485 | 439 | ||
486 | FF_GetMsg(tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
440 | strcpy_advance_id(&tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
487 | tmp1 += xstrlen(tmp1); |
- | |
488 | len = xstrlen(tmp2 = TEXT(" (*.afs, *.pff, *.txt)")); |
441 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.afs, *.pff, *.txt)")); tmp1++; |
489 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
490 | tmp1 += (len + 1); |
- | |
491 | len = xstrlen(tmp2 = TEXT("*.afs;*.pff;*.txt")); |
442 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.afs;*.pff;*.txt")); tmp1++; |
492 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
493 | tmp1 += (len + 1); |
- | |
494 | 443 | ||
495 | FF_GetMsg(tmp1, MSG_SAVE_AFS_ID); |
444 | strcpy_advance_id(&tmp1, MSG_SAVE_AFS_ID); |
496 | tmp1 += xstrlen(tmp1); |
- | |
497 | len = xstrlen(tmp2 = TEXT(" (*.afs)")); |
445 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.afs)")); tmp1++; |
498 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
499 | tmp1 += (len + 1); |
- | |
500 | len = xstrlen(tmp2 = TEXT("*.afs")); |
446 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.afs")); tmp1++; |
501 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
502 | tmp1 += (len + 1); |
- | |
503 | 447 | ||
504 | FF_GetMsg(tmp1, MSG_SAVE_PFF_ID); |
448 | strcpy_advance_id(&tmp1, MSG_SAVE_PFF_ID); |
505 | tmp1 += xstrlen(tmp1); |
- | |
506 | len = xstrlen(tmp2 = TEXT(" (*.pff)")); |
449 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.pff)")); tmp1++; |
507 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
508 | tmp1 += (len + 1); |
- | |
509 | len = xstrlen(tmp2 = TEXT("*.pff")); |
450 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.pff")); tmp1++; |
510 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
511 | tmp1 += (len + 1); |
- | |
512 | 451 | ||
513 | FF_GetMsg(tmp1, MSG_SAVE_TXT_ID); |
452 | strcpy_advance_id(&tmp1, MSG_SAVE_TXT_ID); |
514 | tmp1 += xstrlen(tmp1); |
- | |
515 | len = xstrlen(tmp2 = TEXT(" (*.txt)")); |
453 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.txt)")); tmp1++; |
516 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
517 | tmp1 += (len + 1); |
- | |
518 | len = xstrlen(tmp2 = TEXT("*.txt")); |
454 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.txt")); tmp1++; |
519 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
520 | tmp1 += (len + 1); |
- | |
521 | 455 | ||
522 | FF_GetMsg(tmp1, MSG_ALL_FILES_ID); |
456 | strcpy_advance_id(&tmp1, MSG_ALL_FILES_ID); |
523 | tmp1 += xstrlen(tmp1); |
- | |
524 | len = xstrlen(tmp2 = TEXT(" (*.*)")); |
457 | strcpy_advance(&tmp1, (TCHAR*)TEXT(" (*.*)")); tmp1++; |
525 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
526 | tmp1 += (len + 1); |
- | |
527 | len = xstrlen(tmp2 = TEXT("*.*")); |
458 | strcpy_advance(&tmp1, (TCHAR*)TEXT("*.*")); tmp1++; |
528 | memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
- | |
529 | tmp1 += (len + 1); |
- | |
530 | 459 | ||
531 | if (!gdata->standalone && putfile( |
460 | if (!gdata->standalone && putfile( |
532 | #ifdef MAC_ENV |
461 | #ifdef MAC_ENV |
533 | (StringPtr)_strdup("\pSave filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
462 | (StringPtr)_strdup("\pSave filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
534 | (StringPtr)_strdup("\0"), |
463 | (StringPtr)_strdup("\0"), |
535 | TEXT_FILETYPE, SIG_SIMPLETEXT, &reply, &sfr, |
464 | TEXT_FILETYPE, SIG_SIMPLETEXT, &reply, &sfr, |
536 | "afs", |
465 | "afs", |
537 | & filters[0], 1 |
466 | filters, 1 |
538 | #else |
467 | #else |
539 | FF_GetMsg_Cpy(MSG_SAVE_FILTER_SETTINGS_TITLE_ID), |
468 | FF_GetMsg_Cpy(MSG_SAVE_FILTER_SETTINGS_TITLE_ID), |
540 | TEXT("\0"), |
469 | TEXT("\0"), |
541 | TEXT_FILETYPE, SIG_SIMPLETEXT, &reply, &sfr, |
470 | TEXT_FILETYPE, SIG_SIMPLETEXT, &reply, &sfr, |
542 | TEXT("afs"), |
471 | TEXT("afs"), |
543 | & filters[0], 1, gdata->hWndMainDlg |
472 | filters, 1, gdata->hWndMainDlg |
544 | #endif |
473 | #endif |
545 | )) { |
474 | )) { |
546 | if (savefile_afs_pff_picotxt(&sfr)) { |
475 | if (savefile_afs_pff_picotxt(&sfr)) { |
547 | completesave(&reply); |
476 | completesave(&reply); |
548 | 477 | ||
Line 574... | Line 503... | ||
574 | #endif |
503 | #endif |
575 | } |
504 | } |
576 | 505 | ||
577 | } |
506 | } |
578 | } |
507 | } |
- | 508 | free(filters); |
|
579 | break; |
509 | break; |
580 | } |
510 | } |
581 | case MAKEITEM: |
511 | case MAKEITEM: |
582 | if (gdata->standalone) return true; // should not happen since the button should be grayed out |
512 | if (gdata->standalone) return true; // should not happen since the button should be grayed out |
583 | 513 |