/* * prefs.c * * Routines for loading and saving ppdata preferences. * * MWS 3/92. */ #include #include #include #include #include #include #define PREFS_C #include "prefs.h" #include "display.h" #include "messages.h" static void UpdateMenus(void); /* prototype */ struct PPDataPrefs prefs; /* this is global variable containing prefs */ static void UpdateMenus() /* update menus to reflect preferences */ { struct MenuItem *item; item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, COLOR, prefs.color)); item->Flags |= CHECKED; item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, EFFICIENCY, prefs.efficiency)); item->Flags |= CHECKED; item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, SPEEDUP, prefs.speedup)); item->Flags |= CHECKED; item = ItemAddress(mainmenu, FULLMENUNUM(CONTROL, prefs.control, 0)); item->Flags |= CHECKED; if (prefs.suffix) { item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, SUFFIX, 0)); item->Flags |= CHECKED; } if (prefs.overwrite) { item = ItemAddress(mainmenu, FULLMENUNUM(PREFS, OVERWRITE, 0)); item->Flags |= CHECKED; } } void LoadPrefs() /* try to load prefs; if failure, use defaults */ { /* update menus to reflect preferences */ BPTR prefshandle; BOOL usedefaults = FALSE; if (prefshandle = Open(PREFS_NAME, MODE_OLDFILE)) { if (Read(prefshandle, &prefs, PREFS_SIZE) != PREFS_SIZE) { Message("Error in preference file " PREFS_NAME "\nUsing defaults"); usedefaults = TRUE; /* invalid preference file */ } Close(prefshandle); } else usedefaults = TRUE; if (usedefaults) /* no prefs file or I/O error */ { prefs.color = DECR_POINTER; prefs.efficiency = CRUN_GOOD; prefs.speedup = SPEEDUP_BUFFMEDIUM; prefs.suffix = 0L; prefs.overwrite = 1L; prefs.control = QUERY; } UpdateMenus(); } void SavePrefs() /* save current preferences; returns TRUE on success */ { BPTR prefshandle; if (prefshandle = Open(PREFS_NAME, MODE_NEWFILE)) { if (Write(prefshandle, &prefs, PREFS_SIZE) != PREFS_SIZE) Message("Can't write to file " PREFS_NAME); Close(prefshandle); } else Message("Can't open file " PREFS_NAME); }