Implemented Tabbed Document Interface(TDI) in drgeo.

New tabs are created on ‘New’ menu item click.

And the tabs are ciosed on selecting ‘Close’ menu item.

I can also add close button, i.e cross to close tab, to every tab but I think I’ll move on to creating entites and moving on to kernel part of the software.


Working on implementing Tabbed Document Interface in GTK. Done with a single tab in a notebook widget.

I’ll commit the changes by tomorrow afternoon regarding TDI along with adding and removing the tabs.

Also I may add drawing area to it.


It was almost a done deal to use Qt for the development of Dr. Geo till it was pointed out that only GTK+ is considered the standard for GNU.

I made a great progress with Qt in just a single day, had implemented Tabbed Document Interface and even point entity was done along with its mouse events.

But I guess that wasn’t meant to be. Now I am back to GTK+.

So continuing my previous work I have started using ui (glade) files to create widgets like mainwindow, menubar, etc. to help in quicker development.

I also changed the directory structure which will help in implementing the modular approach like I proposed.


I have implemented mouse events for DrawingArea but these events are enabled by default.

I want to enable them on particular function call, for example when I click Point menu item from Draw menu. So that I can draw points on the drawing area when I click on the widget.

The whole process is extremely difficult to work with. It is quite easy and effective in Qt, maybe that’s because I have some experience with Qt development. I could have progressed much further than I currently am.


My progress is little slow but steady nonetheless.

I read up on the ‘surface’ concept for the Cairo::Context.

“A cairo surface represents an image, either as the destination of a drawing operation or as source when drawing onto another surface.

There are different subtypes of cairo surface for different drawing backends.”

So, now I am working on that to draw entities in my Gtk::DrawingArea.


Currently I am looking into the concept of Cairo::Context on which the entities will be drawn.

Right now there is a single on_draw function that is called automatically when the Drawing widget is initialized.

I want this context to be created and a white background to be shown, it is proving difficult to draw something else from another function in that same context.

Basically I want to create different entities from different button callbacks. So I am looking to achieve that in either a same context or different context, though the latter is very unlikely scenario.


Still working on drawing entities to the drawingArea widget.

I’m trying not to add everything in a single file but to have separate files for different entities as well as their intended functionalities.

This would ensure better code readability as well as make it extensible and easily modifiable in the future.