Calligra/Build Stencils for Flow

From KDE Community Wiki

It is very easy to create stencil collections for Flow.

Structure

In Flow, stencils are shape items listed on Stencil Box docker, they are written in openDocument graphic format(.odg). In Flow default stencils are placed at /usr/share/apps/flow/stencils/, user added stencils are usually at directory like ~/.kde4/share/apps/flow/stencils/. Each subdirectory represents one stencil family, under such a directory there is a config file (collection.desktop) to indicate the family name. One stencil consists of 3 files, [stencil_name].odg contains the data of the stencil, [stencil_name].png is the icon shown in stencil box docker, [stencil_name].desktop contains the naming information and additional arguments to the stencil.

collection.desktop

This is a desktop entry file claiming the family name of the stencils under the deirctory, directory without the file won't be read by Stencil Box docker, you can refer to the examples in source code(flow/stencils) to write your own one.

Create stencils file

We strongly recommand you use Karbon for the stencils creation to ganrantee compatibility, but consider Karbon is not ready for professional production, you can use your favourite svg drawing application like inkscape to draw the stencils and import them to Karbon.

Import SVG file.
Choose text shape.

After svg files imported, you need to place a text shape on the stencil to provide stencil labels, usually it should be as big as the bounding box to your stencil, unless you need customized label positions or multi labels.

Draw a text shape on top.

Now group your stencil and the label(make sure the label is placed on top), rename the group name to the name of stencil in English language, translators will translate them into local languages with the help of simple perl scripts in source code.

Group all of them.
Rename the group.

Publish your stencils

After you finished your stencil collection, you can upload it to the Flow stencil library website, currently we need volunteers to help with the site.