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

It should be written like this:

[Desktop Entry]
Name=Stencil Family Name
X-KDE-DirType=odg-collection

Translators will care about i18n task, please use English language.

stencil_name.odg

We strongly recommand you use Karbon for the stencils creation to ganrantee compatibility, but considering Karbon is not ready for professional production, you can use your favourite svg drawing applications 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).

Group all of them.
Rename the group.

Done. Now make icon file and information file.

stencil_name.png

Icon of the stencil to shown in stencil box docker, we're planning to make an icon generator for stencil designers.

stencil_name.desktop

It should be written like this:

[Desktop Entry]
Name=Stencil Name

Stencil name should be in English, translators will handle i18n task. If you want additional arguments supported by Flow, append related entry in the file, currently we only support keep stencils aspect ratio while resizing:

CS-KeepAspectRatio=1

Publish your stencils

After you finished your stencil collection, you can upload it to share with others, this part is unfinished.