I’ve been doing some more thinking further to my previous post about changing DONATION to run not as an Administrator. In that post, I said that all of the settings that are currently stored in the Registry (in a place that can only be written by programs running as an Administrator) would move to a settings file in the new data directory for the program, which would be under the All Users Document folder, e.g. places like C:UsersPublicDocumentsCooperstock SoftwareDonation, in Windows Vista or Windows 7.
My further thinking is that there are actually 3 different levels of setting that I’d like to store:
- Overall settings for the whole program, e.g. for things like the location of the database file and the current database filename if you are using Database -> Switch Databases.
- Per-database settings, like which donor and donation fields to display (which may be different if you have multiple databases, perhaps one for a church, and one not for a church). These settings will come with you if you backup the database and restore it on another computer, unlike the other two levels of settings.
- Per-user on that computer settings, like the user’s desired location and size for the program’s main window. (I know that it will be fairly rare for multiple users to be logging in to the same computer and all using DONATION, but it’s certainly possible.)
So, my plan is to have three places to store those things – an INI settings file in the new data directory, for the overall settings; a new hidden SETTINGS table in each database for the per-database settings; and the HKEY_CURRENT_USER area in the Windows Registry (which can be written by non-Administrators!) for the per-user settings.
Does that make sense so far? I will have some detailed documentation in the program of which settings are stored at which level, for those who are really interested.
Further, I’d like to run by you which specific settings I plan to put at which levels, to see whether any of you have counter-arguments for any of them. Here’s what I’m thinking. (You will note that some of these are settings that correspond to obvious things in the program, and others are things you may not have been aware I was storing anywhere.)
- Location and name (probably just the extension, since it MUST be named donation4.something) of the current database file.
- Other database connection properties, like whether it’s a Standalone, Network Client or Network Server install.
- Most of the settings from Maintenance -> Email Sending Configuration, except the From Name and From Email which may vary per database.
- The contents of the mail-merge letter and receipt templates will be consistent across all databases (though you may choose to develop separate letters for separate databases). They will be stored in a Letters directory under the new data directory.
- The list of databases you have in Database -> Switch Databases, if you use it. (It’s currently in a file databases.txt in the DONATION installation directory. That file will move to the new data directory.)
- Whether or not you wish to be reminded monthly to check for updates to the program, and if so, the last date on which that check was done.
- Your registration information, if you have used Help -> Register by Email. (Yes, you might have multiple databases/organizations, but from my standpoint if you are doing that from one computer, you should only have one registration record. You can put inform me separately of your additional organization names, or I will pick that up from your license key requests.)
- The size of mailing label you use, and print margins for them if you change those margins.
- The last folder you stored PDF files in.
- The current version number of the program.
- The three optional passwords (Program Entry, Receipting, and Limited User). These are actually already stored in each database.
- All settings from Maintenance -> Organization Info are already stored in each database.
- All settings from Maintenance -> Receipt Options, including the Receipt Style For (e.g. Canada, USA, Quebec etc.). Believe it or not, I actually have at least two users with one database/organization in Canada, and another in the USA, so each database has to have its own settings for this. While some receipt options (like Location Issued) are probably really overall settings, I think it will be clearer for the users to leave them all as being per-database.
- All settings from Maintenance -> Main Window Options. Again, if you have multiple databases, the way you store the data in each, and which Donor or Donation fields you want to see etc., may vary per database.
- The From Name and From Email settings from Maintenance -> Email Sending Configuration.
- Memorized settings from the Letters menu windows (like which type of letter you are currently using, its filename, etc.).
- Memorized settings from Importing windows, like Database -> Import Donors and Database ->Import Donations, for which fields to import etc.
- The last date on which you did a database backup, and location to which you did it, plus your desired backup reminder frequency.
- The name and email address you send email backups to, if you use that feature.
- Whether envelope printing should include your organization address and logo. (You might have pre-printed envelopes for one organization, but not for another.)
- There will have to be a per-database place to store any bitmap files you use for the logo and signature for receipts. (This will be tricky for me to make the receipts use them in different locations – have to think on that!)
- The settings for One Date Batch Entry (e.g. which fields to show, and whether to include existing donations).
- The Subject and Body of the email to which the PDF receipts are attached if you use the option to email receipts.
- Various menu options, like the Letters menu options, prompt you to read the Help on the relevant topics when you use those options for the first time. Whether or not you have used those options for the first time will be stored per-user, since each user will use them once for the first time!
- The size and location of various windows in the program that are resizable and movable, which the program stores. (For instance, the main window, the Batch Entry window, and the Mail Merge editor window.) Each user might have their own preference about this.
Whew, that’s a lot of settings!
As usual, if you do have any comments, please Reply to this blog post, so we can all see them. Even if you just think this is all fine, a quick reply on the blog, or just by email, would really be appreciated, so I at least know some people have thought about this with me! Thanks.