Generators

Generators are sub classes of

class boxes.Boxes[source]

Main class – Generator should sub class this

Most code is directly in this class. Sub class are supposed to over write the .__init__() and .render() method.

The Boxes class keeps a cairo canvas object (self.ctx) that all drawing is made on. In addition it keeps a couple of global settings used for various drawing operations. See the .__init__() method for the details.

For implementing a new generator forking an existing one or using the boxes/generators/_template.py is probably easier than starting from scratch.

Many methods and attributes are for use of the sub classes. These methods are the interface for the user interfaces to interact with the generators:

Boxes.__init__()[source]

Initialize self. See help(type(self)) for accurate signature.

Boxes.parseArgs(args=None)[source]

Parse command line parameters

Parameters

args – (Default value = None) parameters, None for using sys.argv

Boxes.render()[source]

Implement this method in your sub class.

You will typically need to call .parseArgs() before calling this one

Boxes.open()[source]

Prepare for rendering

Create canvas and edge and other objects Call this before .render()

Boxes.close()[source]

Finish rendering

Flush canvas to disk and convert output to requested format if needed. Call after .render()

Handling Generators

To handle the generators there is code in the boxes.generators package.

class boxes.generators.UIGroup(name, title=None, description='')[source]
add(box)[source]
boxes.generators.getAllBoxGenerators()[source]
boxes.generators.getAllGeneratorModules()[source]

This adds generators to the user interfaces automatically. For this to work it is important that the class names are unique. So whenever you start a new generator please change the class name right away.