Sunday, November 29, 2009

SBOL Visual

SBOL Visual in TinkerCell. Although not exactly a replica of the original, it is close. I don't have an SVG import in TinkerCell yet, but all of these are vector graphics (drawn using TinkerCell's drawing program).

Friday, November 27, 2009


Having a high-quality plotting tool is necessary for TinkerCell, so gnuplot seemed like the right choice. gnuplot has a scripting interface and can provide a large variety of graphs. The GnuplotTool plugin generates script files and pipes them into the gnuplot executable. So, the only work that is done is generating the scripts. The plugin also provides a scripting window where users can plot more advanced plots (anything allowed by gnuplot).

GnuplotTool and the default (old) Plot Tool provide the same functionality. When one has been loaded, the other cannot load. So, the one that loads first wins (this depends on which plugin was created first). Disabling one of these plugins from the settings menu would be ideal way to choose one of them.

The right picture above is from TinkerCell. The left picture shows some demo plots using gnuplot (not done in TinkerCell...yet).

Wednesday, November 25, 2009

Small change to ConsoleWindow class

Some changes in the Core library:

The ConsoleWindow was a static item, allowing calls such as:

ConsoleWindow::error("parse error");

ConsoleWindow is no longer static. It belongs with MainWindow. So, the above calls are replaced with:

if (console())
console()->error("parse error");

The console() function exists in MainWindow, Tool, GraphicsScene, NetworkWindow, and TextEditor. All of these functions call MainWindow's console() function, so they return the same pointer. However, if there are two MainWindow instances, then each will contain a different case that some day there is some need to create two main windows.

Additionally, a new function, "eval", has been added, which current can be used to evaluate a Python expression because the Python plugin controls the console at the present.

console()->eval("print 1+2");