Announcing a new sub-project in gnucash: GUI in C++, Qt, CMake.

Phil Longstaff plongstaff at rogers.com
Fri Mar 5 08:42:07 EST 2010


On Thu, 2010-03-04 at 21:34 +0100, Christian Stimming wrote:
> I'd like to explain my recent experiments with C++ and cmake: I was tired of 
> the amount of code one has to write in the C language to achieve seemingly 
> trivial tasks. In my day-time projects with other, more GUI-suited, 
> programming languages, the simple tasks can be written sooo much simpler, 
> leaving much more time for the actual challenging tasks. In gnucash, over and 
> over again I thought couldn't the GUI be written in any of the more modern 
> languages and/or toolkits. I mean, can we get the fun into gnucash coding 
> again?
> 
> Actually, we can.
> 
> Announcing a new sub-project in gnucash: The non-GUI parts are re-used in the 
> state they are, in the C language. This means the double-entry principles and 
> all of the other achievments in the "engine" and xml-backend and eventually 
> other backends can be re-used. But the GUI is rewritten completely new, from 
> scratch, in C++ and using the Qt toolkit. Fun again. The build system is CMake 
> because its configuration runs magnitudes faster. Fun again. And as a final 
> bonus, for MS windows more compiler than before are supported, namely this 
> whole new project can be compiled by MS Visual Studio as well. So here it is:
> 
>   Cutecash
>   Free Finance Software. Easy to develop, easy to use.
> 


> Currently this is only a proof-of-concept for developers: You can load an 
> existing gnucash XML file, and it will show the list of accounts as a flat 
> table in a QTableView. The fun part is how easy it was to add this display of 
> all accounts, so it will probably take only another 1-2 hours until the 
> account list is a tree to be viewed in a QTreeView. And a QTableView with the 
> splits of an account can't be far...
> 
> To give this a try, have qt4 (>=4.5.0) and cmake (>= 2.6.0) installed and:
> 
>   mkdir build-cutecash
>   cd build-cutecash
>   cmake ..
>   make
>   ./src/gnc/cutecash
> 
> Have fun (again)!

It doesn't seem able to read any of my XML files.  Oh well.

While this may be/is guaranteed to restart the various language wars
(can we do this in Visual Basic, please :)), I think it's a great idea -
use the best tools available for different parts of the code.

Someone (John Ralls?) asked why we would keep the core in C.  Wx vs Qt
came up.

I'd like to see discussion of why different technologies would be used
for various parts of the system.  What features does the engine need?
Why C++ for the UI?  Would we do better with a language using garbage
collection so that we don't need to worry about memory?  How would this
coincide with rewriting Gnucash/Cutecash as a database app?

I would also like to suggest that work on this take a back seat to
getting 2.4 out the door.  Boring, yes, but there are lots of bugs in
bugzilla.  Can we go through and identify which ones we would like fixed
by 2.4?

Phil



More information about the gnucash-devel mailing list