This week i have completed the GPG key selection in Evolution, using the Seahorse cryptui and its DBus APIs. And I have added a new GPG key frame to the Security tab in account editor. Of course, it is implemented through EPlugin! Following is the snapshot:
snapshot1:adding a new GPG Key frame using EPlugin, replacing the Entry with a ComboBox.

snapshot2: you can select your GPG key from the combobox now:)

Besides, if you are brave enough, you can try it now:
1.svn co svn://www.cipsc.org.cn/seahorse-key seahorse-key
2.mv seahorse-key /path/to/trunk/evolution/plugins/seahorse-key
3.patch the configure.in (using configure.in.diff in seahorse-key) and ./autogen.sh --prefix=/usr && make && make install
4.enjoy it!
Requirements:
a.Seahorse installed.(http://live.gnome.org/Seahorse)
b.Evolution trunk from svn repos( http://svn.gnome.org/svn/evolution/trunk)
c.GNU Autotools
However there are some questions:
1. How to restore the key been selected when restart the Evolution?
Apparently , this info should be stored within the account, but the EAccount structure provides no fields for this. Now i store it in a GHashTable (key is the account->address), this is very ugly.
Worse more, the hashtable will be destroyed and initialized again when the Evolution application restarts, should i write the hashtable to a file? and reload it when the Evolution restarts?
neither is a good way, IMO.
2.How to hide the original GPG Key frame through the EPlugin?
please give me some good pointers if you know that,
.
Happy Hacking!