2020-05-05
#Luciole v2 overview
Luciole v2 is a set of libraries and utilities for quickly build GUI’s (Graphical User Interface) for reactive synchronous programs. It targets in particular Lustre programs, but can it can handle other reactive programs encapsulated into DRO libraries (Dynamic-Loaded Reactive Object).
This section quickly presents the similarities and differences with the previous version of luciole. If you are not familiar with the previous version, you can skip this part.
.dro
files), present since version 1.7,.ec file), which is the
historical supported format..ec or .dro (new) from lustre v4 and lustre v6
(new) programs.Aside these similarities, the core of the tool has been completely remade. In particular, luciole v2 is almost entirely developed in pure tcltk, while v1 was mostly developed in c++. It makes the portability of the tool much simpler, since it only requires a standard install of tcltk.
simec no longer exists (but the
luciole script provides the same functionality)..iop (input/output panel) format is abandoned. It
was used to customize gui layouts, and is replaced by a tcltk library
(luc) that provides a similar programming style.Luciole is based on tcltk 8.6, and is made of several components:
ptk,
that provides the bricks for building reactive gui’s and link then to
reactive program.luc package. Each .luc file implements a
particular gui for a particular reactive programs. They can be written
by hand, or (transparently) generated by luciole.For a basic usage, the knowledge the luciole script is
sufficient, in particular it does not require to manipulate a
.luc script. The command-line arguments and the
functionalities are the same as the previous luciole command version
luciole foo.dro builds and run a default gui for
running the reactive program foo.dro. The program
inputs/outputs are implemented as graphical widgets (buttons, sliders,
labels etc.), and displayed in a default 2-columns layout. The default
gui is similar to the one of the previous version of luciole
(for those who are familiar with).For advanced usage, knowledge on luciole components is necessary. Some knowlege on tcl programming is indeed also necessary.
Each component is explained in details in the sequel. Here is a list of typical needs, together with the sections to look for:
Adding features to the default gui: see luciolerc.tcl, in default reactive gui.
Customizing the default in/out layout: some
knowledge on the luc package is necessary, more precisely
the luc panel description section.
Slightly/Completely modify the default gui: if
possible, you can partly rely the luc library; for really
specific need you will have to program directly at the ptk
level for the graphical part, and the lustubs.so level for
executing reactive programs. In this case, a good level in tcl
programming is mandatory.
Ptk is a library to ease the programming of GUI’s with tcltk. It is used by, but not specific to luciole.
See Ptk manual for details.