home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / compress / misc / ppdata1.0 / source.lha / src / prefs.c < prev    next >
C/C++ Source or Header  |  1995-01-18  |  2KB  |  98 lines

  1. /*
  2. *    prefs.c
  3. *
  4. *    Routines for loading and saving ppdata preferences.
  5. *
  6. *    MWS 3/92.
  7. */
  8.  
  9. #include <exec/types.h>
  10. #include <intuition/intuition.h>
  11. #include <libraries/dos.h>
  12. #include <libraries/ppbase.h>
  13. #include <proto/dos.h>
  14. #include <proto/intuition.h>
  15.  
  16. #define PREFS_C
  17. #include "prefs.h"
  18. #include "display.h"
  19. #include "messages.h"
  20.  
  21. static void UpdateMenus(void);    /* prototype */
  22. struct PPDataPrefs prefs;    /* this is global variable containing prefs */
  23.  
  24.  
  25. static void UpdateMenus()    /* update menus to reflect preferences */
  26. {
  27.     struct MenuItem *item;
  28.  
  29.     item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, COLOR, prefs.color));
  30.     item->Flags |= CHECKED;
  31.  
  32.     item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, EFFICIENCY, prefs.efficiency));
  33.     item->Flags |= CHECKED;
  34.  
  35.     item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, SPEEDUP, prefs.speedup));
  36.     item->Flags |= CHECKED;
  37.  
  38.     item = ItemAddress(mainmenu, FULLMENUNUM(CONTROL, prefs.control, 0));
  39.     item->Flags |= CHECKED;
  40.  
  41.     if (prefs.suffix)
  42.     {
  43.         item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, SUFFIX, 0));
  44.         item->Flags |= CHECKED;
  45.     }
  46.     if (prefs.overwrite)
  47.     {
  48.         item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, OVERWRITE, 0));
  49.         item->Flags |= CHECKED;
  50.     }
  51. }
  52.  
  53.  
  54. void LoadPrefs()    /* try to load prefs; if failure, use defaults */
  55. {            /* update menus to reflect preferences */
  56.  
  57.     BPTR prefshandle;
  58.     BOOL usedefaults = FALSE;
  59.  
  60.     if (prefshandle = Open(PREFS_NAME, MODE_OLDFILE))
  61.     {
  62.         if (Read(prefshandle, &prefs, PREFS_SIZE) != PREFS_SIZE)
  63.         {
  64.             Message("Error in preference file " PREFS_NAME "\nUsing defaults");
  65.             usedefaults = TRUE;    /* invalid preference file */
  66.         }
  67.         Close(prefshandle);
  68.     }
  69.     else usedefaults = TRUE;
  70.  
  71.     if (usedefaults)    /* no prefs file or I/O error */
  72.     {
  73.         prefs.color = DECR_POINTER;
  74.         prefs.efficiency = CRUN_GOOD;
  75.         prefs.speedup = SPEEDUP_BUFFMEDIUM;
  76.         prefs.suffix = 0L;
  77.         prefs.overwrite = 1L;
  78.         prefs.control = QUERY;
  79.     }
  80.  
  81.     UpdateMenus();
  82. }
  83.  
  84.  
  85. void SavePrefs()    /* save current preferences; returns TRUE on success */
  86. {
  87.     BPTR prefshandle;
  88.  
  89.     if (prefshandle = Open(PREFS_NAME, MODE_NEWFILE))
  90.     {
  91.         if (Write(prefshandle, &prefs, PREFS_SIZE) != PREFS_SIZE)
  92.             Message("Can't write to file " PREFS_NAME);
  93.         Close(prefshandle);
  94.     }
  95.     else Message("Can't open file " PREFS_NAME);
  96. }
  97.  
  98.