home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks96 / FontMancer.sit / FontMancer / Common / Prefs.c < prev    next >
C/C++ Source or Header  |  1996-06-21  |  3KB  |  108 lines

  1. #include "Prefs.h"
  2. #include "StandardEvent.h"
  3. #include "FontMancer.h"
  4. #include "FontDisplay.h"
  5.  
  6. extern Str255        gSamplePhrase;
  7. extern Boolean        gInBackground;
  8. extern WindowPtr    gMainWindow;
  9.  
  10. OSErr LoadPrefs(struct prefStuff *Prefs)
  11. {
  12.     long                    bytesRead;
  13.     short                    error,fRefNum;
  14.     FSSpec                    fileSpec;
  15.  
  16.     error = FindPrefs(&fileSpec,Prefs);
  17.     if (error)
  18.         return(error);
  19.     FSpOpenDF(&fileSpec,fsCurPerm,&fRefNum);
  20.     bytesRead = sizeof(struct prefStuff);
  21.     FSRead(fRefNum,&bytesRead,Prefs);
  22.     FSClose(fRefNum);
  23.     if (bytesRead != sizeof(struct prefStuff))
  24.         return(-1);
  25.     return(0);
  26. }
  27.  
  28. void SavePrefs(struct prefStuff *Prefs)
  29. {
  30.     long                    bytesWritten;
  31.     short                    error,fRefNum;
  32.     FSSpec                    fileSpec;
  33.  
  34.     error = FindPrefs(&fileSpec, Prefs);
  35.     if (error) return;
  36.     error = FSpOpenDF(&fileSpec,fsWrPerm,&fRefNum);
  37.     if (error) return;
  38.     bytesWritten = sizeof(struct prefStuff);
  39.     FSWrite(fRefNum,&bytesWritten,Prefs);
  40.     FSClose(fRefNum);
  41. }
  42.  
  43. OSErr FindPrefs(FSSpec *fileSpec, struct prefStuff *Prefs)
  44. {
  45.     long                    foundDirID,bytesWritten;
  46.     short                    error,foundVRefNum,fRefNum;
  47.     Str255                    fileName = "\pFontMancer Prefs";
  48.     Str255                    samplePhrase = "\pVisualise whirled peas";
  49.  
  50.     error = FindFolder(kOnSystemDisk,kPreferencesFolderType,kDontCreateFolder,&foundVRefNum,&foundDirID);
  51.     if (error)
  52.         return(error);
  53.     error = FSMakeFSSpec(foundVRefNum,foundDirID,fileName,fileSpec);
  54.     if (error) {
  55.         error = FSpCreate(fileSpec,'NU04','PREF',smSystemScript);
  56.         if (error)
  57.             return(error);
  58.         FSpOpenDF(fileSpec,fsWrPerm,&fRefNum);
  59.         BlockMove(samplePhrase,Prefs->samplePhrase,23);
  60.         SetPt(&(Prefs->windowPosition),10,50);
  61.         bytesWritten = sizeof(struct prefStuff);
  62.         FSWrite(fRefNum,&bytesWritten,Prefs);
  63.         FSClose(fRefNum);
  64.         if (bytesWritten != sizeof(struct prefStuff))
  65.             return(-1);
  66.     }
  67.     return(0);
  68. }
  69.  
  70. void SetSamplePhrase()
  71. {
  72.     DialogPtr            SamplePhraseDlg;
  73.     Handle                hEditText;
  74.     Str255                newSamplePhrase = "\p";
  75.     short                itemHit = -1;
  76.     FMStuff                *FMStore;
  77.  
  78.     gInBackground = TRUE;
  79.     DoActivateMainWindow();
  80.     SamplePhraseDlg = GetNewDialog(rSetSamplePhrase,0,(WindowPtr) -1L);
  81.     SetDialogDefaultItem(SamplePhraseDlg,ok);
  82.     SetDialogCancelItem(SamplePhraseDlg,cancel);
  83.     SetDialogTracksCursor(SamplePhraseDlg,1);
  84.     GetDItemHandle(iEditTextItem, SamplePhraseDlg, &hEditText);
  85.     SetIText(hEditText,gSamplePhrase);
  86.     SelIText(SamplePhraseDlg,iEditTextItem,0,32767);
  87.     while (itemHit != cancel && itemHit !=ok) {
  88.         ModalDialog(0,&itemHit);
  89.         if (itemHit == ok) {
  90.             GetIText(hEditText,newSamplePhrase);
  91.             BlockMove(newSamplePhrase,gSamplePhrase,newSamplePhrase[0] + 1);
  92.         }
  93.     }
  94.     DisposeDialog(SamplePhraseDlg);
  95.     gInBackground = FALSE;
  96.     DoActivateMainWindow();
  97.     FMStore = (FMStuff *) GetWRefCon(gMainWindow);
  98.     UpdateSampleRect(FMStore);
  99. }
  100.  
  101. void GetDItemHandle(short iDialogItem, DialogPtr theDlg, Handle *itemHandle)
  102. {
  103.     short    iType;
  104.     Rect    iRect;
  105.     
  106.     GetDItem(theDlg,iDialogItem,&iType,itemHandle,&iRect);
  107.     
  108. }