Re: [gtkmm] Gtkmm or Qt?



Roger Leigh wrote:
Ruediger Sonderfeld <cplusplushelp gmx net> writes:


I don't know QtDesigner. But I think Glade isn't really usefull because writing the code
is sepperated from the design process.

First you have to design the GUI and than you can write your Code in the Code generated by Glade.
If you have to change the GUI you have a problem because you must regenerate the
code and then merge your code into the code generated by glade

(or I never realised how to use glade a better way)


Use libglademm to load the Glade interface at run-time.  This way you
have complete separation between the UI design and implementation
(Glade is not used to generate *any* code).


I agree. We use glade to develop the user interface, Anjuta/vi to develop the source code (Gtkmm/libglademm/C++), ddd to debug, mysql for database access, cvs to manage the source, Open Office to write documentation, MrProject for tracking the schedule, and Linux workstations to avoid the latest virus-de-jour.

And most important of all, we use our BRAIN to design and write programs. Don't let the tools you use to program get in the way of your brain:

1. I didn't like the code that Glade put out. Solution: use libglademm to process the glade/xml file.

2. I think the Anjuta integrated debugger is flaky.  Solution: use ddd.

3. Anjuta did not have a way to build multiple executables in the same project. Solution: Set Anjuta to not update the Makefile.am, and modify it manually.

4. The people outside my office talk to loud and distract me from writing software. Solution: Close the door.

5. Something causes me to not be productive in producing software. Solution: fix the problem if I have control over what's causing it, or find an acceptable work-around.

This fits with the 'UNIX' way of doing things. Use simple tools to do simple and focused tasks, and then combine the tools together to do something more complex than you can ever do with a single tool. If you don't agree with this concept, then you should invest your time and money in Visual Studio .NET.

We currently have 23 glade files that contain the XML for specific parts of the user interface (it's a niche database application with lots of data). A C++ class (.h/.cc) is associated to the glade file by having the same name. When objects of this class are created, the XML file is read, and the widgets are tied to their callbacks. A separate class manages access to the database. The two classes 'work' together through the magic of C++ inheritance. The database class is the base class and can (and is) used by multiple window classes that present/manipulate the data in different ways). It's not rocket science, but it can be complicated, and the C++ inheritance mechanism helps us manage the complexity. Blah, blah, blah, blah.

I could go on and on about how great our development environment is. We used to developed software using MS-VB-MSSQL-ACCESS-CrystalReports- SourceSafe-DailyReboots-RandomIllegalOps and it was terrible.

I have also personally developed software using UNIX/Ada/Rational/ISO9000/6-Sigma/SEI-III and it was good, but not as good as what I'm doing today.

The single most important decision that we have made to date is to develop on Linux. Our development server is used by 2 full-time and 2 part-time programmers and currently has been up for 118 days. We started the project about 115 days ago. Our production server (running a character based internal application) has been up for 381 days. The only people saying 'Wow!' and 'No Way!' right now have never used Linux before. (The rest of you are lookin' at your uptimes to see if you can beat mine). We have around 8000 lines of XML and around 15000 lines of C++ ... and growing.

Now, back to designing and writing code.

Regards,

Jeffrey S. Gavin

P.S. I am not a C++/UNIX expert, I just pretend to be one when I'm not playing DAOC.

I wrote a short tutorial on this
(<URL:http://www.whinlatter.uklinux.net/gtk/ogcalc-1.0.1.tar.bz2>).
I'm sure there are much better documents around, though!


Regards,
Roger






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]