It is frequently useful for applications to store information between runs. In general, if it is important enough to ask the user, it is important enough to remember. IDL provides a handy routine `APP_USER_DIR` to get a directory to store this type of information, but you are on your own reading and writing these preferences (unfortunately, `PREF_SET` and `PREF_GET` don't allow application defined or user-defined preferences). `MG_Prefs` ([code](http://michaelgalloy.com/lib/dist_tools/mg_prefs__define.pro), [docs](http://michaelgalloy.com/lib/dist_tools/mg_prefs__define.html)) handles the dirty work for you by creating and restoring a SAV file for each of your preferences. This is a bit heavy-handed, but it means you store nearly anything as a preference value.

The class is intended to be simple to use. To store a preference do

prefs = obj_new('mg_prefs', author='mgalloy', application='myapp')
prefs->set, 'last_edited', 'myfile.txt'

Then in a later IDL session this preference can be retrieved with

prefs = obj_new('mg_prefs', author='mgalloy', application='myapp')
lastEdited = prefs->get('last_edited')