English


So, having a good idea of what information should be collected from a source code and how to drawn it, a tool could be implemented. My thoughts on the tool started at the point of how the text and the graphics should collaborate with each other. One of the options was to support graphics only and I rejected this idea. I am sure that depending on the situation a text could be a better representation while in other cases graphics would be. So I wanted a tool which does support both ways and does not sacrifice any of them. In a typical IDE a text editor occupies the main area so now this area is going to be equally divided between the text and the graphics.

Before starting a new project, I looked at the available open source IDEs with an intention to develop a plugin for them which supports the graphics. Unfortunately nothing suitable was found. This is why I started a new experimental open source project which I called Codimension. Codimension did not start from an absolute scratch. I used another Python IDE called Eric 4 as a source of ideas and some code for Codimension.

At the moment Codimension implements an automatic drawing of flowchart diagram for the Python code. A pause in typing code is detected and the diagram is automatically re-drawn on the right hand side. If the code becomes broken at some stage, the diagram is simply not updated and an indicator on the top tells about the current state. I also implemented a feature of showing a navigation-like path for a scope under the mouse cursor. A double click on the diagram is also supported: the focus is passed to the text editor part and the corresponding line is set as the current one. The opposite way of synchronizing the views is supported via a hot key combination. When the user invokes it the IDE detects what graphics primitive corresponds to the current line in the editor and scrolls the graphics view appropriately. The last few implemented graphics features are zooming and exporting to an SVG, a PDF and a PNG. Obviously, I mention here not all the IDE features and more to come!