(Since you asked for feedback...)
I'm not a fan of this at all! Autogenerated and automatic preferences
are a pretty classic user-interface mistake, though a common one. It
leads to an incoherent dialog, a bad set of preferences, and poorly
thought out dialogs. It interacts badly when you have conflicting
preferences, doesn't give you a way to give good feedback, and
invariably grows complicated beyond bool/int as you hit special cases.
It's occasionally okay to do if you have a complicated plug-in system,
and patient users, but if you can at all avoid it, please do so!
It's not too hard to mock out the preferences in glade and hook them up
-- especially if you're going for such a simple commit model. It also
forces you to think about which preferences are important to include,
and which ones aren't needed, or could be done in a better way.
Rather than write a system to handle preferences, it's better to figure
out what those preferences should be, and try to do a reasonable effort
based on that.
Thanks,
-Jonathan