After taking the charmgr as far as I could with PyGTK, I've decided to port it over to the Eclipse RCP. Whatever its failings, I love the frameworks and architecture, and expertise in Eclipse is marketable. The philosophy is about 180 degrees from Python (I've read many posts lauding Python's lack of rigid frameworks), but being from Java, the RCP is my comfort zone.
Porting the UI was trivial using the Visual Editor (though not nearly as simple as Glade):
I used Derby as a replacement for SQLite, and after populating the Spell tree using straight SQL, I thought I'd look into Hibernate for data access. The Hibernate framework hides the SQL from the code, provides a lot of connection management functionality, and has the added benefit of generating most of the boilerplate DAO code. Unfortunately I ran into an access problem when trying to initialize Hibernate from the RCP:
private Object getInput() {
logger.debug("getInput()");
HibernateUtil.currentSession();
Basically get a ClassNotFoundException on Session. This solved by creating a
plugin from the jar and registering it in the MANIFEST.MF.
After flopping around for a bit, I violated good practice and copied the
hibernate.cfg.xml file to the root of the org.hibernate plugin. This solved the problem for the short term. I then moved all the dependent jars to their rightful place in the hibernate plugin and as well the creating an org.apache.logging plugin for those libs (so both hibernate and charmgr can access the logging). I cheated again by copying the
log4j.xml to the logging plugin to resolve that little classpath issue.
So my current workspace looks like this:
and the main view is now functional: