void loadMacros(NewMacroInfo *macrost, FSSpec *theFile) { SFReply sfr; long junk; SFTypeList typesok = {'TEXT'}; Point where; FSSpec macros; OSErr err; short fileRef; where.h=100;where.v=100; if (theFile == 0L) { SFGetFile( where, NULL, 0L, 1, typesok, 0L, &sfr); if (!sfr.good) return; BlockMoveData(&sfr.fName, macros.name, (*sfr.fName)+1); GetWDInfo(sfr.vRefNum, ¯os.vRefNum, ¯os.parID, &junk); err = HOpenDF(macros.vRefNum, macros.parID, macros.name, fsRdPerm, &fileRef); } else err = HOpenDF(theFile->vRefNum, theFile->parID, theFile->name, fsRdPerm, &fileRef); if (err != noErr) return; parseMacroFile(macrost, fileRef); FSClose(fileRef); }
static void OpenCommand (void) { int error; FILE *stream; SFReply reply; Point where; char prompt[32]; SFTypeList typeList; if (globalState==OPENED) return; /* get file name */ strcpy(prompt,"choose metafile:"); where.h = 20; where.v = 40; SFGetFile(where,c2pstr(prompt),NULL,-1,typeList,NULL,&reply); if (!reply.good) { return; } /* save name and path */ vRefNum = reply.vRefNum; strcpy(fileName,p2cstr(reply.fName)); /* set volume */ error = SetVol(NULL,vRefNum); if (((int)error)!=0) { OneButtonBox("Could not set volume","OK"); return; } stream = fopen(fileName,"rb"); if (stream==NULL) { OneButtonBox("Could not open file","OK"); return; } GetFileScreen(stream,&fx,&fy); /* open a window */ error = CreateApplicationWindow(&myWindow,fileName,20,40,fx,fy); fclose(stream); SetState(OPENED); RefreshCommand(); return; }
PicHandle GetPICTFile ( void) { SFReply reply; static Point where = { 80, 80 }; PicHandle picHandle; SFGetFile(where, NULL, NULL, -1, NULL, NULL, &reply); if (reply.good) { picHandle = OpenPICTFile(reply.vRefNum, reply.fName); return (picHandle); } return (0); }
OSErr choose_and_open_file( short *file_handle, short *reference_number, char *file_name, long spec1, long spec2, long spec3, long spec4) { Point location; SFTypeList filetypes; SFReply reply; OSErr error; short count; filetypes[0]= spec1, filetypes[1]= spec2, filetypes[2]= spec3, filetypes[3]= spec4; for (count=0;count<4;++count) { if (!filetypes[count]) { break; } } SetPt(&location, 40, 60); SFGetFile(location, (char *) NULL, NULL, count, filetypes, NULL, &reply); if (reply.good) { strncpy(file_name, reply.fName, reply.fName[0]+1); *reference_number= reply.vRefNum; error= FSOpen(reply.fName, reply.vRefNum, file_handle); } else { error= userCanceledErr; } return error; }