home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / may94 / os20 / util / recall.lha / Recall / Source / ReConvert.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-05  |  5.7 KB  |  237 lines

  1. /*
  2.  *    File:                    Converter.c
  3.  *    Description:    Program to convert a Recall project to different formats.
  4.  *    Version:            1.2
  5.  *    Author:                Ketil Hunn
  6.  *    Mail:                    ketil@brosme.dhmolde.no
  7.  *                                hunn@dhmolde.no
  8.  *
  9.  *    Copyright © 1993-1994 Ketil Hunn.  Please read the document for further
  10.  *    information and copyrights.
  11.  *
  12.  *    In order to list the source-files included in this package properly,
  13.  *    the TAB size should be set at 2.
  14.  *
  15.  */
  16.  
  17. #include <MUI.h>
  18. //#include <stdio.h>
  19. #include <libraries/locale.h>
  20. #include <clib/locale_protos.h>
  21. #include <pragmas/locale_pragmas.h>
  22.  
  23. #define  CATCOMP_NUMBERS
  24. #include "ReConvert_locale.h"
  25.  
  26. struct Library *LocaleBase, *IFFParseBase;
  27. struct LocaleInfo li;
  28.  
  29. /* PROTOTYPES */
  30. void CheckReady(char source[256], char destination[256]);
  31. BOOL Convert(long intype, char *source, long outtype, char *destination);
  32. STRPTR __asm GetString(register __a0 struct LocaleInfo *li,
  33.                        register __d0 LONG stringNum);
  34.  
  35. #include "Escapes.h"
  36. #include "Version.h"
  37. #include "GUI_Converter.h"
  38. #include <exec/memory.h>
  39. #include "GlobalConfig.h"
  40. #include "Exists().h"
  41.  
  42. void MyRequest(char *buttons, char *format, char *params)
  43. {
  44.     if(MUIMasterBase)
  45.         MUI_Request(app, window, 0, NULL, buttons, format, params);
  46. }
  47.  
  48. #include "Config14.h"
  49. #include "Config20.h"
  50. #include "ASCII.h"
  51. #include "GetFile().h"
  52.  
  53. #define    OPT_INTYPE    0
  54. #define    OPT_INFILE    1
  55. #define    OPT_OUTTYPE    2
  56. #define    OPT_OUTFILE    3
  57.  
  58. #define TEMPLATE "INTYPE/A/N,FILE1/A,OUTTYPE/A/N,FILE2/A"
  59. BOOL parameters=FALSE;
  60.  
  61. void __main(char *AIDS_KILLS)
  62. {
  63.     ULONG    signals;
  64.     BOOL    running=TRUE, getfileflag;
  65.     char  *source, *destination;
  66.     struct RDArgs        *args;
  67.     LONG                        arg[4];
  68.  
  69.     if(IFFParseBase=OpenLibrary("iffparse.library", LIBVER))
  70.     {
  71.         // Using standar AmigaDOS parsing routines
  72.         if(args=ReadArgs(TEMPLATE, arg, NULL))
  73.         {
  74.             Convert(*((LONG *)arg[OPT_INTYPE]),    (UBYTE *)arg[OPT_INFILE],
  75.                             *((LONG *)arg[OPT_OUTTYPE]),    (UBYTE *)arg[OPT_OUTFILE]);
  76.             FreeArgs(args);
  77.             exit(0);
  78.         }
  79.  
  80.         li.li_Catalog=NULL;
  81.         if(LocaleBase=OpenLibrary("locale.library", 0))
  82.         {
  83.             li.li_LocaleBase = LocaleBase;
  84.             li.li_Catalog    = OpenCatalogA(NULL,"Recall/" CONVERTERNAME".catalog",NULL);
  85.         }
  86.  
  87.         if(app=SetupGUI())
  88.         {
  89.             if((source=malloc(FNSIZE)) && (destination=malloc(FNSIZE)))
  90.             {
  91.                 strcpy(source, DEFSOURCE);
  92.                 strcpy(destination, DEFDESTINATION);
  93.                 set(sourceString, MUIA_String_Contents, source);
  94.                 set(destinationString, MUIA_String_Contents, destination);
  95.  
  96.                 CheckReady(source,destination);
  97.                 set(window, MUIA_Window_Open, TRUE);
  98.                 set(window, MUIA_Window_ActiveObject, sourceString);
  99.  
  100.                 while(running)
  101.                 {
  102.                     switch(DoMethod(app, MUIM_Application_Input, &signals))
  103.                     {
  104.                         case MUIV_Application_ReturnID_Quit:
  105.                             running=FALSE;
  106.                             break;
  107.  
  108.                         case ID_ABOUT:
  109.                             MUI_Request(app, window, 0, NULL, "*OK",
  110.                                                     aCENTRE aLIGHT
  111.                                                     CONVERTERNAME " " CONVVERSION " " COPYRIGHT ".\n\n"
  112.                                                     aNORMAL aDARK
  113.                                                     "%s\n\n"
  114.                                                     "%s\n\n"
  115.                                                     "%s Public Domain\n\n"
  116.                                                     "%s " CURRENT_DATE,
  117.                                                     GetString(&li, MSG_ABOUTDESCRIPTION),
  118.                                                     GetString(&li, MSG_ABOUTHELP),
  119.                                                     GetString(&li, MSG_PUBLICDOMAIN),
  120.                                                     GetString(&li, MSG_COMPILED));
  121.                             break;
  122.  
  123.                         case ID_GETSOURCE:
  124.                             getfileflag=TRUE;
  125.  
  126.                         case ID_SOURCESTRING:
  127.                             if(getfileflag)
  128.                             {
  129.                                 if(GetFile(GetWinPtr(window),
  130.                                                 GetString(&li, MSG_SELECTSOURCE),
  131.                                                 source,
  132.                                                 ""))
  133.                                     set(window, MUIA_Window_ActiveObject, sourceString);
  134.                             }
  135.                             else
  136.                                 get(sourceString, MUIA_String_Contents, &source);
  137.                             set(sourceString, MUIA_String_Contents, source);
  138.                             CheckReady(source, destination);
  139.                             getfileflag=FALSE;
  140.                             break;
  141.  
  142.                         case ID_GETDESTINATION:
  143.                             getfileflag=TRUE;
  144.  
  145.                         case ID_DESTINATIONSTRING:
  146.                             if(getfileflag)
  147.                             {
  148.                                 if(GetFile(GetWinPtr(window),
  149.                                                 GetString(&li, MSG_SELECTDESTINATION),
  150.                                                 destination,
  151.                                                 ""))
  152.                                     set(window, MUIA_Window_ActiveObject, destinationString);
  153.                             }
  154.                             else
  155.                                 get(destinationString, MUIA_String_Contents, &destination);
  156.                             set(destinationString, MUIA_String_Contents, destination);
  157.                             CheckReady(source, destination);
  158.                             getfileflag=FALSE;
  159.                             break;
  160.  
  161.                         case ID_CONVERT:
  162.                             set(window, MUIA_Window_Sleep, TRUE);
  163.                             Convert(Active(sourceListView), source,
  164.                                             Active(destinationListView),destination);
  165.                             set(window, MUIA_Window_Sleep, FALSE);
  166.                             break;
  167.                     }
  168.                     if (running && signals)
  169.                         Wait(signals);
  170.                 }
  171.                 if(aslreq)
  172.                     MUI_FreeAslRequest(aslreq);
  173.             }
  174.             set(window, MUIA_Window_Open, FALSE);
  175.             fail(app,NULL);
  176.         }
  177.         if(LocaleBase)
  178.         {
  179.             CloseCatalog(li.li_Catalog);
  180.             CloseLibrary(LocaleBase);
  181.         }
  182.         CloseLibrary(IFFParseBase);
  183.     }
  184. }
  185.  
  186. void CheckReady(char source[256], char destination[256])
  187. {
  188.     if(Exists(source)==TRUE & strlen(destination)>0)
  189.         set(convert, MUIA_Disabled, FALSE);
  190.     else
  191.         set(convert, MUIA_Disabled, TRUE);
  192. }
  193.  
  194. BOOL Convert(    LONG intype,    char *source,
  195.                             LONG outtype,    char *destination)
  196. {
  197.     struct List        *list;
  198.     BOOL success;
  199.  
  200.     if(list=AllocMem(sizeof(struct List), MEMF_CLEAR))
  201.     {
  202.         NewList(list);
  203.  
  204.         switch(intype)
  205.         {
  206.             case LOAD_ASCII:
  207.                 success=ReadASCII(list, source);
  208.                 break;
  209.  
  210.             case LOAD_V1X:
  211.                 success=ReadPrefs14(list, source);
  212.                 break;
  213.  
  214.             case LOAD_V2X:
  215.                 success=ReadIFF(list, source);
  216.                 break;
  217.         }
  218.  
  219.         if(success)
  220.             switch(outtype)
  221.             {
  222.                 case SAVE_ASCII:
  223.                     WriteASCII(list, destination);
  224.                     break;
  225.  
  226.                 case SAVE_V2X:
  227.                     WriteIFF(list, destination);
  228.                     break;
  229.             }
  230.         FreeEventList(list);
  231.         FreeMem(list, sizeof(struct List));
  232.     }
  233.     if(success==TRUE & parameters==FALSE)
  234.         MyRequest("OK", GetString(&li, MSG_SUCCESS), "");
  235.     return success;
  236. }
  237.