That sounds like a good idea to me, and I just added an Advanced tab to the preferences with a lot of empty room. I will almost certainly implement 'Replace To' and 'Replace From' in some form in 0.3.
Background/current status:Currently, "Resetting" an address book just removes all contacts and mailing lists from it and sets the last synchronized date to 0. The next time you sync everything should be pulled back from Google. However, if the address book is in write-only mode then nothing will happen.
Since it removes mail lists, you
must restart Thunderbird after a reset or there is some strange behavior, especially if you create a new address book (phantom mailing lists and even contacts can appear and sometimes stick). The problem is that sort of limits the ability to 'Replace From Server'. Basically, any operation with mailing lists can result in strange behavior if you don't restart Thunderbird first. If you fail to do so the results can stick even after a restart.
I realize that a reset is very unclear, especially in 0.2. 0.3 will currently show the following when you try to reset an address book:
Resetting an address book will permanently remove all contacts and mailing lists from that address book, but will not remove your synchronization settings for that address book. Contacts and groups will be pulled from Google back into the address book during the next synchronization.
Click OK to reset the address book or Cancel to stop.
Visit the forum if you have any questions.
Replace To ServerThis can be implemented with relatively little effort on my part. It would basically:
1. Delete everything from the server
2. Remove the GoogleID from every contact in the directory*
3. Remove the GoogleID from every mailing list in the directory*
4. Synchronize
*Steps 2 and 3 could probably be avoided by adding some flag (maybe set ReplaceToMode = true on the AB). TBContact could return a blank string for the GoogleID if that mode is on, and mailing lists could do something similar.
No restart should be required since no mailing lists are removed. However, for now I'd like to only allow synchronizing from the address book window (0.4 should fix this) so the changes will only be applied during the next manual or scheduled sync.
Replace From ServerThis is essentially what a reset does right now, but gContactSync requires a restart and sync before everything is re-downloaded.
Slow/Full SyncThis sounds almost like what gContactSync does. gContactSync checks the last modified date of every contact in the address book and Google account. This date is compared to the last sync date of the address book. If one or both is newer then, depending on the preference, one will get replaced with the other (by replaced that means all synchronized attributes are replaced, any non-synchronized data is not touched).
There are a few last modified date bugs in Thunderbird but I fix them within gContactSync by adding a listener (tells me when something is added, changed, or removed) and replacing the drag-and-drop method.