Defaults::Defaults(void) { FileFormat *filef; FSSpec fspec; McoStatus status; int magic_num; int version; Str255 def = MONACO_DEFAULT; Str255 fold = MONACO_FOLDER; // set factory defaults printer_type = 1; input_type = DT_None; patch_format = 1; port = 1; // now try to load in the user defults filef = new FileFormat; ptocstr(def); ptocstr(fold); status = filef->openFilefromPref(&fspec,(char*)def,(char*)fold); if (status != MCO_SUCCESS) goto bail; status = filef->relRead(sizeof(int),(char*)&magic_num); if (status != MCO_SUCCESS) goto bail; if (magic_num != DEFAULTS_MAGIC_NUM) goto bail; status = filef->relRead(sizeof(int),(char*)&version); if (status != MCO_SUCCESS) goto bail; if (version > DEFAULTS_VERSION) goto bail; status = filef->relRead(sizeof(int),(char*)&printer_type); if (status != MCO_SUCCESS) goto bail; status = filef->relRead(sizeof(int),(char*)&input_type); if (status != MCO_SUCCESS) goto bail; status = filef->relRead(sizeof(int),(char*)&patch_format); if (status != MCO_SUCCESS) goto bail; status = filef->relRead(sizeof(int),(char*)&port); if (status != MCO_SUCCESS) goto bail; filef->closeFile(); bail: delete filef; }
McoStatus ToneTab::updateWindowData(int changed) { Rect r1; short iType; Handle iHandle; Str255 text; char desc[100]; int result; int newhand; if (!doc) return MCO_OBJECT_NOT_INITIALIZED; if (!doc->printData) return MCO_OBJECT_NOT_INITIALIZED; // see if export is valid GetDItem (dp, DESCRIPTION+startNum, &iType, (Handle*)&iHandle, &r1); GetIText(iHandle,text); ptocstr(text); strcpy(desc,doc->printData->setting.toneDesc); if (strcmp((char*)text,desc)) { ctopstr(desc); SetIText(iHandle,(unsigned char*)desc); } if (last_changed) changed = 0; last_changed = 0; if (changed) CopyIntoControl(-1); return MCO_SUCCESS; }
Defaults::~Defaults(void) { FileFormat *filef; FSSpec fspec; McoStatus status; int magic_num = DEFAULTS_MAGIC_NUM; int version = DEFAULTS_VERSION; Str255 def = MONACO_DEFAULT; Str255 fold = MONACO_FOLDER; // now try to load in the user defults filef = new FileFormat; ptocstr(def); ptocstr(fold); status = filef->createFileinPref(&fspec,(char*)def,(char*)fold); if (status != MCO_SUCCESS) return; status = filef->openFile(&fspec); if (status != MCO_SUCCESS) return; status = filef->relWrite(sizeof(int),(char*)&magic_num); if (status != MCO_SUCCESS) return; status = filef->relWrite(sizeof(int),(char*)&version); if (status != MCO_SUCCESS) return; status = filef->relWrite(sizeof(int),(char*)&printer_type); if (status != MCO_SUCCESS) return; status = filef->relWrite(sizeof(int),(char*)&input_type); if (status != MCO_SUCCESS) return; status = filef->relWrite(sizeof(int),(char*)&patch_format); if (status != MCO_SUCCESS) return; status = filef->relWrite(sizeof(int),(char*)&port); if (status != MCO_SUCCESS) return; filef->setInfo(&fspec,MONACO_SIG,'MCO7'); filef->closeFile(); delete filef; }
// The event handler for the main menu McoStatus ToneTab::DoEvents(short item, Point clickPoint, WindowCode *wc, int32 *numwc, void **data,Boolean &changed) { int didit = 0; int i,j; McoStatus status = MCO_SUCCESS; short item2 = item - startNum; Str255 prompt; StandardFileReply soutReply,sinReply; Str255 outname = "\p"; SFTypeList filelist; Str255 inname; Rect r1; short iType; Handle iHandle; WindowPtr oldP; GetPort(&oldP); SetPort( dp ) ; // no codes passed back *numwc = 0; for (i=0; i<numControls; i++) { status = controls[i]->DoEvents(item,clickPoint,wc,numwc,data,changed,&didit); if (status) return status; if (changed) { doc->changedLinearTone = 1; last_changed = 1; CopyOutofControl(i); CopyIntoControl(i); } else last_changed = 0; if (didit) return status; } if (item2 == EXPORT) { if (doc->calCurves) { GetIndString(prompt,PROMPT_STRINGS,STANDARD_PROMPT); StandardPutFile(prompt, outname, &soutReply); if(soutReply.sfGood) { memcpy(outname, soutReply.sfFile.name, *(soutReply.sfFile.name)+1); PathNameFromDirID(soutReply.sfFile.parID, soutReply.sfFile.vRefNum, outname); ptocstr(outname); status = doc->calCurves->exportTone((char*)outname); if (status) McoErrorAlert(status); else { FileFormat ff; ff.setInfo(&soutReply.sfFile,MONACO_SIG,'TEXT'); } } } } else if (item2 == IMPORT) { if (doc->calCurves) { filelist[0] = 'TEXT'; StandardGetFile(0L, 1, filelist, &sinReply); if(sinReply.sfGood) { memcpy(inname, sinReply.sfFile.name, *(sinReply.sfFile.name)+1); PathNameFromDirID(sinReply.sfFile.parID, sinReply.sfFile.vRefNum, inname); ptocstr(inname); status = doc->calCurves->importTone((char*)inname); if (status) McoErrorAlert(status); else { CopyIntoControl(-1); doc->changedLinearTone = 1; } status = MCO_SUCCESS; } } } else { GetDItem (dp, DESCRIPTION+startNum, &iType, (Handle*)&iHandle, &r1); GetIText(iHandle,inname); if (inname[0] > 100) inname[0] = 100; ptocstr(inname); strcpy(doc->printData->setting.toneDesc,(char*)inname); } SetPort(oldP); return status; }
// Open a gammut surface dialog, use info passed in data if data is valid McoStatus AllWins::openGammutSurface1(void) { GamutSurfaceWin *gamutsurf; int32 maxwinnum = 0; McoStatus state = MCO_SUCCESS; int i; Str255 patchFName; RawData *raw; StandardFileReply sinReply; SFTypeList filelist; Str255 inname; FILE *fs; if (!QD3D_Present) return MCO_NO_QD3D; if (xyztorgb == NULL) return MCO_FAILURE; // raw is deleted by the window raw = new RawData(); filelist[0] = 'TEXT'; StandardGetFile(nil, 1, filelist, &sinReply); if(sinReply.sfGood == 0) return MCO_CANCEL; copy_str(patchFName,sinReply.sfFile.name); memcpy(inname, sinReply.sfFile.name, *(sinReply.sfFile.name)+1); PathNameFromDirID(sinReply.sfFile.parID, sinReply.sfFile.vRefNum, inname); ptocstr(inname); fs = fopen( (char*)inname, "r" ); if(!fs) return MCO_FILE_OPEN_ERROR; raw->loadData(fs); fclose(fs); //for (i=0; i<tempdoc->_condata.smooth; i++) raw->smooth_patch(); maxwinnum = 0; for (i=0; i<numWins; i++) if (wins[i]->isMyWindowType(GammutSurfaceTherm1)) { if (wins[i]->WinNum >= maxwinnum) maxwinnum = wins[i]->WinNum+1; } memcpy(inname, sinReply.sfFile.name, *(sinReply.sfFile.name)+1); // the flag after raw indicates that the window should delete raw gamutsurf = new GamutSurfaceWin(0L,raw,1,GammutSurfaceTherm1,maxwinnum,inname); if (gamutsurf == 0L) return MCO_MEM_ALLOC_ERROR; if (gamutsurf->error == MCO_MEM_ALLOC_ERROR) { McoErrorAlert(gamutsurf->error); delete gamutsurf; return MCO_SUCCESS; } if (gamutsurf->error != MCO_SUCCESS) { state = gamutsurf->error; delete gamutsurf; return state; } return AddWin(gamutsurf,0L); }