/* Archives managemnet */ #include "common.h" #include "datalib.h" #include "archive.h" #include "help.h" Local(CharPtr PNTR) ArchiveTxt; /* defined in text.c */ enum { /* see setup.c, init[], /archive */ SELARCH_C } ArchiveTxtIndex; /*-------------------------------------*/ /* Data describing the current Archive */ Global(Char) ArchivesName[PATH_MAX+FILENAME_MAX+1]=""; /*-------------------*/ /* Activate Archives */ Global(Int2) ActivateArchives(void) { GetParam(SFS_CURRENTS,"ARCHIVE"); if (*ParBuf) { StrCpy(ArchivesName,ParBuf); ChangeDirectory(GetParam(SFS_CURRENTS,"DIRECTORY")); UpdateInfoInMainWindow(MWI_ARCHIVE,ArchivesName); return ActivateClass(); } else return 1; } /*---------------------*/ /* Deactivate Archives */ Global(void) DeactivateArchives(void) { if (*ArchivesName) { UpdateInfoInMainWindow(MWI_ARCHIVE,""); DeactivateClass(); *ArchivesName='\0'; } } /*-------------------------------*/ /* Select Archives to be current */ /* Called from the Main menu */ #if _WIN #pragma argsused #endif Global(void) SelectArchives(Int2 index) { CharPtr p; Char c; Boolean gifn; DataLibVar(ArchivesLib); Char ArchName[PATH_MAX+FILENAME_MAX+1]; PushContext(HLP_ARCHIVE,NULL,ArchiveTxt[SELARCH_C]); gifn=myGetInputFileName(ArchName,sizeof(ArchName),GetParam(SFS_EXTENSIONS,"ARCH")); PopContext(); if (gifn) if (DataLibOpen(&ArchivesLib,ArchName)==0) { DataLibClose(&ArchivesLib); DeactivateArchives(); p=StringRChr(ArchName,DIRDELIMCHR); if (p) { c=p[1]; p[1]='\0'; } SetParam(SFS_CURRENTS,"DIRECTORY",ArchName); if (p) p[1]=c; SetParam(SFS_CURRENTS,"ARCHIVE",ArchName); ActivateArchives(); } } /* Status function for SelectArchives */ #if _WIN #pragma argsused #endif Global(Boolean) SelectArchives_Status(Int2 index) { return TRUE; /* one can select Archives at any moment */ }