Looking through the code I printed, everything looked pretty good. The code looked quite clean despite the massive surgery, and I couldn’t find any obvious bugs or changes to make. That was quite reassuring, and again puts me on the right track. The Organize code for keeping track of the GEDCOM files now works.
However, there is something that I now need to do. If a GEDCOM is deleted, but not Apply’d, then because I am using non-modal windows, you don’t have to finish with the Organize dialog before switching to other windows. The data is not updated until the Apply button is pressed, so if you switch to the Name Index window, it will still contains names from that deleted GEDCOM. An attempt to select a name to add the Family in a deleted GEDCOM should not be allowed.
This is not difficult to implement, but the problem here is how to present this to the user in the best way possible. User interface questions are key to an easy-to-use program, and deciding the best way is often a very difficult decision. If its not done right the first time, it will become more and more difficult to change it in the future once it gets used and accepted by the users, who don’t like the interface to change after they’ve been using it.
In this case, if a name from a deleted GEDCOM is selected, I can either: (1) Issue a message box stating the problem and maybe asking if the deleted GEDCOM should be re-added. (2) Not allow any name selection in the Name Index if any GEDCOM has been deleted but not Apply’d, or (3) Indicate in some way in the Name Index the names from the GEDCOMs that have been deleted so that the user will know not to select them.
Which do you like best? To me, number 1 is problematic in writing an easy to understand error message box that tells the user what has happened and clearly states his options of what to do, which in this case, I don’t think I can get to under 100 words. Number 2 will be confusing in that the user will wonder why the name cannot be selected. I think Number 3 is best, since it visually indicates something different about those entries to the user. Why does it always seem that the most complicated programming solution is always the best.