diff --git a/doc/docbook/d0/d09/main_8c.xml b/doc/docbook/d0/d09/main_8c.xml
index 429232c..b398869 100644
--- a/doc/docbook/d0/d09/main_8c.xml
+++ b/doc/docbook/d0/d09/main_8c.xml
@@ -19,9 +19,11 @@
Gem-graph-client main file.
-This file is part of Gem-graph. It contains only the main function.
+This file is part of Gem-graph. It contains only the main function. The function main() initialises the log, the finite state machine (fsm), the application and the windows and closes all the elements it opened at the end of program execution. The main window is opened on the 'synthetic view' page of the current model by default (See also
-The function main() initialises the log, the finite state machine (fsm), the application and the windows. The main window is opened on the 'synthetic view' page of the current model by default. The main function closes all the elements it opened at the end of program execution.
+the main window topbar dispatcher).
+
+
Function Documentation
diff --git a/doc/docbook/d0/d0b/structelem.xml b/doc/docbook/d0/d0b/structelem.xml
index 3d2fb58..c871b97 100644
--- a/doc/docbook/d0/d0b/structelem.xml
+++ b/doc/docbook/d0/d0b/structelem.xml
@@ -33,5 +33,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/util.h
+include/ util.h
diff --git a/doc/docbook/d1/d04/structdblist.xml b/doc/docbook/d1/d04/structdblist.xml
index dd28077..e7ff290 100644
--- a/doc/docbook/d1/d04/structdblist.xml
+++ b/doc/docbook/d1/d04/structdblist.xml
@@ -29,5 +29,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/util.h
+include/ util.h
diff --git a/doc/docbook/d1/d07/structfsm__struct__list__disp.xml b/doc/docbook/d1/d07/structfsm__struct__list__disp.xml
index ebbd914..fa3a81d 100644
--- a/doc/docbook/d1/d07/structfsm__struct__list__disp.xml
+++ b/doc/docbook/d1/d07/structfsm__struct__list__disp.xml
@@ -29,5 +29,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/fsm.h
+include/ fsm.h
diff --git a/doc/docbook/d1/d09/structTreeNode__t.xml b/doc/docbook/d1/d09/structTreeNode__t.xml
index ca975e2..15aae1d 100644
--- a/doc/docbook/d1/d09/structTreeNode__t.xml
+++ b/doc/docbook/d1/d09/structTreeNode__t.xml
@@ -33,5 +33,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/widget.h
+include/ widget.h
diff --git a/doc/docbook/d1/d0c/actions_8c.xml b/doc/docbook/d1/d0c/actions_8c.xml
new file mode 100644
index 0000000..c631c82
--- /dev/null
+++ b/doc/docbook/d1/d0c/actions_8c.xml
@@ -0,0 +1,33 @@
+
+
+src/actions.c File Reference
+src/actions.c
+
+
+events management (actions) functions
+
+
+#include <unistd.h>#include <gtk-4.0/gtk/gtk.h>
+ Macros
+
+ #define GEM_GRAPH_CLIENT_TYPE_WINDOW (gem_graph_client_window_get_type())
+
+
+
+
+ Functions
+
+ void on_preferences_action (GSimpleAction *action, GVariant *parameter, gpointer user_data)
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+Detailed Description
+
+events management (actions) functions
+
+This file is part of Gem-graph.
+
+
diff --git a/doc/docbook/d2/d02/grid_8c.xml b/doc/docbook/d2/d02/grid_8c.xml
new file mode 100644
index 0000000..fcf45ea
--- /dev/null
+++ b/doc/docbook/d2/d02/grid_8c.xml
@@ -0,0 +1,63 @@
+
+
+src/graphics/grid.c File Reference
+src/graphics/grid.c
+
+
+graphics - grid/empty space drawing functions
+
+
+#include "../../include/graphics.h"
+ Functions
+
+ int graphics_draw_space_ridges_vertex (const int stack_id, long offset_vertex, long x, long y, long z)
+
+phantom documentation used to test the functioning of doxygen
+
+ int graphics_draw_space_ridges_lines (const int stack_id)
+
+phantom documentation used to test the functioning of doxygen
+
+ long graphics_draw_grids_on_space_faces_vertex (const int stack_id, long x, long y, long z)
+
+phantom documentation used to test the functioning of doxygen
+
+ long graphics_draw_grids_on_space_faces_lines (const int stack_id, long offset_vertex, long x, long y, long z)
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+Detailed Description
+
+graphics - grid/empty space drawing functions
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ graphics_draw_grids_on_space_faces_vertex()
+graphics_draw_grids_on_space_faces_vertex grid.c
+grid.c graphics_draw_grids_on_space_faces_vertex
+long graphics_draw_grids_on_space_faces_vertex (const int stack_id, long x, long y, long z)
+
+phantom documentation used to test the functioning of doxygen
+
+
+Writes grid lines on space faces.
+
+
+ graphics_draw_space_ridges_vertex()
+graphics_draw_space_ridges_vertex grid.c
+grid.c graphics_draw_space_ridges_vertex
+int graphics_draw_space_ridges_vertex (const int stack_id, long offset_vertex, long x, long y, long z)
+
+phantom documentation used to test the functioning of doxygen
+
+
+Writes grid ridges to vertex and color buffers.
+
+
+
diff --git a/doc/docbook/d3/d03/structarrow__t.xml b/doc/docbook/d3/d03/structarrow__t.xml
index a2c3157..434c786 100644
--- a/doc/docbook/d3/d03/structarrow__t.xml
+++ b/doc/docbook/d3/d03/structarrow__t.xml
@@ -41,5 +41,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/base.h
+include/ base.h
diff --git a/doc/docbook/d3/d0a/base_8h.xml b/doc/docbook/d3/d0a/base_8h.xml
new file mode 100644
index 0000000..02c664f
--- /dev/null
+++ b/doc/docbook/d3/d0a/base_8h.xml
@@ -0,0 +1,54 @@
+
+
+include/base.h File Reference
+include/base.h
+
+
+base header
+
+
+#include <assert.h>#include <errno.h>#include <fcntl.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <stddef.h>#include <stdbool.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <time.h>#include <string.h>#include <glib-2.0/glib.h>#include <gtk-4.0/gtk/gtk.h>
+ Classes
+
+ struct arrow_t
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+ Macros
+
+ #define EAST 0
+
+ #define WEST 1
+
+ #define ZENITH 2
+
+ #define NADIR 3
+
+ #define SOUTH 4
+
+ #define NORTH 5
+
+
+
+
+ Enumerations
+
+ enum { X_AXIS
+, Y_AXIS
+, Z_AXIS
+, N_AXIS
+ }
+
+
+
+
+Detailed Description
+
+base header
+
+This file is part of Gem-graph.
+
+
diff --git a/doc/docbook/d3/d0c/journal_8c.xml b/doc/docbook/d3/d0c/journal_8c.xml
new file mode 100644
index 0000000..01fb07e
--- /dev/null
+++ b/doc/docbook/d3/d0c/journal_8c.xml
@@ -0,0 +1,328 @@
+
+
+src/journal.c File Reference
+src/journal.c
+
+
+journal / log
+
+
+#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <sys/time.h>#include "../include/fsm.h"
+ Functions
+
+ void fsm_journal_init ( fsm_struct_journal *jj)
+
+2024-09-22 What types of events should be reported ? (fsm, widgets, ... ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ?
+
+ void fsm_journal_clear ( fsm_struct_journal *jj, const char *file_source, const char *function_source, const char *string_value)
+
+ void fsm_journal_push_front ( fsm_struct_journal *jj, const char *file_source, const char *function_source, const char *string_value)
+
+ long fsm_journal_pop_back ( fsm_struct_journal *jj, const char *file_source, const char *function_source, const char *string_value)
+
+ int fsm_journal_length ( fsm_struct_journal jj)
+
+ void fsm_journal_seek ( fsm_struct_journal jj, long usec, const char *file_source, const char *function_source, const char *string_value)
+
+ void fsm_journal_publish ( fsm_struct_journal jj)
+
+
+
+
+Detailed Description
+
+journal / log
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ fsm_journal_clear()
+fsm_journal_clear journal.c
+journal.c fsm_journal_clear
+void fsm_journal_clear ( fsm_struct_journal * jj, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_init()
+fsm_journal_init journal.c
+journal.c fsm_journal_init
+void fsm_journal_init ( fsm_struct_journal * jj)
+
+2024-09-22 What types of events should be reported ? (fsm, widgets, ... ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ?
+
+
+date clé (rank) fichier source fonction source +/- valeur time_t current_time = time(NULL);
+ Check if the time retrieval was successful if (current_time == ((time_t)-1)) printf("Error getting current time.\n"); Convert to local time format and print printf(" Current timestamp: %ld %s\n", current_time, message); printf(" Current time: %s", ctime(¤t_time));
+
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_length()
+fsm_journal_length journal.c
+journal.c fsm_journal_length
+int fsm_journal_length ( fsm_struct_journal jj)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_pop_back()
+fsm_journal_pop_back journal.c
+journal.c fsm_journal_pop_back
+long fsm_journal_pop_back ( fsm_struct_journal * jj, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_publish()
+fsm_journal_publish journal.c
+journal.c fsm_journal_publish
+void fsm_journal_publish ( fsm_struct_journal jj)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_push_front()
+fsm_journal_push_front journal.c
+journal.c fsm_journal_push_front
+void fsm_journal_push_front ( fsm_struct_journal * jj, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_seek()
+fsm_journal_seek journal.c
+journal.c fsm_journal_seek
+void fsm_journal_seek ( fsm_struct_journal jj, long usec, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+
diff --git a/doc/docbook/d4/d07/fsm_2dispatch_8c.xml b/doc/docbook/d4/d07/fsm_2dispatch_8c.xml
index bc63081..48fdae2 100644
--- a/doc/docbook/d4/d07/fsm_2dispatch_8c.xml
+++ b/doc/docbook/d4/d07/fsm_2dispatch_8c.xml
@@ -4,7 +4,7 @@
src/fsm/dispatch.c
-This Finite State Machine (fsm) describes all the possible states of the Gem-graph client and all the transitions between them.
+fsm (Finite State Machine) tasks dispatcher
#include <stdbool.h>#include "../../include/fsm.h"#include "../../include/util.h"#include "../../include/widget.h"
@@ -51,9 +51,11 @@
Detailed Description
-This Finite State Machine (fsm) describes all the possible states of the Gem-graph client and all the transitions between them.
+fsm (Finite State Machine) tasks dispatcher
-The gem-graph-client fsm manages several kinds of exclusive states:
+This file is part of Gem-graph.
+
+The Finite State Machine (fsm) describes all the possible states of the Gem-graph client and all the transitions between them. It manages several kinds of exclusive states:
Run the model or edit it.
@@ -81,8 +83,7 @@
No fsm transition should be executed in another module.
- The journal is created, edited and published from here.
-
+The journal is created, edited and published from here.
Function Documentation
@@ -253,7 +254,7 @@ Simple filters (on a single parameter) can be combined using the logical operato
See also
-src/journal.c/fsm_journal_push_front()
+ src/journal.c/fsm_journal_push_front()
src/main/main()
@@ -265,7 +266,7 @@ Simple filters (on a single parameter) can be combined using the logical operato
src/widget/topbar/left.c
-src/widget/topbar/dispatch.c * 3
+ src/widget/topbar/dispatch.c * 3
src/widget/one_rule/dispatch.c
@@ -273,23 +274,23 @@ Simple filters (on a single parameter) can be combined using the logical operato
src/widget/measure/dispatch.c
-src/widget/dispatch.c * 3
+ src/widget/dispatch.c * 3
src/widget/all_rules/dispatch.c
src/fsm/preferences/manager.c * 8
-src/fsm/measures/manager.c * 2
+ src/fsm/measures/manager.c * 2
src/fsm/measures/tools_list.c * 4
src/fsm/dispatch.c * 10
-src/fsm/results/manager.c
+ src/fsm/results/manager.c
src/util/tree.c
-src/signal.c * 38
+ src/signal.c * 38
@@ -313,7 +314,7 @@ Parameters
See also
-enum fsm_enum_journal_severity in include/fsm.h 'severity' is a pre-defined value that must be associated to each event. It ranges from zero to six : CRITICAL ERROR WARNING INFO MESSAGE DEBUG SPEW 0 1 2 3 4 5 6
+enum fsm_enum_journal_severity in include/fsm.h 'severity' is a pre-defined value that must be associated to each event. It ranges from zero to six : CRITICAL ERROR WARNING INFO MESSAGE DEBUG SPEW 0 1 2 3 4 5 6
@@ -337,7 +338,7 @@ Parameters
See also
-enum fsm_enum_journal_source in include/fsm.h 'source' is a pre-defined value that can be associated to each event. It is not mandatory. It can be set to 'NULL'.
+enum fsm_enum_journal_source in include/fsm.h 'source' is a pre-defined value that can be associated to each event. It is not mandatory. It can be set to 'NULL'.
@@ -384,7 +385,7 @@ Parameters
The log is modified for each event but events can be send asynchronously. This is why the journal is only published once, before the end of "main()", Its chronological order is therefore guaranteed.
-src/journal.c/fsm_journal_publish() (called here) is the last function of the program to be executed.
+ src/journal.c/fsm_journal_publish() (called here) is the last function of the program to be executed.
The fsm_struct_journal (gg_logs) is a static instance in this file. Therefore, all the functions that read or write it are in this file. This is to avoid uncontrolled operations on it.
diff --git a/doc/docbook/d4/d08/measures_2manager_8c.xml b/doc/docbook/d4/d08/measures_2manager_8c.xml
new file mode 100644
index 0000000..6fd28cd
--- /dev/null
+++ b/doc/docbook/d4/d08/measures_2manager_8c.xml
@@ -0,0 +1,150 @@
+
+
+src/fsm/measures/manager.c File Reference
+src/fsm/measures/manager.c
+
+
+fsm measures manager
+
+
+#include <stdbool.h>#include <stdio.h>#include <stdlib.h>#include "../../../include/fsm.h"
+ Functions
+
+ void fsm_add_measure (char *measure_name)
+
+ void fsm_list_init_measures ()
+
+ void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)
+
+
+
+
+Detailed Description
+
+fsm measures manager
+
+This file is part of Gem-graph. It inits the three lists used for measurements and results management: tools, data and displayables (disp) and provides access.
+
+F R O M M E A S U R E M E N T S T O P R E S E N T A T I O N S How should the sequence from measurements to results presentation be organized ?
+
+(1) create/edit some mesurement tools and/or activate existing ones (2) apply a mesurement tool to a situation to create a new data list data list = x, f(x), g(x),... these data are collected by the server and send to the client and possibly carry out any operations on these results (3) display (plot) the results and adjust the appearance of the tables
+ |
+ As a consequence, three lists at least must be created and maintained :
+
+(1) a mesurement tools list (see : fsm/measure/tool_list.c) which should mention if the tool is 'active' or 'inactive NB each rule ou rules-tree edition may change some items of that list
+
+(2) a data flows list (see : fsm/measure/flow_list.c) (it could either be named : fsm/measure/data_list.c) on which some operations could be performed : ex : filter, concat, inverse, scale, correlate, etc. NB each data flow should be available in a 'displayable form'
+
+(3) a displayed data list (see : fsm/measure/disp_list.c) NB some data may be displayed simultaneously in different pages ex : SYNTH & RESULTS
+
+NB these three lists should be stored in the XML model and restored at the beginning of a new session
+ |
+ (4) a journal (a pile) stores chronologically the fsm events during a session run (rules exec, mainly) in a journal (.log) one by session
+ |
+ When a rule is adequately tagged, it triggers a measure : fsm_rule_trig_measure (rule_id, object_id, measure_id) {...} The measurement is then taken and the result stored.
+
+
+Function Documentation
+
+ fsm_add_measure()
+fsm_add_measure manager.c
+manager.c fsm_add_measure
+void fsm_add_measure (char * measure_name)
+Since
+
+2024-09
+
+See also
+
+src/widget/measure/dispatch/widget_measure_event_occurences_nb()
+
+src/widget/measure/dispatch/widget_measure_event_occurences_dates()
+
+src/widget/measure/dispatch/widget_measure_event_occurences_situations()
+
+src/widget/measure/dispatch/widget_measure_time_elapsed_between_two_events()
+
+src/widget/measure/dispatch/widget_measure_third_event_occurences_in_between()
+
+src/fsm/dispatch/fsm_journal_event()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*measure_name
+
+
+
+
+
+
+
+
+
+
+
+ fsm_list_init_measures()
+fsm_list_init_measures manager.c
+manager.c fsm_list_init_measures
+void fsm_list_init_measures ( )
+Since
+
+2024-09
+
+See also
+
+src/fsm/dispatch/fsm_init()
+
+
+
+
+ fsm_rule_trig_measure()
+fsm_rule_trig_measure manager.c
+manager.c fsm_rule_trig_measure
+void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)
+Since
+
+2024-09
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+rule_id
+
+
+
+
+object_id
+
+
+
+
+measure_id
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/docbook/d4/d0b/parse_8h.xml b/doc/docbook/d4/d0b/parse_8h.xml
new file mode 100644
index 0000000..cc460af
--- /dev/null
+++ b/doc/docbook/d4/d0b/parse_8h.xml
@@ -0,0 +1,38 @@
+
+
+include/parse.h File Reference
+include/parse.h
+
+
+model parsing header
+
+
+
+ Functions
+
+ bool parse_model_init (const char *content, size_t length, const char *basename)
+
+ bool parse_model_shutdown (void)
+
+ char parse_model_get_dim (void)
+
+ long parse_model_get_dim_value (const char *axis)
+
+ char parse_model_get_multiplicity (void)
+
+ bool parse_model_get_next_state (char *new_state_id)
+
+ bool parse_model_get_next_arrow (struct arrow_t *new_arrow, const char *state_id, char dimension)
+
+ long parse_model_get_state_arrows_count (const char *state_id)
+
+
+
+
+Detailed Description
+
+model parsing header
+
+This file is part of Gem-graph.
+
+
diff --git a/doc/docbook/d5/d00/structfsm__struct__list__tool.xml b/doc/docbook/d5/d00/structfsm__struct__list__tool.xml
index 6449a0a..8dd1841 100644
--- a/doc/docbook/d5/d00/structfsm__struct__list__tool.xml
+++ b/doc/docbook/d5/d00/structfsm__struct__list__tool.xml
@@ -29,5 +29,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/fsm.h
+include/ fsm.h
diff --git a/doc/docbook/d6/d09/draw_8c.xml b/doc/docbook/d6/d09/draw_8c.xml
new file mode 100644
index 0000000..17f0cf4
--- /dev/null
+++ b/doc/docbook/d6/d09/draw_8c.xml
@@ -0,0 +1,226 @@
+
+
+src/graphics/draw.c File Reference
+src/graphics/draw.c
+
+
+graphics - general drawing functions
+
+
+#include <cglm/cglm.h>#include "../../include/base.h"#include "../../include/graphics.h"
+ Functions
+
+ void graphics_draw_vertex (const int stack_id, GLfloat x, GLfloat y, GLfloat z)
+
+Writes values to describe a vertex at (x,y,z) intoq the vertex buffer.
+
+ void graphics_draw_color (const int stack_id, GLfloat r, GLfloat g, GLfloat b)
+
+Writes values to describe a color (r,g,b) into the color buffer.
+
+ void graphics_draw_line (const int stack_id, GLuint a, GLuint b)
+
+Writes values to describe a line from a to b into the line buffer.
+
+ void graphics_draw_plan (const int stack_id, GLuint a, GLuint b, GLuint c)
+
+Writes values to describe an (a,b,c) plan (triangle) into the plan buffer.
+
+ void graphics_draw (const int stack_id)
+
+Draws the current buffer to a gl_area.
+
+
+
+
+Detailed Description
+
+graphics - general drawing functions
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ graphics_draw()
+graphics_draw draw.c
+draw.c graphics_draw
+void graphics_draw (const int stack_id)
+
+Draws the current buffer to a gl_area.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_color()
+graphics_draw_color draw.c
+draw.c graphics_draw_color
+void graphics_draw_color (const int stack_id, GLfloat r, GLfloat g, GLfloat b)
+
+Writes values to describe a color (r,g,b) into the color buffer.
+
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+color
+GLfloat(r,g,b)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_line()
+graphics_draw_line draw.c
+draw.c graphics_draw_line
+void graphics_draw_line (const int stack_id, GLuint a, GLuint b)
+
+Writes values to describe a line from a to b into the line buffer.
+
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLuint (a,b)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_plan()
+graphics_draw_plan draw.c
+draw.c graphics_draw_plan
+void graphics_draw_plan (const int stack_id, GLuint a, GLuint b, GLuint c)
+
+Writes values to describe an (a,b,c) plan (triangle) into the plan buffer.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLuint (a,b,c)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_vertex()
+graphics_draw_vertex draw.c
+draw.c graphics_draw_vertex
+void graphics_draw_vertex (const int stack_id, GLfloat x, GLfloat y, GLfloat z)
+
+Writes values to describe a vertex at (x,y,z) intoq the vertex buffer.
+
+
+Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLfloat(x,y,z)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+
diff --git a/doc/docbook/d6/d0f/engine_2manager_8c.xml b/doc/docbook/d6/d0f/engine_2manager_8c.xml
new file mode 100644
index 0000000..d1bd5c1
--- /dev/null
+++ b/doc/docbook/d6/d0f/engine_2manager_8c.xml
@@ -0,0 +1,19 @@
+
+
+src/fsm/engine/manager.c File Reference
+src/fsm/engine/manager.c
+
+
+fsm engine manager
+
+
+#include <stdbool.h>#include <time.h>#include "../../../include/fsm.h"#include "../../../include/widget.h"#include "../../../include/signal.h"
+Detailed Description
+
+fsm engine manager
+
+This file is part of Gem-graph. (is it really ?)
+
+I can't even remember what I had in mind when writing these notes... learning how to deal with events, perhaps...
+
+
diff --git a/doc/docbook/d7/d01/action_8h.xml b/doc/docbook/d7/d01/action_8h.xml
new file mode 100644
index 0000000..d4f43bf
--- /dev/null
+++ b/doc/docbook/d7/d01/action_8h.xml
@@ -0,0 +1,26 @@
+
+
+include/action.h File Reference
+include/action.h
+
+
+actions header
+
+
+#include <unistd.h>#include <gtk-4.0/gtk/gtk.h>
+ Functions
+
+ void on_preferences_action (GSimpleAction *action, GVariant *parameter, gpointer user_data)
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+Detailed Description
+
+actions header
+
+This file is part of Gem-graph.
+
+
diff --git a/doc/docbook/d7/d02/widget_2topbar_2dispatch_8c.xml b/doc/docbook/d7/d02/widget_2topbar_2dispatch_8c.xml
new file mode 100644
index 0000000..19ac643
--- /dev/null
+++ b/doc/docbook/d7/d02/widget_2topbar_2dispatch_8c.xml
@@ -0,0 +1,69 @@
+
+
+src/widget/topbar/dispatch.c File Reference
+src/widget/topbar/dispatch.c
+
+
+Main window widgets dispatcher (topbar and six pages)
+
+
+#include "../../../include/base.h"#include "../../../include/signal.h"#include "../../../include/widget.h"#include "../../../include/fsm.h"
+ Functions
+
+ void widget_design_main_window (GtkWindow *main_window, GtkApplication *app)
+
+ char * widget_get_address_text_theory ()
+
+return "./data/text/théorie.txt"
+
+ char * widget_get_address_text_practice ()
+
+return "./data/text/pratique.txt"
+
+ char * widget_get_address_text_alpha_index ()
+
+return "./alphabetic_index.all"
+
+
+
+
+Detailed Description
+
+Main window widgets dispatcher (topbar and six pages)
+
+
+Function Documentation
+
+ widget_design_main_window()
+widget_design_main_window dispatch.c
+dispatch.c widget_design_main_window
+void widget_design_main_window (GtkWindow * main_window, GtkApplication * app)
+
+
+
+Parameters
+
+
+
+
+
+
+
+*main_window
+
+
+
+
+*app
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/docbook/d7/d04/graphics_8h.xml b/doc/docbook/d7/d04/graphics_8h.xml
new file mode 100644
index 0000000..1624b41
--- /dev/null
+++ b/doc/docbook/d7/d04/graphics_8h.xml
@@ -0,0 +1,752 @@
+
+
+include/graphics.h File Reference
+include/graphics.h
+
+
+graphics header
+
+
+#include "base.h"#include <epoxy/gl.h>#include <GL/glu.h>
+ Classes
+
+ struct graphics_stack_t
+
+Structure describing a gl_area and its parameters, used to create a table of Gem-graph client current gl_areas.
+
+
+
+
+ Macros
+
+ #define VERTEX_SHADER_FILE "src/shader.vert"
+
+ #define FRAG_SHADER_FILE "src/shader.frag"
+
+ #define GL_TARGET_MAJOR_VERSION 0
+
+ #define GL_TARGET_MINOR_VERSION 4
+
+
+
+
+ Functions
+
+ bool graphics_render_stack (GtkWidget *container_widget)
+
+Structure describing a gl_area and its parameters, used to create a table of Gem-graph client current gl_areas.
+
+ bool graphics_setup_glarea (int target_mode, GtkWidget *target_widget)
+
+ int graphics_init (void *error_buffer)
+
+Initializes a gl_area.
+
+ void graphics_draw (const int graphics_stack_id)
+
+Draws the current buffer to a gl_area.
+
+ bool graphics_shutdown (const int graphics_stack_id, void *error_buffer)
+
+Draws the current buffer to a gl_area.
+
+ bool graphics_init_shaders (const int graphics_stack_id)
+
+Initializes the shaders of a gl_area and link them to a program.
+
+ bool graphics_init_graphics_stack (void *container_widget, GError *error_buffer)
+
+ bool graphics_shutdown_graphics_stack (void *container_widget, GError *error_buffer)
+
+ bool graphics_update_axis_stack (GtkWidget *container_widget, int axis, int value)
+
+ void graphics_init_buffers (const int graphics_stack_id)
+
+Initializes the buffer of a gl_area Calls according to the user preferences.
+
+ void graphics_draw_vertex (const int graphics_stack_id, GLfloat x, GLfloat y, GLfloat z)
+
+Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console.
+
+ void graphics_draw_line (const int graphics_stack_id, GLuint a, GLuint b)
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+ void graphics_draw_plan (const int graphics_stack_id, GLuint a, GLuint b, GLuint c)
+
+Writes values to describe an (a,b,c) plan (triangle) into the plan buffer.
+
+ void graphics_draw_color (const int graphics_stack_id, GLfloat r, GLfloat g, GLfloat b)
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+ void graphics_model_setup (const int graphics_stack_id)
+
+TODO #pragma omp parallel schedule(static, 12) void attribute ((optimize("no-unroll-loops"))) main_test_graphics (void) {}.
+
+ int graphics_draw_one_arrow_vertex (const int graphics_stack_id, int space_X, int space_Y, int space_Z, int weight, int site, int x, int y, int z)
+
+ int graphics_draw_one_arrow_line (const int graphics_stack_id, int offset_vertex)
+
+ int graphics_draw_space_ridges_vertex (const int graphics_stack_id, long offset_vertex, long x, long y, long z)
+
+Writes grid ridges to vertex and color buffers.
+
+ int graphics_draw_space_ridges_lines (const int graphics_stack_id)
+
+phantom documentation used to test the functioning of doxygen
+
+ long graphics_draw_grids_on_space_faces_vertex (const int graphics_stack_id, long x, long y, long z)
+
+Writes grid lines on space faces.
+
+ long graphics_draw_grids_on_space_faces_lines (const int graphics_stack_id, long offset_vertex, long x, long y, long z)
+
+phantom documentation used to test the functioning of doxygen
+
+ int graphics_set_arrow (int graphics_stack_id, int arrows_nb, int space_X, int space_Y, int space_Z, int requested_weight, int site, int arrow_x, int arrow_y, int arrow_z)
+
+
+
+
+ Variables
+
+ struct graphics_stack_t * graphics_stack
+
+Dynamic array of ptrs to dynamically allocated gl_area_entry.
+
+
+
+
+Detailed Description
+
+graphics header
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ graphics_draw()
+graphics_draw graphics.h
+graphics.h graphics_draw
+void graphics_draw (const int stack_id)
+
+Draws the current buffer to a gl_area.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_color()
+graphics_draw_color graphics.h
+graphics.h graphics_draw_color
+void graphics_draw_color (const int stack_id, GLfloat r, GLfloat g, GLfloat b)
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+GLfloat
+r, GLfloat g, GLfloat b
+
+
+
+
+
+
+
+ Returns
+
+void
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+color
+GLfloat(r,g,b)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_grids_on_space_faces_vertex()
+graphics_draw_grids_on_space_faces_vertex graphics.h
+graphics.h graphics_draw_grids_on_space_faces_vertex
+long graphics_draw_grids_on_space_faces_vertex (const int stack_id, long x, long y, long z)
+
+Writes grid lines on space faces.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+long (x,y,z)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+Writes grid lines on space faces.
+
+
+ graphics_draw_line()
+graphics_draw_line graphics.h
+graphics.h graphics_draw_line
+void graphics_draw_line (const int stack_id, GLuint a, GLuint b)
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+
+Writes values to describe a line from a to b into the line buffer.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+GLfloat
+r, GLfloat g, GLfloat b
+
+
+
+
+
+
+
+ Returns
+
+void Writes values to describe a line from a to b into the line buffer
+
+@use liste de fonctions GTK
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLuint (a,b)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLuint (a,b)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLuint (a,b)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_plan()
+graphics_draw_plan graphics.h
+graphics.h graphics_draw_plan
+void graphics_draw_plan (const int stack_id, GLuint a, GLuint b, GLuint c)
+
+Writes values to describe an (a,b,c) plan (triangle) into the plan buffer.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLuint (a,b,c)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_draw_space_ridges_vertex()
+graphics_draw_space_ridges_vertex graphics.h
+graphics.h graphics_draw_space_ridges_vertex
+int graphics_draw_space_ridges_vertex (const int stack_id, long offset_vertex, long x, long y, long z)
+
+Writes grid ridges to vertex and color buffers.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+long (x,y,z), step_x, step_y, step_z
+
+
+
+
+
+
+
+ Returns
+
+void
+
+Writes grid ridges to vertex and color buffers.
+
+
+ graphics_draw_vertex()
+graphics_draw_vertex graphics.h
+graphics.h graphics_draw_vertex
+void graphics_draw_vertex (const int stack_id, GLfloat x, GLfloat y, GLfloat z)
+
+Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+GLfloat
+x, GLfloat y, GLfloat z
+
+
+
+
+
+
+
+ Returns
+
+void
+
+Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+coords
+GLfloat(x,y,z)
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_init()
+graphics_init graphics.h
+graphics.h graphics_init
+int graphics_init (void * error_buffer)
+
+Initializes a gl_area.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+true if initialized
+
+Initializes a gl_area.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+id if initialized
+
+
+
+
+ graphics_init_buffers()
+graphics_init_buffers graphics.h
+graphics.h graphics_init_buffers
+void graphics_init_buffers (const int stack_id)
+
+Initializes the buffer of a gl_area Calls according to the user preferences.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_init_shaders()
+graphics_init_shaders graphics.h
+graphics.h graphics_init_shaders
+bool graphics_init_shaders (const int stack_id)
+
+Initializes the shaders of a gl_area and link them to a program.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+true if initialized
+
+
+
+
+ graphics_model_setup()
+graphics_model_setup graphics.h
+graphics.h graphics_model_setup
+void graphics_model_setup (const int stack_id)
+
+TODO #pragma omp parallel schedule(static, 12) void attribute ((optimize("no-unroll-loops"))) main_test_graphics (void) {}.
+
+
+assert : space dimensions (x,y,z) > 0 assert : arrows localization within space and sites assert : no more than one arrow per address notify : weights are replaced, NOT added (could be !)
+
+Init space and arrows (= initial state) and allows ulterior creations, suppressions or modifications of the arrows[] array
+
+draws the space() triggers graphics_set_arrows() that modifies the list () and draws arrows
+
+Initialisation du générateur pseudo-aléatoire Attention, les vertex centraux de chaque unité d'espace (cube) peuvent être redondants (max 6)
+
+
+ graphics_shutdown()
+graphics_shutdown graphics.h
+graphics.h graphics_shutdown
+bool graphics_shutdown (const int id, void * error_buffer)
+
+Draws the current buffer to a gl_area.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+void Shutdowns a gl_area
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+true if success
+
+Draws the current buffer to a gl_area.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+true if success
+
+
+
+
+
+Variable Documentation
+
+ graphics_stack
+graphics_stack graphics.h
+graphics.h graphics_stack
+struct graphics_stack_t* graphics_stack[extern]
+
+Dynamic array of ptrs to dynamically allocated gl_area_entry.
+
+
+Dynamic array of ptrs to dynamically allocated gl_area_entry.
+
+
+
diff --git a/doc/docbook/d7/d08/structfsm__struct__journal__unit.xml b/doc/docbook/d7/d08/structfsm__struct__journal__unit.xml
index e25e3b7..797c4ad 100644
--- a/doc/docbook/d7/d08/structfsm__struct__journal__unit.xml
+++ b/doc/docbook/d7/d08/structfsm__struct__journal__unit.xml
@@ -115,5 +115,5 @@
The documentation for this struct was generated from the following file:
-include/fsm.h
+include/ fsm.h
diff --git a/doc/docbook/d8/d00/init_8c.xml b/doc/docbook/d8/d00/init_8c.xml
new file mode 100644
index 0000000..01b5c21
--- /dev/null
+++ b/doc/docbook/d8/d00/init_8c.xml
@@ -0,0 +1,242 @@
+
+
+src/graphics/init.c File Reference
+src/graphics/init.c
+
+
+graphics - initialization and graphic stack management
+
+
+#include "../../include/graphics.h"#include "../../include/parse.h"#include "../../include/util.h"
+ Macros
+
+ #define TEST 0
+
+
+
+
+ Functions
+
+ int graphics_init (void *error_buffer)
+
+Initializes graphical stack.
+
+ bool graphics_shutdown (const int id, void *error_buffer)
+
+Shutdowns a gl_area.
+
+ void graphics_model_setup (const int stack_id)
+
+TODO #pragma omp parallel schedule(static, 12) void attribute ((optimize("no-unroll-loops"))) main_test_graphics (void) {}.
+
+ void graphics_init_buffers (const int stack_id)
+
+Initializes the buffer of a gl_area Calls according to the user preferences.
+
+ bool graphics_init_shaders (const int stack_id)
+
+Initializes the shaders of a gl_area and link them to a program.
+
+
+
+
+ Variables
+
+ struct graphics_stack_t * graphics_stack = NULL
+
+phantom documentation used to test the functioning of doxygen
+
+ size_t graphics_stack_size = 0
+
+ int * free_stack_slot = NULL
+
+ size_t free_stack_slot_size = 0
+
+
+
+
+Detailed Description
+
+graphics - initialization and graphic stack management
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ graphics_init()
+graphics_init init.c
+init.c graphics_init
+int graphics_init (void * error_buffer)
+
+Initializes graphical stack.
+
+
+Initializes a gl_area.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+id if initialized
+
+
+
+
+ graphics_init_buffers()
+graphics_init_buffers init.c
+init.c graphics_init_buffers
+void graphics_init_buffers (const int stack_id)
+
+Initializes the buffer of a gl_area Calls according to the user preferences.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+void
+
+
+
+
+ graphics_init_shaders()
+graphics_init_shaders init.c
+init.c graphics_init_shaders
+bool graphics_init_shaders (const int stack_id)
+
+Initializes the shaders of a gl_area and link them to a program.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+true if initialized
+
+
+
+
+ graphics_model_setup()
+graphics_model_setup init.c
+init.c graphics_model_setup
+void graphics_model_setup (const int stack_id)
+
+TODO #pragma omp parallel schedule(static, 12) void attribute ((optimize("no-unroll-loops"))) main_test_graphics (void) {}.
+
+
+assert : space dimensions (x,y,z) > 0 assert : arrows localization within space and sites assert : no more than one arrow per address notify : weights are replaced, NOT added (could be !)
+
+Init space and arrows (= initial state) and allows ulterior creations, suppressions or modifications of the arrows[] array
+
+draws the space() triggers graphics_set_arrows() that modifies the list () and draws arrows
+
+Initialisation du générateur pseudo-aléatoire Attention, les vertex centraux de chaque unité d'espace (cube) peuvent être redondants (max 6)
+
+
+ graphics_shutdown()
+graphics_shutdown init.c
+init.c graphics_shutdown
+bool graphics_shutdown (const int id, void * error_buffer)
+
+Shutdowns a gl_area.
+
+
+Draws the current buffer to a gl_area.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+gl_area, ptr
+to the gl_area widget
+
+
+
+
+
+
+
+ Returns
+
+true if success
+
+
+
+
+
+Variable Documentation
+
+ graphics_stack
+graphics_stack init.c
+init.c graphics_stack
+struct graphics_stack_t* graphics_stack = NULL
+
+phantom documentation used to test the functioning of doxygen
+
+
+Dynamic array of ptrs to dynamically allocated gl_area_entry.
+
+
+
diff --git a/doc/docbook/d8/d06/signal_8c.xml b/doc/docbook/d8/d06/signal_8c.xml
new file mode 100644
index 0000000..16f704b
--- /dev/null
+++ b/doc/docbook/d8/d06/signal_8c.xml
@@ -0,0 +1,927 @@
+
+
+src/signal.c File Reference
+src/signal.c
+
+
+events management functions
+
+
+#include "../include/fsm.h"#include "../include/signal.h"#include "../include/widget.h"#include "../include/graphics.h"#include "../include/util.h"
+ Functions
+
+ void on_setup_user_tree_factory (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)
+
+ void on_bind_user_tree_factory (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)
+
+ gboolean on_glarea_render (GtkGLArea *area, GdkGLContext *context)
+
+ void on_glarea_realize (GtkWidget *widget)
+
+We need to set up our state when we realize the GtkGLArea widget.
+
+ void on_glarea_unrealize (GtkWidget *widget)
+
+We should tear down the state when unrealizing.
+
+ void on_axis_value_change (GtkAdjustment *adjustment, gpointer data)
+
+ void on_save_current_model_before_editing (GtkWidget *btt_save_current_model, gpointer data)
+
+ void on_discard_current_model_before_editing (GtkWidget *btt_discard_current_model, gpointer data)
+
+ void on_write_current_model (GtkWidget *btt_write_current_model, gpointer data)
+
+ void on_toggle_exec_edit (GtkWidget *toggled_button, gpointer user_data)
+
+ void on_toggle_state_rules_data (GtkWidget *toggled_button, gpointer widget_all_vs_selected_one)
+
+ void on_clicked_topbar_right_search (GtkWidget *btt_menu, gpointer list_box)
+
+ void on_clicked_topbar_right_home (GtkWidget *btt_reset, gpointer data)
+
+ void on_updating_objects_transparencies (GtkWidget *btt_source, GtkScrollbar *scrollbar)
+
+ void on_resetting_XYZ_in_state_page ()
+
+ void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
+
+ void on_topbar_right_measure_clicked (GtkWidget *btt, gpointer button_icon_name)
+
+ void on_start_new_measure (GtkWidget *btt, gpointer btt_label)
+
+ void on_select_rules_first (GtkWidget *btt, gpointer data)
+
+ void on_measure_depends_on_a_single_event (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_depends_on_two_events (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_select_a_second_rules_set (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_select_a_second_measurement (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_skip_this_step (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_something_else (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_closing_page (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_single_event_occurences_nb (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_single_event_occurences_dates (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_single_event_occurences_situations (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_time_elapsed_between_two_events (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_third_event_occurences_in_between (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_entry_name_insert_after (GtkWidget *entry, gpointer data)
+
+ void on_entry_name_delete_after (GtkWidget *entry, gpointer data)
+
+
+
+
+Detailed Description
+
+events management functions
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ on_axis_value_change()
+on_axis_value_change signal.c
+signal.c on_axis_value_change
+void on_axis_value_change (GtkAdjustment * adjustment, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_bind_user_tree_factory()
+on_bind_user_tree_factory signal.c
+signal.c on_bind_user_tree_factory
+void on_bind_user_tree_factory (GtkSignalListItemFactory * factory, GObject * object, gpointer user_data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_clicked_topbar_right_home()
+on_clicked_topbar_right_home signal.c
+signal.c on_clicked_topbar_right_home
+void on_clicked_topbar_right_home (GtkWidget * btt_reset, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_clicked_topbar_right_search()
+on_clicked_topbar_right_search signal.c
+signal.c on_clicked_topbar_right_search
+void on_clicked_topbar_right_search (GtkWidget * btt_menu, gpointer list_box)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_discard_current_model_before_editing()
+on_discard_current_model_before_editing signal.c
+signal.c on_discard_current_model_before_editing
+void on_discard_current_model_before_editing (GtkWidget * btt_discard_current_model, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_entry_name_delete_after()
+on_entry_name_delete_after signal.c
+signal.c on_entry_name_delete_after
+void on_entry_name_delete_after (GtkWidget * entry, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_entry_name_insert_after()
+on_entry_name_insert_after signal.c
+signal.c on_entry_name_insert_after
+void on_entry_name_insert_after (GtkWidget * entry, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_glarea_realize()
+on_glarea_realize signal.c
+signal.c on_glarea_realize
+void on_glarea_realize (GtkWidget * widget)
+
+We need to set up our state when we realize the GtkGLArea widget.
+
+
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_glarea_render()
+on_glarea_render signal.c
+signal.c on_glarea_render
+gboolean on_glarea_render (GtkGLArea * area, GdkGLContext * context)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_glarea_unrealize()
+on_glarea_unrealize signal.c
+signal.c on_glarea_unrealize
+void on_glarea_unrealize (GtkWidget * widget)
+
+We should tear down the state when unrealizing.
+
+
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_resetting_XYZ_in_state_page()
+on_resetting_XYZ_in_state_page signal.c
+signal.c on_resetting_XYZ_in_state_page
+void on_resetting_XYZ_in_state_page ( )
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_save_current_model_before_editing()
+on_save_current_model_before_editing signal.c
+signal.c on_save_current_model_before_editing
+void on_save_current_model_before_editing (GtkWidget * btt_save_current_model, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_select_rules_first()
+on_select_rules_first signal.c
+signal.c on_select_rules_first
+void on_select_rules_first (GtkWidget * btt, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_situations_box_do_reset()
+on_situations_box_do_reset signal.c
+signal.c on_situations_box_do_reset
+void on_situations_box_do_reset (GtkWidget * btt_reset, GtkScrollbar * reset_scrollbar)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_start_new_measure()
+on_start_new_measure signal.c
+signal.c on_start_new_measure
+void on_start_new_measure (GtkWidget * btt, gpointer btt_label)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_toggle_exec_edit()
+on_toggle_exec_edit signal.c
+signal.c on_toggle_exec_edit
+void on_toggle_exec_edit (GtkWidget * toggled_button, gpointer user_data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_toggle_state_rules_data()
+on_toggle_state_rules_data signal.c
+signal.c on_toggle_state_rules_data
+void on_toggle_state_rules_data (GtkWidget * toggled_button, gpointer widget_all_vs_selected_one)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_topbar_right_measure_clicked()
+on_topbar_right_measure_clicked signal.c
+signal.c on_topbar_right_measure_clicked
+void on_topbar_right_measure_clicked (GtkWidget * btt, gpointer button_icon_name)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_updating_objects_transparencies()
+on_updating_objects_transparencies signal.c
+signal.c on_updating_objects_transparencies
+void on_updating_objects_transparencies (GtkWidget * btt_source, GtkScrollbar * scrollbar)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_write_current_model()
+on_write_current_model signal.c
+signal.c on_write_current_model
+void on_write_current_model (GtkWidget * btt_write_current_model, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+
diff --git a/doc/docbook/d8/d09/signal_8h.xml b/doc/docbook/d8/d09/signal_8h.xml
new file mode 100644
index 0000000..8c51945
--- /dev/null
+++ b/doc/docbook/d8/d09/signal_8h.xml
@@ -0,0 +1,1015 @@
+
+
+include/signal.h File Reference
+include/signal.h
+
+
+events management header
+
+
+#include <gtk-4.0/gtk/gtk.h>
+ Functions
+
+ void on_windows_activation (GtkApplication *app)
+
+ void on_windows_startup (GtkApplication *app)
+
+ void on_toggle_exec_edit (GtkWidget *btt_XOR_EXEC_EDIT, gpointer user_data)
+
+ void on_toggle_state_rules_data (GtkWidget *btt_STATE_RULES_DATA, gpointer user_data)
+
+ void on_save_current_model_before_editing (GtkWidget *btt_SAVE_CURRENT_MODEL, gpointer data)
+
+ void on_discard_current_model_before_editing (GtkWidget *btt_SAVE_CURRENT_MODEL, gpointer data)
+
+ void on_write_current_model (GtkWidget *btt_WRITE_CURRENT_MODEL, gpointer data)
+
+ void on_setup_user_tree_factory (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)
+
+ void on_bind_user_tree_factory (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)
+
+ gboolean on_glarea_render (GtkGLArea *area, GdkGLContext *context)
+
+ void on_glarea_realize (GtkWidget *widget)
+
+We need to set up our state when we realize the GtkGLArea widget.
+
+ void on_glarea_unrealize (GtkWidget *widget)
+
+We should tear down the state when unrealizing.
+
+ void on_axis_value_change (GtkAdjustment *adjustment, gpointer data)
+
+ void on_updating_objects_transparencies (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
+
+ void on_situations_box_do_reset (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)
+
+ void on_resetting_XYZ_in_state_page ()
+
+ void on_clicked_topbar_right_home (GtkWidget *btt_reset, gpointer data)
+
+ void on_clicked_topbar_right_search (GtkWidget *btt_menu, gpointer list_box)
+
+ void on_topbar_right_measure_clicked (GtkWidget *btt_measure, gpointer data)
+
+ void on_start_new_measure (GtkWidget *btt_new_measure, gpointer data)
+
+ void on_select_rules_first (GtkWidget *btt_new_measure, gpointer data)
+
+ void on_measure_depends_on_a_single_event (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_depends_on_two_events (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_select_a_second_rules_set (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_single_event_occurences_nb (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_single_event_occurences_dates (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_single_event_occurences_situations (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_time_elapsed_between_two_events (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_measure_third_event_occurences_in_between (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_select_a_second_measurement (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_skip_this_step (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_something_else (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_closing_page (GtkWidget *btt, gpointer data)
+
+phantom documentation used to test the functioning of doxygen
+
+ void on_start_new_engine (GtkWidget *btt, gpointer data)
+
+ void on_entry_name_insert_after (GtkWidget *entry, gpointer data)
+
+ void on_entry_name_delete_after (GtkWidget *entry, gpointer data)
+
+
+
+
+Detailed Description
+
+events management header
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ on_axis_value_change()
+on_axis_value_change signal.h
+signal.h on_axis_value_change
+void on_axis_value_change (GtkAdjustment * adjustment, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_bind_user_tree_factory()
+on_bind_user_tree_factory signal.h
+signal.h on_bind_user_tree_factory
+void on_bind_user_tree_factory (GtkSignalListItemFactory * factory, GObject * object, gpointer user_data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_clicked_topbar_right_home()
+on_clicked_topbar_right_home signal.h
+signal.h on_clicked_topbar_right_home
+void on_clicked_topbar_right_home (GtkWidget * btt_reset, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_clicked_topbar_right_search()
+on_clicked_topbar_right_search signal.h
+signal.h on_clicked_topbar_right_search
+void on_clicked_topbar_right_search (GtkWidget * btt_menu, gpointer list_box)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_discard_current_model_before_editing()
+on_discard_current_model_before_editing signal.h
+signal.h on_discard_current_model_before_editing
+void on_discard_current_model_before_editing (GtkWidget * btt_discard_current_model, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_entry_name_delete_after()
+on_entry_name_delete_after signal.h
+signal.h on_entry_name_delete_after
+void on_entry_name_delete_after (GtkWidget * entry, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_entry_name_insert_after()
+on_entry_name_insert_after signal.h
+signal.h on_entry_name_insert_after
+void on_entry_name_insert_after (GtkWidget * entry, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_glarea_realize()
+on_glarea_realize signal.h
+signal.h on_glarea_realize
+void on_glarea_realize (GtkWidget * widget)
+
+We need to set up our state when we realize the GtkGLArea widget.
+
+
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_glarea_render()
+on_glarea_render signal.h
+signal.h on_glarea_render
+gboolean on_glarea_render (GtkGLArea * area, GdkGLContext * context)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_glarea_unrealize()
+on_glarea_unrealize signal.h
+signal.h on_glarea_unrealize
+void on_glarea_unrealize (GtkWidget * widget)
+
+We should tear down the state when unrealizing.
+
+
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_resetting_XYZ_in_state_page()
+on_resetting_XYZ_in_state_page signal.h
+signal.h on_resetting_XYZ_in_state_page
+void on_resetting_XYZ_in_state_page ( )
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_save_current_model_before_editing()
+on_save_current_model_before_editing signal.h
+signal.h on_save_current_model_before_editing
+void on_save_current_model_before_editing (GtkWidget * btt_save_current_model, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_select_rules_first()
+on_select_rules_first signal.h
+signal.h on_select_rules_first
+void on_select_rules_first (GtkWidget * btt, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_situations_box_do_reset()
+on_situations_box_do_reset signal.h
+signal.h on_situations_box_do_reset
+void on_situations_box_do_reset (GtkWidget * btt_reset, GtkScrollbar * reset_scrollbar)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_start_new_measure()
+on_start_new_measure signal.h
+signal.h on_start_new_measure
+void on_start_new_measure (GtkWidget * btt, gpointer btt_label)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_toggle_exec_edit()
+on_toggle_exec_edit signal.h
+signal.h on_toggle_exec_edit
+void on_toggle_exec_edit (GtkWidget * toggled_button, gpointer user_data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_toggle_state_rules_data()
+on_toggle_state_rules_data signal.h
+signal.h on_toggle_state_rules_data
+void on_toggle_state_rules_data (GtkWidget * toggled_button, gpointer widget_all_vs_selected_one)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_topbar_right_measure_clicked()
+on_topbar_right_measure_clicked signal.h
+signal.h on_topbar_right_measure_clicked
+void on_topbar_right_measure_clicked (GtkWidget * btt, gpointer button_icon_name)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_updating_objects_transparencies()
+on_updating_objects_transparencies signal.h
+signal.h on_updating_objects_transparencies
+void on_updating_objects_transparencies (GtkWidget * btt_source, GtkScrollbar * scrollbar)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ on_windows_activation()
+on_windows_activation signal.h
+signal.h on_windows_activation
+void on_windows_activation (GtkApplication * app)
+Since
+
+2024-06
+
+See also
+
+ widget_design_main_window()
+
+widget_design_dialog_window()
+
+widget_design_text_window()
+
+util_trigger_test()
+
+ fsm_journal_event()
+
+ main()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*app
+
+
+
+
+
+
+
+
+
+
+
+ on_windows_startup()
+on_windows_startup signal.h
+signal.h on_windows_startup
+void on_windows_startup (GtkApplication * app)
+Since
+
+2024-08
+
+See also
+
+ fsm_journal_event()
+
+ main()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*app
+
+
+
+
+
+
+
+
+
+
+
+ on_write_current_model()
+on_write_current_model signal.h
+signal.h on_write_current_model
+void on_write_current_model (GtkWidget * btt_write_current_model, gpointer data)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+
diff --git a/doc/docbook/d8/d0c/util_8h.xml b/doc/docbook/d8/d0c/util_8h.xml
new file mode 100644
index 0000000..a9026e3
--- /dev/null
+++ b/doc/docbook/d8/d0c/util_8h.xml
@@ -0,0 +1,386 @@
+
+
+include/util.h File Reference
+include/util.h
+
+
+utilities header
+
+
+#include <stdbool.h>#include <stddef.h>#include <gtk-4.0/gtk/gtk.h>#include "../include/fsm.h"
+ Classes
+
+ struct pile
+
+phantom documentation used to test the functioning of doxygen
+
+ struct elem
+
+phantom documentation used to test the functioning of doxygen
+
+ struct dblist
+
+phantom documentation used to test the functioning of doxygen
+
+ struct slist
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+ Typedefs
+
+ typedef struct pile pile
+
+phantom documentation used to test the functioning of doxygen
+
+ typedef struct elem elem
+
+phantom documentation used to test the functioning of doxygen
+
+ typedef struct slist slist
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+ Functions
+
+ char * util_read_file (char *filename)
+
+ char * util_concat (const char *str,...)
+
+ void util_pile_clear ( pile **)
+
+ void util_pile_view ( pile *)
+
+ int util_pile_push ( pile **, int)
+
+ int util_pile_pop ( pile **)
+
+ int util_pile_length ( pile *p)
+
+ void util_list_2x2_init ( dblist *l)
+
+ void util_list_2x2_clear ( dblist *l)
+
+ void util_list_2x2_view ( dblist l)
+
+ int util_list_2x2_push_back ( dblist *l, int val)
+
+ int util_list_2x2_push_front ( dblist *l, int val)
+
+ int util_list_2x2_pop_back ( dblist *l)
+
+ int util_list_2x2_pop_front ( dblist *l)
+
+ int util_list_2x2_length ( dblist l)
+
+ void util_sorted_list_clear ( slist **sl)
+
+ void util_sorted_list_view ( slist *sl)
+
+ int util_sorted_list_insert ( slist **sl, int val)
+
+ int util_sorted_list_pop ( slist **sl)
+
+ int util_sorted_list_length ( slist *sl)
+
+ void util_trigger_test ()
+
+ void util_test_pile ()
+
+ void util_test_double_list ()
+
+ void util_test_sorted_list ()
+
+ long util_gl_get_stack (void *container_widget)
+
+Look for stack entry and returns stack_id.
+
+ long util_gl_is_util_ready (void *container_widget)
+
+ bool util_gl_init_stack (void *container_widget, GError *error_buffer)
+
+Look for stack entry and initializes OpenGL for it.
+
+ bool util_gl_shutdown_stack (void *container_widget, GError *error_buffer)
+
+Look for stack entry and shutdowns OpenGL for it.
+
+ void util_gl_clean_stack_index (void)
+
+phantom documentation used to test the functioning of doxygen
+
+ bool util_gl_render_stack (GtkWidget *container_widget)
+
+Look for stack entry and triggers OpenGL for drawing.
+
+ bool util_gl_update_axis (GtkWidget *container_widget, int axis, int value)
+
+Look for stack entry and triggers OpenGL for drawing.
+
+ void util_gl_shutdown_all_stacks (void)
+
+Look for every stack entry and shutdowns OpenGL for it.
+
+ GtkWidget * create_axis_slider (int axis)
+
+Creates a slider widget.
+
+
+
+
+Detailed Description
+
+utilities header
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ create_axis_slider()
+create_axis_slider util.h
+util.h create_axis_slider
+GtkWidget * create_axis_slider (int axis)
+
+Creates a slider widget.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+axis
+the axis we're building a label for
+
+
+
+
+
+
+
+ Returns
+
+GtkWidget*: pointer to the new widget
+
+
+
+
+ util_gl_get_stack()
+util_gl_get_stack util.h
+util.h util_gl_get_stack
+long util_gl_get_stack (void * container_widget)
+
+Look for stack entry and returns stack_id.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+container_widget
+generally the GtkBox that contains the GLArea
+
+
+
+
+
+
+
+ Returns
+
+stack_id
+
+
+
+
+ util_gl_init_stack()
+util_gl_init_stack util.h
+util.h util_gl_init_stack
+bool util_gl_init_stack (void * container_widget, GError * error_buffer)
+
+Look for stack entry and initializes OpenGL for it.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+container_widget
+generally the GtkBox that contains the GLArea
+
+
+
+error_buffer
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+
+
+
+ Returns
+
+bool: true if success
+
+
+
+
+ util_gl_render_stack()
+util_gl_render_stack util.h
+util.h util_gl_render_stack
+bool util_gl_render_stack (GtkWidget * container_widget)
+
+Look for stack entry and triggers OpenGL for drawing.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+container_widget
+generally the GtkBox that contains the GLArea
+
+
+
+
+
+
+
+ Returns
+
+bool: true if success
+
+
+
+
+ util_gl_shutdown_all_stacks()
+util_gl_shutdown_all_stacks util.h
+util.h util_gl_shutdown_all_stacks
+void util_gl_shutdown_all_stacks (void )
+
+Look for every stack entry and shutdowns OpenGL for it.
+
+
+returns true if success ? TODO why not bool ?
+
+
+ util_gl_shutdown_stack()
+util_gl_shutdown_stack util.h
+util.h util_gl_shutdown_stack
+bool util_gl_shutdown_stack (void * container_widget, GError * error_buffer)
+
+Look for stack entry and shutdowns OpenGL for it.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+container_widget
+generally the GtkBox that contains the GLArea
+
+
+
+error_buffer
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+
+
+
+ Returns
+
+bool: true if success
+
+
+
+
+ util_gl_update_axis()
+util_gl_update_axis util.h
+util.h util_gl_update_axis
+bool util_gl_update_axis (GtkWidget * container_widget, int axis, int value)
+
+Look for stack entry and triggers OpenGL for drawing.
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+container_widget
+generally the GtkBox that contains the GLArea
+
+
+
+axis
+phantom documentation used to test the functioning of doxygen
+
+
+
+value
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+
+
+
+ Returns
+
+bool: true if success
+
+
+
+
+
diff --git a/doc/docbook/d9/d03/structfsm__struct__journal.xml b/doc/docbook/d9/d03/structfsm__struct__journal.xml
index 2dceb7c..c03ca0d 100644
--- a/doc/docbook/d9/d03/structfsm__struct__journal.xml
+++ b/doc/docbook/d9/d03/structfsm__struct__journal.xml
@@ -50,5 +50,5 @@
The documentation for this struct was generated from the following file:
-include/fsm.h
+include/ fsm.h
diff --git a/doc/docbook/d9/d04/structfsm__struct__list__data.xml b/doc/docbook/d9/d04/structfsm__struct__list__data.xml
index 062b6a4..f1adae4 100644
--- a/doc/docbook/d9/d04/structfsm__struct__list__data.xml
+++ b/doc/docbook/d9/d04/structfsm__struct__list__data.xml
@@ -29,5 +29,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/fsm.h
+include/ fsm.h
diff --git a/doc/docbook/d9/d06/preferences_2manager_8c.xml b/doc/docbook/d9/d06/preferences_2manager_8c.xml
index 94e12bb..9b808ba 100644
--- a/doc/docbook/d9/d06/preferences_2manager_8c.xml
+++ b/doc/docbook/d9/d06/preferences_2manager_8c.xml
@@ -2,6 +2,11 @@
src/fsm/preferences/manager.c File Reference
src/fsm/preferences/manager.c
+
+
+fsm preferences manager
+
+
#include "../../../include/fsm.h"#include "../../../include/signal.h"#include "../../../include/widget.h"
Classes
@@ -32,6 +37,13 @@
+Detailed Description
+
+fsm preferences manager
+
+This file is part of Gem-graph. It manages the preferences (maintain a list, provides access).
+
+
Function Documentation
fsm_add_displayable()
diff --git a/doc/docbook/d9/d06/results_2manager_8c.xml b/doc/docbook/d9/d06/results_2manager_8c.xml
new file mode 100644
index 0000000..e55da06
--- /dev/null
+++ b/doc/docbook/d9/d06/results_2manager_8c.xml
@@ -0,0 +1,26 @@
+
+
+src/fsm/results/manager.c File Reference
+src/fsm/results/manager.c
+
+
+fsm results manager
+
+
+#include <stdbool.h>#include "../../../include/fsm.h"#include "../../../include/widget.h"
+ Functions
+
+ void fsm_add_result (char *result_name)
+
+ void fsm_list_init_results ()
+
+
+
+
+Detailed Description
+
+fsm results manager
+
+This file is part of Gem-graph. It manages the results (maintain a list, provides access).
+
+
diff --git a/doc/docbook/d9/d0a/widget_2dispatch_8c.xml b/doc/docbook/d9/d0a/widget_2dispatch_8c.xml
new file mode 100644
index 0000000..e07d312
--- /dev/null
+++ b/doc/docbook/d9/d0a/widget_2dispatch_8c.xml
@@ -0,0 +1,190 @@
+
+
+src/widget/dispatch.c File Reference
+src/widget/dispatch.c
+
+
+Windows (main, dialog, modal) creation and access (get, set)
+
+
+#include "../../include/widget.h"#include "../../include/fsm.h"#include "../../include/util.h"
+ Functions
+
+ GtkWindow * widget_get_main_window ()
+
+getter
+
+ GtkWindow * widget_get_dialog_window ()
+
+getter
+
+ GtkWindow * widget_get_text_window ()
+
+getter
+
+ void on_windows_startup (GtkApplication *app)
+
+ void on_windows_activation (GtkApplication *app)
+
+
+
+
+Detailed Description
+
+Windows (main, dialog, modal) creation and access (get, set)
+
+
+Function Documentation
+
+ on_windows_activation()
+on_windows_activation dispatch.c
+dispatch.c on_windows_activation
+void on_windows_activation (GtkApplication * app)
+Since
+
+2024-06
+
+See also
+
+ widget_design_main_window()
+
+widget_design_dialog_window()
+
+widget_design_text_window()
+
+util_trigger_test()
+
+ fsm_journal_event()
+
+ main()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*app
+
+
+
+
+
+
+
+
+
+
+
+ on_windows_startup()
+on_windows_startup dispatch.c
+dispatch.c on_windows_startup
+void on_windows_startup (GtkApplication * app)
+Since
+
+2024-08
+
+See also
+
+ fsm_journal_event()
+
+ main()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*app
+
+
+
+
+
+
+
+
+
+
+
+ widget_get_dialog_window()
+widget_get_dialog_window dispatch.c
+dispatch.c widget_get_dialog_window
+GtkWindow * widget_get_dialog_window ( )
+
+getter
+
+
+Since
+
+2024-07
+
+See also
+
+src/signal
+
+Returns
+
+dialog_window
+
+
+
+
+ widget_get_main_window()
+widget_get_main_window dispatch.c
+dispatch.c widget_get_main_window
+GtkWindow * widget_get_main_window ( )
+
+getter
+
+
+Since
+
+2024-07
+
+See also
+
+src/signal
+
+Returns
+
+main_window
+
+
+
+
+ widget_get_text_window()
+widget_get_text_window dispatch.c
+dispatch.c widget_get_text_window
+GtkWindow * widget_get_text_window ( )
+
+getter
+
+
+Since
+
+2024-07
+
+See also
+
+src/signal
+
+Returns
+
+text_window
+
+
+
+
+
diff --git a/doc/docbook/da/d03/structpile.xml b/doc/docbook/da/d03/structpile.xml
index 03d1f92..e129f3e 100644
--- a/doc/docbook/da/d03/structpile.xml
+++ b/doc/docbook/da/d03/structpile.xml
@@ -29,5 +29,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/util.h
+include/ util.h
diff --git a/doc/docbook/dd/d01/fsm_8h.xml b/doc/docbook/dd/d01/fsm_8h.xml
new file mode 100644
index 0000000..f5a8ae9
--- /dev/null
+++ b/doc/docbook/dd/d01/fsm_8h.xml
@@ -0,0 +1,1314 @@
+
+
+include/fsm.h File Reference
+include/fsm.h
+
+
+fsm (Finite State Machine) management header
+
+
+#include <stdbool.h>#include <stddef.h>#include <string.h>#include <gtk-4.0/gtk/gtk.h>
+ Classes
+
+ struct fsm_struct_journal_unit
+
+phantom documentation used to test the functioning of doxygen
+
+ struct fsm_struct_journal
+
+phantom documentation used to test the functioning of doxygen
+
+ struct fsm_struct_list_tool
+
+phantom documentation used to test the functioning of doxygen
+
+ struct fsm_struct_list_data
+
+phantom documentation used to test the functioning of doxygen
+
+ struct fsm_struct_list_disp
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+ Macros
+
+ #define JOURNAL_LOG_MAX_LENGTH 255
+
+ #define n_rules 128
+
+ #define n_objects 32
+
+ #define n_situations 128
+
+
+
+
+ Typedefs
+
+ typedef struct fsm_struct_journal_unit fsm_struct_journal_unit
+
+phantom documentation used to test the functioning of doxygen
+
+ typedef struct fsm_struct_list_tool fsm_struct_list_tool
+
+phantom documentation used to test the functioning of doxygen
+
+ typedef struct fsm_struct_list_data fsm_struct_list_data
+
+phantom documentation used to test the functioning of doxygen
+
+ typedef struct fsm_struct_list_disp fsm_struct_list_disp
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+ Enumerations
+
+ enum fsm_enum_journal_severity { CRITICAL
+, ERROR
+, WARNING
+, INFO
+, MESSAGE
+, DEBUG
+, SPEW
+ }
+
+ enum fsm_enum_journal_source { SOURCE
+, TARGET
+, JOURNAL
+, FSM
+, PREFER
+, MAIN
+, APP
+, WIDGETS
+, SIGNAL
+, MAIN_WINDOW
+, DIALOG_WINDOW
+, MODAL_WINDOW
+, TEXT_WINDOW
+, AUTO_NOTIFICATION
+, TOPBAR
+, TOPBAR_LEFT
+, TOPBAR_RIGHT
+, TOPBAR_CENTER
+, SYNTH_PAGE
+, STATE_PAGE
+, RULES_PAGE
+, MEASURES_PAGE
+, RESULTS_PAGE
+, SenumYNTH_GLAREA
+, SYNTH_ALL_RESULTS
+, SYNTH_TIME_DEP_RESULTS
+, SYNTH_TIME_INDEP_RESULTS
+, STATE_TOP
+, STATE_BOTTOM
+, STATE_GLAREA
+, STATE_CAMERA
+, RULE_GEOMETRY
+, RULE_GLAREA
+, RULE_CAMERA
+, RULE_ALGEBRA
+, RULE_CONDITION
+, RULE_ASSIGN
+, RULE_ID
+, RULES_TREE
+, RULES_COMPARE
+, RULES_USE
+, MEASURES_TOOLS
+, MEASURES__ACTIVITY
+, MEASURES__DISPLAY
+, RESULTS
+, TIME_DEP_RESULTS
+, TIME_INDEP_RESULTS
+, WIDGET
+, BUTTON
+, SCROLL
+, GLAREA
+, TEXT
+, LABEL
+, TREE
+, SLIDER
+, EXPANDER
+, ENTRY
+, SWITCH_STATE_RULES_DATA
+, SLIDER_X
+, SLIDER_Y
+, SLIDER_Z
+, SLIDER_A
+, SLIDER_B
+, SLIDER_C
+ }
+
+ enum fsm_enum_exec_edit { EXEC
+, EDIT
+ }
+
+ enum fsm_enum_state_rules_data { SYNTH
+, STATE
+, RULES
+, DATA
+ }
+
+ enum fsm_enum_store_restore_reset { STORE
+, RESTORE
+, RESET
+ }
+
+ enum fsm_enum_measure_type { DATE_RULE_EXEC
+, RULE_EXEC_NB
+, OBJECT_NB
+, ELAPSED_TIME
+ }
+
+
+
+
+ Functions
+
+ void fsm_journal_publish ( fsm_struct_journal jj)
+
+ void fsm_journal_init ( fsm_struct_journal *jj)
+
+2024-09-22 What types of events should be reported ? (fsm, widgets, ... ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ?
+
+ void fsm_journal_push_front ( fsm_struct_journal *jj, const char *file_source, const char *function_source, const char *string_value)
+
+ void fsm_journal_clear ( fsm_struct_journal *jj, const char *file_source, const char *function_source, const char *string_value)
+
+ long fsm_journal_pop_back ( fsm_struct_journal *jj, const char *file_source, const char *function_source, const char *string_value)
+
+ int fsm_journal_length ( fsm_struct_journal jj)
+
+ void fsm_journal_seek ( fsm_struct_journal jj, long usec, const char *file_source, const char *function_source, const char *string_value)
+
+ void fsm_journal_publication_request ()
+
+The fsm_journal_publication_request() is called only once, by main(), just after closing the app and before ending the program.
+
+ void fsm_journal_event (int severity, int source, const char *file_source, const char *function_source, const char *string_value)
+
+It is mandatory for any event to call this function to be published in the journal.
+
+ void fsm_init (char *message)
+
+fsm init is the first function called by main.c It initiates the journal and the four lists: 'measures', 'results', 'displayables results' and 'preferences'.
+
+ void fsm_list_init_preferences ()
+
+ void fsm_list_init_measures ()
+
+ void fsm_list_init_results ()
+
+ void fsm_list_init_displayables ()
+
+ int fsm_get_exec_edit ()
+
+some client pages (in particular "state" and "rules") will be displayed and behave differently depending on whether the fsm is in edit or run state.
+
+ int fsm_get_state_rules_data ()
+
+The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data.
+
+ void fsm_set_exec_edit (int value)
+
+setter for the static value: 'choice_STATE_RULES_DATA' (in this file)
+
+ void fsm_set_state_rules_data (int value)
+
+setter for the static value: 'choice_STATE_RULES_DATA' (in this file)
+
+ void fsm_set_store_restore_reset (int choice, int value)
+
+ bool fsm_get_preferences_state ()
+
+getter for the static boolean: 'preferences_have_been_modified'
+
+ void fsm_set_preferences_modified (bool value)
+
+setter for the static boolean: 'preferences_have_been_modified'
+
+ void fsm_add_measure (char *measure_name)
+
+ void fsm_add_result (char *result_name)
+
+ void fsm_add_displayable (char *displayable_name)
+
+ void fsm_reset_all_situations_values (int value)
+
+ void fsm_list_tools_insert ( fsm_struct_list_tool **tl, int value)
+
+ int fsm_list_tools_pop ( fsm_struct_list_tool **tl)
+
+ int fsm_list_tools_length ( fsm_struct_list_tool *tl)
+
+ void fsm_list_tools_clear ( fsm_struct_list_tool **tl)
+
+ void fsm_list_tools_view ( fsm_struct_list_tool *tl)
+
+ void fsm_list_tools_test ()
+
+ void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)
+
+ void fsm_add_data ( fsm_struct_list_data d, int *p_data, int *p_target)
+
+ int fsm_get_data ( fsm_struct_list_data d, int from, int to)
+
+ void fsm_remove_data ( fsm_struct_list_data d, int *p_data)
+
+
+
+
+Detailed Description
+
+fsm (Finite State Machine) management header
+
+This file is part of Gem-graph.
+
+
+Enumeration Type Documentation
+
+ fsm_enum_journal_severity
+fsm_enum_journal_severity fsm.h
+fsm.h fsm_enum_journal_severity
+enum fsm_enum_journal_severity
+
+
+* * * - J O U R N A L M E T A R U L E S - * * * *
+
+ref: sudo cat /var/log/messages
+
+structure d'un log:
+
+date
+
+rang (n° d'ordre)
+
+fichier
+
+fonction
+
+valeur, paramètre, descriptif, contexte,... (tout ce qui peut contribuer à améliorer la compréhension du journal) any value that can qualify the event and provides useful information when reading the log.
+
+
+
+
+ |
+
+
+Un seul fsm_journal_event() par fonction ? sauf si cette fonction génère plusieurs autres fonctions d'intérêt ?
+
+S'il y a deux fsm_journal_event() (begin / end) dans une fonction, ils doivent avoir la même étiquette (les mêmes valeurs) : SEVERITY & SOURCE
+
+
+
+* * * - J O U R N A L M E T A R U L E S - * * *
+
+
+
+
+
+Function Documentation
+
+ fsm_add_displayable()
+fsm_add_displayable fsm.h
+fsm.h fsm_add_displayable
+void fsm_add_displayable (char * displayable_name)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+displayable_name
+
+
+
+
+
+
+
+
+
+
+
+ fsm_add_measure()
+fsm_add_measure fsm.h
+fsm.h fsm_add_measure
+void fsm_add_measure (char * measure_name)
+Since
+
+2024-09
+
+See also
+
+src/widget/measure/dispatch/widget_measure_event_occurences_nb()
+
+src/widget/measure/dispatch/widget_measure_event_occurences_dates()
+
+src/widget/measure/dispatch/widget_measure_event_occurences_situations()
+
+src/widget/measure/dispatch/widget_measure_time_elapsed_between_two_events()
+
+src/widget/measure/dispatch/widget_measure_third_event_occurences_in_between()
+
+src/fsm/dispatch/fsm_journal_event()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*measure_name
+
+
+
+
+
+
+
+
+
+
+
+ fsm_get_exec_edit()
+fsm_get_exec_edit fsm.h
+fsm.h fsm_get_exec_edit
+int fsm_get_exec_edit ( )
+
+some client pages (in particular "state" and "rules") will be displayed and behave differently depending on whether the fsm is in edit or run state.
+
+
+Any function which modifies the appearance or behavior of these pages must use this getter to access the choice_EXEC_EDIT value.
+
+see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT } The current int may be replaced by a boolean . TODO
+
+Since
+
+2024-06
+
+See also
+
+src/widget/one_rule/dispatch
+
+src/widget/state/dispatch * 2
+
+src/signal
+
+choice_EXEC_EDIT and
+
+include/fsm/enum fsm_enum_exec_edit {}
+
+Returns
+
+choice_EXEC_EDIT
+
+
+
+
+ fsm_get_preferences_state()
+fsm_get_preferences_state fsm.h
+fsm.h fsm_get_preferences_state
+bool fsm_get_preferences_state ( )
+
+getter for the static boolean: 'preferences_have_been_modified'
+
+
+Since
+
+2024-08
+
+See also
+
+TODO A function must obtain this boolean when it stores the current state of the fsm (including preferences) before closing the current session.
+
+Returns
+
+preferences_have_been_modified
+
+
+
+
+ fsm_get_state_rules_data()
+fsm_get_state_rules_data fsm.h
+fsm.h fsm_get_state_rules_data
+int fsm_get_state_rules_data ( )
+
+The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data.
+
+
+To each value is associated a different page and different possible behaviors. Any function that modifies the client window must get this value.
+
+see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA }
+
+Since
+
+2024-06
+
+See also
+
+src/widget/topbar/left
+
+src/signal
+
+Returns
+
+choice_STATE_RULES_DATA
+
+
+
+
+ fsm_init()
+fsm_init fsm.h
+fsm.h fsm_init
+void fsm_init (char * initial_message_from_main)
+
+fsm init is the first function called by main.c It initiates the journal and the four lists: 'measures', 'results', 'displayables results' and 'preferences'.
+
+
+The items selected in these lists define the current state of the fsm.
+
+Since
+
+2024-08
+
+See also
+
+src/main/main()
+
+src/journal/fsm_journal_init()
+
+src/fsm/dispatch/fsm_journal_event()
+
+src/fsm/measures/manager/fsm_list_init_measures()
+
+src/fsm/results/manager/fsm_list_init_results()
+
+src/fsm/preferences/manager/fsm_list_init_displayables()
+
+src/fsm/preferences/manager/fsm_list_init_preferences()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*initial_message_from_main
+
+
+
+
+
+
+
+
+
+
+
+ fsm_journal_clear()
+fsm_journal_clear fsm.h
+fsm.h fsm_journal_clear
+void fsm_journal_clear ( fsm_struct_journal * jj, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_event()
+fsm_journal_event fsm.h
+fsm.h fsm_journal_event
+void fsm_journal_event (int severity, int source, const char * file_source, const char * function_source, const char * string_value)
+
+It is mandatory for any event to call this function to be published in the journal.
+
+
+Before publication, a filter can be applied here (and only here) to select only some events of interest (during debugging, for example).
+
+If there are too many events, a filter can be applied here to select a few interesting events for publication in the log.
+
+This filter can operate on any the following five parameters: severity, source, *file_source, *function_source, *string_value. See also
+
+below (params)
+
+Simple filters (on a single parameter) can be combined using the logical operators 'and' and 'or' and parentheses.
+
+Use: $ grep -r "fsm_journal_event" to confirm the callergraph calls.
+
+Since
+
+2024-08
+
+See also
+
+ src/journal.c/fsm_journal_push_front()
+
+src/main/main()
+
+src/widget/topbar/modal.c
+
+src/widget/topbar/right.c
+
+src/widget/topbar/dialog.c
+
+src/widget/topbar/left.c
+
+ src/widget/topbar/dispatch.c * 3
+
+src/widget/one_rule/dispatch.c
+
+ src/widget/one_rule/algebra/conditions.c * 2
+
+src/widget/measure/dispatch.c
+
+ src/widget/dispatch.c * 3
+
+src/widget/all_rules/dispatch.c
+
+ src/fsm/preferences/manager.c * 8
+
+ src/fsm/measures/manager.c * 2
+
+src/fsm/measures/tools_list.c * 4
+
+ src/fsm/dispatch.c * 10
+
+ src/fsm/results/manager.c
+
+src/util/tree.c
+
+ src/signal.c * 38
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+severity
+<>
+
+
+
+
+
+
+
+ See also
+
+enum fsm_enum_journal_severity in include/fsm.h 'severity' is a pre-defined value that must be associated to each event. It ranges from zero to six : CRITICAL ERROR WARNING INFO MESSAGE DEBUG SPEW 0 1 2 3 4 5 6
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+source
+<>
+
+
+
+
+
+
+
+ See also
+
+enum fsm_enum_journal_source in include/fsm.h 'source' is a pre-defined value that can be associated to each event. It is not mandatory. It can be set to 'NULL'.
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*file_source
+<> the name of the file that emits the event.
+
+
+
+*function_source
+<> the function that emits the event.
+
+
+
+*string_value
+<> any value that can qualify the event and provides useful information when reading the log.
+
+
+
+
+
+
+
+
+
+
+ fsm_journal_init()
+fsm_journal_init fsm.h
+fsm.h fsm_journal_init
+void fsm_journal_init ( fsm_struct_journal * jj)
+
+2024-09-22 What types of events should be reported ? (fsm, widgets, ... ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ?
+
+
+date clé (rank) fichier source fonction source +/- valeur time_t current_time = time(NULL);
+ Check if the time retrieval was successful if (current_time == ((time_t)-1)) printf("Error getting current time.\n"); Convert to local time format and print printf(" Current timestamp: %ld %s\n", current_time, message); printf(" Current time: %s", ctime(¤t_time));
+
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_length()
+fsm_journal_length fsm.h
+fsm.h fsm_journal_length
+int fsm_journal_length ( fsm_struct_journal jj)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_pop_back()
+fsm_journal_pop_back fsm.h
+fsm.h fsm_journal_pop_back
+long fsm_journal_pop_back ( fsm_struct_journal * jj, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_publication_request()
+fsm_journal_publication_request fsm.h
+fsm.h fsm_journal_publication_request
+void fsm_journal_publication_request ( )
+
+The fsm_journal_publication_request() is called only once, by main(), just after closing the app and before ending the program.
+
+
+This is to guarantee the chronological order of the events in the journal.
+
+The log is modified for each event but events can be send asynchronously. This is why the journal is only published once, before the end of "main()", Its chronological order is therefore guaranteed.
+
+ src/journal.c/fsm_journal_publish() (called here) is the last function of the program to be executed.
+
+The fsm_struct_journal (gg_logs) is a static instance in this file. Therefore, all the functions that read or write it are in this file. This is to avoid uncontrolled operations on it.
+
+Since
+
+2024-08
+
+See also
+
+src/main/main()
+
+src/journal/fsm_journal_publish()
+
+
+
+
+ fsm_journal_publish()
+fsm_journal_publish fsm.h
+fsm.h fsm_journal_publish
+void fsm_journal_publish ( fsm_struct_journal jj)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_push_front()
+fsm_journal_push_front fsm.h
+fsm.h fsm_journal_push_front
+void fsm_journal_push_front ( fsm_struct_journal * jj, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_journal_seek()
+fsm_journal_seek fsm.h
+fsm.h fsm_journal_seek
+void fsm_journal_seek ( fsm_struct_journal jj, long usec, const char * file_source, const char * function_source, const char * string_value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+ return
+
+
+ fsm_list_init_displayables()
+fsm_list_init_displayables fsm.h
+fsm.h fsm_list_init_displayables
+void fsm_list_init_displayables ( )
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+ fsm_list_init_measures()
+fsm_list_init_measures fsm.h
+fsm.h fsm_list_init_measures
+void fsm_list_init_measures ( )
+Since
+
+2024-09
+
+See also
+
+src/fsm/dispatch/fsm_init()
+
+
+
+
+ fsm_list_init_preferences()
+fsm_list_init_preferences fsm.h
+fsm.h fsm_list_init_preferences
+void fsm_list_init_preferences ( )
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+ fsm_reset_all_situations_values()
+fsm_reset_all_situations_values fsm.h
+fsm.h fsm_reset_all_situations_values
+void fsm_reset_all_situations_values (int value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+value
+
+
+
+
+
+
+
+
+
+
+
+ fsm_rule_trig_measure()
+fsm_rule_trig_measure fsm.h
+fsm.h fsm_rule_trig_measure
+void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)
+Since
+
+2024-09
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+rule_id
+
+
+
+
+object_id
+
+
+
+
+measure_id
+
+
+
+
+
+
+
+
+
+
+
+ fsm_set_exec_edit()
+fsm_set_exec_edit fsm.h
+fsm.h fsm_set_exec_edit
+void fsm_set_exec_edit (int choice)
+
+setter for the static value: 'choice_STATE_RULES_DATA' (in this file)
+
+
+see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT }
+
+Since
+
+2024-08
+
+See also
+
+src/signal * 2
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+choice
+< a boolean value which can be "EXEC" or "EDIT"
+
+
+
+
+
+
+
+
+
+
+ fsm_set_preferences_modified()
+fsm_set_preferences_modified fsm.h
+fsm.h fsm_set_preferences_modified
+void fsm_set_preferences_modified (bool value)
+
+setter for the static boolean: 'preferences_have_been_modified'
+
+
+Since
+
+2024-08
+
+See also
+
+TODO To be used by any function that modifies the current user preferences
+
+ fsm_journal_event()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+value
+= TRUE if preferences_have_been_modified.
+
+
+
+
+
+
+
+
+
+
+ fsm_set_state_rules_data()
+fsm_set_state_rules_data fsm.h
+fsm.h fsm_set_state_rules_data
+void fsm_set_state_rules_data (int choice)
+
+setter for the static value: 'choice_STATE_RULES_DATA' (in this file)
+
+
+see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA } Today (2024-10) the initial page is set to 'SYNTH'. See also
+
+line 292 choice_STATE_RULES_DATA = SYNTH; NB This choice can be temporarily modified for debugging purpose:
+
+end of the function: fsm/dispatch.c window_design_topbar_left()
+
+Since
+
+2024-08
+
+See also
+
+src/signal * 4
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+choice
+
+
+
+
+
+
+
+
+
+
+
+ fsm_set_store_restore_reset()
+fsm_set_store_restore_reset fsm.h
+fsm.h fsm_set_store_restore_reset
+void fsm_set_store_restore_reset (int choice, int value)
+Date
+
+
+
+Author
+
+
+
+See also
+
+
+
+
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+choice
+
+
+
+
+value
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/docbook/dd/d0e/structgraphics__stack__t.xml b/doc/docbook/dd/d0e/structgraphics__stack__t.xml
index 4485a4c..b49c349 100644
--- a/doc/docbook/dd/d0e/structgraphics__stack__t.xml
+++ b/doc/docbook/dd/d0e/structgraphics__stack__t.xml
@@ -117,5 +117,5 @@
Structure describing a gl_area and its parameters, used to create a table of Gem-graph client current gl_areas.
The documentation for this struct was generated from the following file:
-include/graphics.h
+include/ graphics.h
diff --git a/doc/docbook/df/d05/structslist.xml b/doc/docbook/df/d05/structslist.xml
index a445930..c22298e 100644
--- a/doc/docbook/df/d05/structslist.xml
+++ b/doc/docbook/df/d05/structslist.xml
@@ -29,5 +29,5 @@
phantom documentation used to test the functioning of doxygen
The documentation for this struct was generated from the following file:
-include/util.h
+include/ util.h
diff --git a/doc/docbook/df/d05/widget_8h.xml b/doc/docbook/df/d05/widget_8h.xml
new file mode 100644
index 0000000..85c7076
--- /dev/null
+++ b/doc/docbook/df/d05/widget_8h.xml
@@ -0,0 +1,567 @@
+
+
+include/widget.h File Reference
+include/widget.h
+
+
+widgets management header
+
+
+#include <gtk-4.0/gtk/gtk.h>
+ Classes
+
+ struct TreeNode_t
+
+phantom documentation used to test the functioning of doxygen
+
+
+
+
+ Macros
+
+ #define W_MY_SCREEN 1920
+
+ #define H_MY_SCREEN 1000
+
+ #define W_TEXT_WINDOW 550
+
+ #define H_TEXT_WINDOW H_MY_SCREEN
+
+ #define W_TREE 160
+
+ #define W_DO_UNDO_REDO_BOX 1300
+
+ #define W_XYZ_BOX 62
+
+ #define H_XYZ_BOX 200
+
+ #define H_E_COLI 760
+
+ #define H_OBJECTS_SITUATIONS 130
+
+ #define W_COMPARATOR 64
+
+ #define W_RULES_USE 90
+
+ #define W_IMAGE_800 800
+
+ #define W_IMAGE_100 100
+
+ #define ALL_VS_SELECTED 340
+
+ #define H_PARTITION_SYNTH 1600
+
+ #define W_PARTITION_SYNTH 400
+
+ #define PARTITION_STATE_TOP 600
+
+ #define PARTITION_SPACE_VS_CONTROLS_1 920
+
+ #define PARTITION_SPACE_VS_CONTROLS_2 800
+
+ #define PARTITION_SPACE_VS_CAMERA_IN_STATE 1850
+
+ #define PARTITION_SPACE_VS_CAMERA_IN_SYNTH 1560
+
+ #define LIST_W 190
+
+ #define LIST_H 114
+
+ #define H_PARTITION_RESULTS 140
+
+
+
+
+ Functions
+
+ GtkWindow * widget_get_main_window ()
+
+getter
+
+ GtkWindow * widget_get_dialog_window ()
+
+getter
+
+ GtkWindow * widget_get_text_window ()
+
+getter
+
+ void widget_design_main_window (GtkWindow *main_window, GtkApplication *app)
+
+ void widget_design_dialog_window (GtkWindow *main_window, GtkWindow *dialog_window)
+
+ void widget_design_text_window (GtkWindow *main_window, GtkWindow *text_window)
+
+ const char * widget_get_btt_label_synth ()
+
+ const char * widget_get_btt_label_state ()
+
+ const char * widget_get_btt_label_rules ()
+
+ const char * widget_get_btt_label_data ()
+
+ void window_design_topbar_left (GtkWidget *header_bar)
+
+ void window_design_topbar_right (GtkWidget *header_bar, GtkApplication *app)
+
+ void * widget_get_page_synth ()
+
+ void * widget_get_page_state ()
+
+ void * widget_get_page_data ()
+
+ void * widget_get_page_measure ()
+
+ void * widget_get_page_engine ()
+
+ void * widget_get_time_dependent ()
+
+ void * widget_get_space_vs_non_time_dependent ()
+
+ void * widget_get_non_time_dependent ()
+
+ void * widget_get_space_view (int partition_space_vs_camera)
+
+ void * widget_get_graph_view_control ()
+
+ void * widget_get_space_edit_control ()
+
+ void * widget_get_sequence_control ()
+
+ void widget_set_situations_value (int value)
+
+ void widget_set_objects_value (int rank, int value)
+
+ int widget_get_object_transparency (int i)
+
+ void widget_reset_XYZ_in_state_pane ()
+
+ void widget_reset_XYZ_scrollbars_rule ()
+
+ void widget_reset_XYZ_scrollbars_state ()
+
+ void widget_reset_XYZ_scrollbars_synth ()
+
+ void * widget_get_pane_all_rules_left ()
+
+ void * widget_get_pane_selected_rule_right ()
+
+ void * widget_get_rules_pilot_box ()
+
+ void * widget_get_rules_tree_tools ()
+
+ void * widget_get_rules_use ()
+
+ void * widget_get_selected_rule ()
+
+ void * widget_get_rule_edition_tools ()
+
+ void * widget_get_rule_investigation_tools ()
+
+ void * widget_get_selected_rule_algebra ()
+
+Provides the three lists needed to describe a rule algebraically.
+
+ void * widget_get_selected_rule_geometry ()
+
+ void * widget_get_selected_rule_conditions_list_btt ()
+
+Builds and presents the conditions list of a rule.
+
+ void * widget_get_selected_rule_assignations_list_btt ()
+
+Presents the list of all the elementary actions (assignments) performed when the rule is applied.
+
+ void * widget_get_selected_rule_identity_btt ()
+
+Hosts a list of character strings that can be combined to provide a "human readable" rule identifier.
+
+ GtkEntry widget_set_item_text (GtkWidget *list_box, const char *text, bool editable)
+
+Format an entry (a text item) in a list.
+
+ void * widget_get_selected_rule_camera ()
+
+ void * widget_get_selected_rule_before_after ()
+
+ void * widget_get_results_box_organize ()
+
+ void * widget_get_results_box_display ()
+
+ void * widget_get_results_box_time ()
+
+ struct TreeNode_t * widget_create_user_rules_tree_node (const gchar *text)
+
+ void widget_add_tree_child_node (struct TreeNode_t *parent, struct TreeNode_t *child)
+
+ void * widget_get_user_rules_tree ()
+
+ void * widget_get_text_from_address (gchar *text_name)
+
+ char * widget_get_address_text_theory ()
+
+return "./data/text/théorie.txt"
+
+ char * widget_get_address_text_practice ()
+
+return "./data/text/pratique.txt"
+
+ char * widget_get_address_text_alpha_index ()
+
+return "./alphabetic_index.all"
+
+ void * widget_get_an_impression_of_what_a_rules_comparator_could_be ()
+
+phantom documentation used to test the functioning of doxygen
+
+ void widget_let_us_create_a_complex_useless_and_expensive_tree (struct TreeNode_t *tree_root)
+
+ void * widget_measure_new ()
+
+ void * widget_measure_do_select_rules_first ()
+
+ void * widget_measure_do_depends_on_one_or_two_events ()
+
+ void * widget_measure_do_depends_on_a_single_event ()
+
+ void * widget_measure_do_depends_on_two_events ()
+
+ void * widget_measure_do_select_a_second_rules_set ()
+
+ void * widget_measure_do_choose_an_event_type ()
+
+ void * widget_measure_do_correlate ()
+
+ void * widget_measure_do_insert_in_measurements_list ()
+
+ void * widget_measure_do_end_creation_of_measurement_process ()
+
+ void * widget_measure_event_occurences_nb ()
+
+ void * widget_measure_event_occurences_dates ()
+
+ void * widget_measure_event_occurences_situations ()
+
+ void * widget_measure_time_elapsed_between_two_events ()
+
+ void * widget_measure_third_event_occurences_in_between ()
+
+
+
+
+Detailed Description
+
+widgets management header
+
+This file is part of Gem-graph.
+
+
+Function Documentation
+
+ widget_design_main_window()
+widget_design_main_window widget.h
+widget.h widget_design_main_window
+void widget_design_main_window (GtkWindow * main_window, GtkApplication * app)
+
+
+
+Parameters
+
+
+
+
+
+
+
+*main_window
+
+
+
+
+*app
+
+
+
+
+
+
+
+
+
+
+
+ widget_get_dialog_window()
+widget_get_dialog_window widget.h
+widget.h widget_get_dialog_window
+GtkWindow * widget_get_dialog_window ( )
+
+getter
+
+
+Since
+
+2024-07
+
+See also
+
+src/signal
+
+Returns
+
+dialog_window
+
+
+
+
+ widget_get_main_window()
+widget_get_main_window widget.h
+widget.h widget_get_main_window
+GtkWindow * widget_get_main_window ( )
+
+getter
+
+
+Since
+
+2024-07
+
+See also
+
+src/signal
+
+Returns
+
+main_window
+
+
+
+
+ widget_get_selected_rule_algebra()
+widget_get_selected_rule_algebra widget.h
+widget.h widget_get_selected_rule_algebra
+void * widget_get_selected_rule_algebra ( )
+
+Provides the three lists needed to describe a rule algebraically.
+
+
+The algebraic definition of a rule comprises three types of character strings organised into three lists:
+
+conditions
+
+assignations
+
+name (a set of identity elements)
+
+
+
+Since
+
+2024-08
+
+See also
+
+src/widget/one_rule/algebra/conditions()
+
+src/widget/one_rule/algebra/assignations()
+
+src/widget/one_rule/algebra/identity()
+
+src/widget/one_rule/dispatch()
+
+
+
+
+ widget_get_selected_rule_assignations_list_btt()
+widget_get_selected_rule_assignations_list_btt widget.h
+widget.h widget_get_selected_rule_assignations_list_btt
+void * widget_get_selected_rule_assignations_list_btt ( )
+
+Presents the list of all the elementary actions (assignments) performed when the rule is applied.
+
+
+Today, an arbitrary presentation with no link to the XML model and no verification of compliance with the meta-rules. (see below) TODO
+
+|- - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - - >
+
+This list groups all the elementary assignments of the rule. No assignment should be repeated or modified by other assignments. (== a unique assignment per address in rule workspace) Completeness is not required. (== there does not need to be one assignment per address in the rule workspace)
+
+< - - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - -|
+
+Since
+
+2024-08
+
+See also
+
+src/widget/one_rule/algebra/utilities/widget_set_item_text()
+
+src/fsm/dispatch/fsm_journal_event() < TODO (for each item ?)
+
+src/widget/one_rule/algebra/dispatch()
+
+Returns
+
+the assignations list
+
+
+
+
+ widget_get_selected_rule_conditions_list_btt()
+widget_get_selected_rule_conditions_list_btt widget.h
+widget.h widget_get_selected_rule_conditions_list_btt
+void * widget_get_selected_rule_conditions_list_btt ( )
+
+Builds and presents the conditions list of a rule.
+
+
+This list sets out all the conditions that the rule must meet in order to be applied.
+
+Today, an arbitrary presentation with no link to the XML model and no verification of compliance with the meta-rules. (see below) TODO
+
+|- - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - - >
+
+No conditions should be repeated. No condition may contradict another (== a unique condition per address in rule workspace) Completeness is not required (== there does not need to be one condition per address in the rule workspace)
+
+(NB The following applies to server workers) Two rules cannot share the same set of conditions. If several rules apply to the same set of local conditions - which can happen if several different actions are possible from the same situation - they must each include an additional condition determining their probability of execution in the event of a conflict. If two rules share the same local set of conditions, they must both be evaluated. If all the conditions of one rule are included in the conditions of another rule, then the other rule must be evaluated first.
+
+< - - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - -|
+
+Since
+
+2024-08
+
+See also
+
+src/widget/one_rule/algebra/utilities/widget_set_item_text()
+
+src/fsm/dispatch/fsm_journal_event() < TODO (for each item ?)
+
+src/widget/one_rule/algebra/dispatch()
+
+Returns
+
+the conditions list
+
+
+
+
+ widget_get_selected_rule_identity_btt()
+widget_get_selected_rule_identity_btt widget.h
+widget.h widget_get_selected_rule_identity_btt
+void * widget_get_selected_rule_identity_btt ( )
+
+Hosts a list of character strings that can be combined to provide a "human readable" rule identifier.
+
+
+This list can also contain non-mandatory elements.
+
+Each rule can have a specific "human readable" name chosen by its designer. This name can be used to identify the rule. It is desirable for a unique name to be accepted and shared by as many users as possible.
+
+On the contrary, for the automaton, the identity of each rule is given exclusively by its set of conditions.
+
+Today, this function provides only an arbitrary presentation with no link to the XML model and no verification of compliance with the meta-rules. (see below) TODO
+
+|- - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - - >
+
+No item of the list should be repeated. No element describing the function of the rule can contradict another. All the elements required for identification by name must be present. Uniqueness is required (This name must be usable as a key). Non-mandatory elements can be added (comments, etc.).
+
+< - - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - -|
+
+Since
+
+2024-08
+
+See also
+
+src/widget/one_rule/algebra/utilities/widget_set_item_text()
+
+src/fsm/dispatch/fsm_journal_event() < TODO (for each item ?)
+
+src/widget/one_rule/algebra/dispatch/gtk_box_append()
+
+Returns
+
+rule identity
+
+
+
+
+ widget_get_text_window()
+widget_get_text_window widget.h
+widget.h widget_get_text_window
+GtkWindow * widget_get_text_window ( )
+
+getter
+
+
+Since
+
+2024-07
+
+See also
+
+src/signal
+
+Returns
+
+text_window
+
+
+
+
+ widget_set_item_text()
+widget_set_item_text widget.h
+widget.h widget_set_item_text
+GtkEntry widget_set_item_text (GtkWidget * list_box, const char * text, bool editable)
+
+Format an entry (a text item) in a list.
+
+
+Since
+
+2024-08
+
+See also
+
+src/widget/one_rule/algebra/conditions()
+
+src/widget/one_rule/algebra/assign()
+
+src/widget/one_rule/algebra/identity()
+
+
+
+
+Parameters
+
+
+
+
+
+
+
+*list_box
+
+
+
+
+*text
+
+
+
+
+editable
+
+
+
+
+
+
+ Returns
+
+*entry < a text item
+
+
+
+
+
diff --git a/doc/docbook/index.xml b/doc/docbook/index.xml
index 0b16a73..35fabf5 100644
--- a/doc/docbook/index.xml
+++ b/doc/docbook/index.xml
@@ -23,15 +23,34 @@
File Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/doxyfile b/doc/doxyfile
index 10aa7b7..3e1f6b0 100644
--- a/doc/doxyfile
+++ b/doc/doxyfile
@@ -1008,6 +1008,8 @@ INPUT_FILE_ENCODING =
FILE_PATTERNS = *.c \
*.h \
+ *.frag \
+ *.vert \
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
diff --git a/doc/rtfm/man3/@0.3 b/doc/rtfm/man3/@0.3
new file mode 100644
index 0000000..21477d1
--- /dev/null
+++ b/doc/rtfm/man3/@0.3
@@ -0,0 +1 @@
+.so man3/noname
diff --git a/doc/rtfm/man3/ALL_VS_SELECTED.3 b/doc/rtfm/man3/ALL_VS_SELECTED.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/ALL_VS_SELECTED.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/EAST.3 b/doc/rtfm/man3/EAST.3
new file mode 100644
index 0000000..8fd1a06
--- /dev/null
+++ b/doc/rtfm/man3/EAST.3
@@ -0,0 +1 @@
+.so man3/base.h.3
diff --git a/doc/rtfm/man3/FRAG_SHADER_FILE.3 b/doc/rtfm/man3/FRAG_SHADER_FILE.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/FRAG_SHADER_FILE.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/GEM_GRAPH_CLIENT_TYPE_WINDOW.3 b/doc/rtfm/man3/GEM_GRAPH_CLIENT_TYPE_WINDOW.3
new file mode 100644
index 0000000..dbc3062
--- /dev/null
+++ b/doc/rtfm/man3/GEM_GRAPH_CLIENT_TYPE_WINDOW.3
@@ -0,0 +1 @@
+.so man3/actions.c.3
diff --git a/doc/rtfm/man3/GL_TARGET_MAJOR_VERSION.3 b/doc/rtfm/man3/GL_TARGET_MAJOR_VERSION.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/GL_TARGET_MAJOR_VERSION.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/GL_TARGET_MINOR_VERSION.3 b/doc/rtfm/man3/GL_TARGET_MINOR_VERSION.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/GL_TARGET_MINOR_VERSION.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/H_E_COLI.3 b/doc/rtfm/man3/H_E_COLI.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_E_COLI.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/H_MY_SCREEN.3 b/doc/rtfm/man3/H_MY_SCREEN.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_MY_SCREEN.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/H_OBJECTS_SITUATIONS.3 b/doc/rtfm/man3/H_OBJECTS_SITUATIONS.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_OBJECTS_SITUATIONS.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/H_PARTITION_RESULTS.3 b/doc/rtfm/man3/H_PARTITION_RESULTS.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_PARTITION_RESULTS.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/H_PARTITION_SYNTH.3 b/doc/rtfm/man3/H_PARTITION_SYNTH.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_PARTITION_SYNTH.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/H_TEXT_WINDOW.3 b/doc/rtfm/man3/H_TEXT_WINDOW.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_TEXT_WINDOW.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/H_XYZ_BOX.3 b/doc/rtfm/man3/H_XYZ_BOX.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/H_XYZ_BOX.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/JOURNAL_LOG_MAX_LENGTH.3 b/doc/rtfm/man3/JOURNAL_LOG_MAX_LENGTH.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/JOURNAL_LOG_MAX_LENGTH.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/NADIR.3 b/doc/rtfm/man3/NADIR.3
new file mode 100644
index 0000000..8fd1a06
--- /dev/null
+++ b/doc/rtfm/man3/NADIR.3
@@ -0,0 +1 @@
+.so man3/base.h.3
diff --git a/doc/rtfm/man3/NORTH.3 b/doc/rtfm/man3/NORTH.3
new file mode 100644
index 0000000..8fd1a06
--- /dev/null
+++ b/doc/rtfm/man3/NORTH.3
@@ -0,0 +1 @@
+.so man3/base.h.3
diff --git a/doc/rtfm/man3/PARTITION_SPACE_VS_CAMERA_IN_STATE.3 b/doc/rtfm/man3/PARTITION_SPACE_VS_CAMERA_IN_STATE.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/PARTITION_SPACE_VS_CAMERA_IN_STATE.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/PARTITION_SPACE_VS_CAMERA_IN_SYNTH.3 b/doc/rtfm/man3/PARTITION_SPACE_VS_CAMERA_IN_SYNTH.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/PARTITION_SPACE_VS_CAMERA_IN_SYNTH.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/PARTITION_SPACE_VS_CONTROLS_1.3 b/doc/rtfm/man3/PARTITION_SPACE_VS_CONTROLS_1.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/PARTITION_SPACE_VS_CONTROLS_1.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/PARTITION_SPACE_VS_CONTROLS_2.3 b/doc/rtfm/man3/PARTITION_SPACE_VS_CONTROLS_2.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/PARTITION_SPACE_VS_CONTROLS_2.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/PARTITION_STATE_TOP.3 b/doc/rtfm/man3/PARTITION_STATE_TOP.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/PARTITION_STATE_TOP.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/SOUTH.3 b/doc/rtfm/man3/SOUTH.3
new file mode 100644
index 0000000..8fd1a06
--- /dev/null
+++ b/doc/rtfm/man3/SOUTH.3
@@ -0,0 +1 @@
+.so man3/base.h.3
diff --git a/doc/rtfm/man3/TEST.3 b/doc/rtfm/man3/TEST.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/TEST.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/VERTEX_SHADER_FILE.3 b/doc/rtfm/man3/VERTEX_SHADER_FILE.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/VERTEX_SHADER_FILE.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/WEST.3 b/doc/rtfm/man3/WEST.3
new file mode 100644
index 0000000..8fd1a06
--- /dev/null
+++ b/doc/rtfm/man3/WEST.3
@@ -0,0 +1 @@
+.so man3/base.h.3
diff --git a/doc/rtfm/man3/W_COMPARATOR.3 b/doc/rtfm/man3/W_COMPARATOR.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_COMPARATOR.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_DO_UNDO_REDO_BOX.3 b/doc/rtfm/man3/W_DO_UNDO_REDO_BOX.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_DO_UNDO_REDO_BOX.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_IMAGE_100.3 b/doc/rtfm/man3/W_IMAGE_100.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_IMAGE_100.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_IMAGE_800.3 b/doc/rtfm/man3/W_IMAGE_800.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_IMAGE_800.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_MY_SCREEN.3 b/doc/rtfm/man3/W_MY_SCREEN.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_MY_SCREEN.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_PARTITION_SYNTH.3 b/doc/rtfm/man3/W_PARTITION_SYNTH.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_PARTITION_SYNTH.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_RULES_USE.3 b/doc/rtfm/man3/W_RULES_USE.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_RULES_USE.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_TEXT_WINDOW.3 b/doc/rtfm/man3/W_TEXT_WINDOW.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_TEXT_WINDOW.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_TREE.3 b/doc/rtfm/man3/W_TREE.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_TREE.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/W_XYZ_BOX.3 b/doc/rtfm/man3/W_XYZ_BOX.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/W_XYZ_BOX.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/ZENITH.3 b/doc/rtfm/man3/ZENITH.3
new file mode 100644
index 0000000..8fd1a06
--- /dev/null
+++ b/doc/rtfm/man3/ZENITH.3
@@ -0,0 +1 @@
+.so man3/base.h.3
diff --git a/doc/rtfm/man3/action.h.3 b/doc/rtfm/man3/action.h.3
new file mode 100644
index 0000000..c18074b
--- /dev/null
+++ b/doc/rtfm/man3/action.h.3
@@ -0,0 +1,30 @@
+.TH "include/action.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/action.h \- actions header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBon_preferences_action\fP (GSimpleAction *action, GVariant *parameter, gpointer user_data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SH "Detailed Description"
+.PP
+actions header
+
+This file is part of Gem-graph\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/actions.c.3 b/doc/rtfm/man3/actions.c.3
new file mode 100644
index 0000000..d47c66c
--- /dev/null
+++ b/doc/rtfm/man3/actions.c.3
@@ -0,0 +1,37 @@
+.TH "src/actions.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+src/actions.c \- events management (actions) functions
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+
+.SS "Macros"
+
+.in +1c
+.ti -1c
+.RI "#define \fBGEM_GRAPH_CLIENT_TYPE_WINDOW\fP (gem_graph_client_window_get_type())"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBon_preferences_action\fP (GSimpleAction *action, GVariant *parameter, gpointer user_data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SH "Detailed Description"
+.PP
+events management (actions) functions
+
+This file is part of Gem-graph\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/base.h.3 b/doc/rtfm/man3/base.h.3
new file mode 100644
index 0000000..d2863e0
--- /dev/null
+++ b/doc/rtfm/man3/base.h.3
@@ -0,0 +1,85 @@
+.TH "include/base.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/base.h \- base header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "struct \fBarrow_t\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SS "Macros"
+
+.in +1c
+.ti -1c
+.RI "#define \fBEAST\fP 0"
+.br
+.ti -1c
+.RI "#define \fBWEST\fP 1"
+.br
+.ti -1c
+.RI "#define \fBZENITH\fP 2"
+.br
+.ti -1c
+.RI "#define \fBNADIR\fP 3"
+.br
+.ti -1c
+.RI "#define \fBSOUTH\fP 4"
+.br
+.ti -1c
+.RI "#define \fBNORTH\fP 5"
+.br
+.in -1c
+.SS "Enumerations"
+
+.in +1c
+.ti -1c
+.RI "enum { \fBX_AXIS\fP, \fBY_AXIS\fP, \fBZ_AXIS\fP, \fBN_AXIS\fP }"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+base header
+
+This file is part of Gem-graph\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/dispatch.c.3 b/doc/rtfm/man3/dispatch.c.3
index 4294cb2..0c51de8 100644
--- a/doc/rtfm/man3/dispatch.c.3
+++ b/doc/rtfm/man3/dispatch.c.3
@@ -1,62 +1,55 @@
-.TH "src/widget/one_rule/algebra/dispatch.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.TH "src/widget/topbar/dispatch.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-src/widget/one_rule/algebra/dispatch.c \- Gem-graph-client Algebra rules dispatcher\&.
+src/widget/topbar/dispatch.c \- Main window widgets dispatcher (topbar and six pages)
.SH SYNOPSIS
.br
.PP
-\fC#include '\&.\&./\&.\&./\&.\&./\&.\&./include/fsm\&.h'\fP
+\fC#include '\&.\&./\&.\&./\&.\&./include/base\&.h'\fP
.br
-\fC#include '\&.\&./\&.\&./\&.\&./\&.\&./include/widget\&.h'\fP
+\fC#include '\&.\&./\&.\&./\&.\&./include/signal\&.h'\fP
.br
-\fC#include '\&.\&./\&.\&./\&.\&./\&.\&./include/signal\&.h'\fP
+\fC#include '\&.\&./\&.\&./\&.\&./include/widget\&.h'\fP
+.br
+\fC#include '\&.\&./\&.\&./\&.\&./include/fsm\&.h'\fP
.br
.SS "Functions"
.in +1c
.ti -1c
-.RI "void * \fBwidget_get_selected_rule_algebra\fP ()"
+.RI "void \fBwidget_design_main_window\fP (GtkWindow *main_window, GtkApplication *app)"
.br
-.RI "Provides the three lists needed to describe a rule algebraically\&. "
+.ti -1c
+.RI "char * \fBwidget_get_address_text_theory\fP ()"
+.br
+.RI "return '\&./data/text/théorie\&.txt' "
+.ti -1c
+.RI "char * \fBwidget_get_address_text_practice\fP ()"
+.br
+.RI "return '\&./data/text/pratique\&.txt' "
+.ti -1c
+.RI "char * \fBwidget_get_address_text_alpha_index\fP ()"
+.br
+.RI "return '\&./alphabetic_index\&.all' "
.in -1c
.SH "Detailed Description"
.PP
-Gem-graph-client Algebra rules dispatcher\&.
+Main window widgets dispatcher (topbar and six pages)
+
-This file is part of Gem-graph\&.
-.PP
-It organizes the algebraic description of a rule\&.
.SH "Function Documentation"
.PP
-.SS "void * widget_get_selected_rule_algebra ()"
+.SS "void widget_design_main_window (GtkWindow * main_window, GtkApplication * app)"
.PP
-Provides the three lists needed to describe a rule algebraically\&. The algebraic definition of a rule comprises three types of character strings organised into three lists:
-.IP "\(bu" 2
-conditions
-.IP "\(bu" 2
-assignations
-.IP "\(bu" 2
-name (a set of identity elements)
-.PP
-.PP
-\fBSince\fP
+\fBParameters\fP
.RS 4
-2024-08
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-src/widget/one_rule/algebra/conditions()
-.PP
-src/widget/one_rule/algebra/assignations()
-.PP
-src/widget/one_rule/algebra/identity()
-.PP
-src/widget/one_rule/dispatch()
+\fI*main_window\fP
+.br
+\fI*app\fP
.RE
.PP
diff --git a/doc/rtfm/man3/draw.c.3 b/doc/rtfm/man3/draw.c.3
new file mode 100644
index 0000000..c1a6e4e
--- /dev/null
+++ b/doc/rtfm/man3/draw.c.3
@@ -0,0 +1,130 @@
+.TH "src/graphics/draw.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+src/graphics/draw.c \- graphics - general drawing functions
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include '\&.\&./\&.\&./include/base\&.h'\fP
+.br
+\fC#include '\&.\&./\&.\&./include/graphics\&.h'\fP
+.br
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBgraphics_draw_vertex\fP (const int stack_id, GLfloat x, GLfloat y, GLfloat z)"
+.br
+.RI "Writes values to describe a vertex at (x,y,z) intoq the vertex buffer\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_color\fP (const int stack_id, GLfloat r, GLfloat g, GLfloat b)"
+.br
+.RI "Writes values to describe a color (r,g,b) into the color buffer\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_line\fP (const int stack_id, GLuint a, GLuint b)"
+.br
+.RI "Writes values to describe a line from a to b into the line buffer\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_plan\fP (const int stack_id, GLuint a, GLuint b, GLuint c)"
+.br
+.RI "Writes values to describe an (a,b,c) plan (triangle) into the plan buffer\&. "
+.ti -1c
+.RI "void \fBgraphics_draw\fP (const int stack_id)"
+.br
+.RI "Draws the current buffer to a gl_area\&. "
+.in -1c
+.SH "Detailed Description"
+.PP
+graphics - general drawing functions
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "void graphics_draw (const int stack_id)"
+
+.PP
+Draws the current buffer to a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "void graphics_draw_color (const int stack_id, GLfloat r, GLfloat g, GLfloat b)"
+
+.PP
+Writes values to describe a color (r,g,b) into the color buffer\&. Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcolor\fP GLfloat(r,g,b)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "void graphics_draw_line (const int stack_id, GLuint a, GLuint b)"
+
+.PP
+Writes values to describe a line from a to b into the line buffer\&. Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLuint (a,b)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "void graphics_draw_plan (const int stack_id, GLuint a, GLuint b, GLuint c)"
+
+.PP
+Writes values to describe an (a,b,c) plan (triangle) into the plan buffer\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLuint (a,b,c)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "void graphics_draw_vertex (const int stack_id, GLfloat x, GLfloat y, GLfloat z)"
+
+.PP
+Writes values to describe a vertex at (x,y,z) intoq the vertex buffer\&. Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLfloat(x,y,z)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/free_stack_slot.3 b/doc/rtfm/man3/free_stack_slot.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/free_stack_slot.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/free_stack_slot_size.3 b/doc/rtfm/man3/free_stack_slot_size.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/free_stack_slot_size.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/fsm.h.3 b/doc/rtfm/man3/fsm.h.3
new file mode 100644
index 0000000..c20771b
--- /dev/null
+++ b/doc/rtfm/man3/fsm.h.3
@@ -0,0 +1,894 @@
+.TH "include/fsm.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/fsm.h \- fsm (Finite State Machine) management header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "struct \fBfsm_struct_journal_unit\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBfsm_struct_journal\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBfsm_struct_list_tool\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBfsm_struct_list_data\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBfsm_struct_list_disp\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SS "Macros"
+
+.in +1c
+.ti -1c
+.RI "#define \fBJOURNAL_LOG_MAX_LENGTH\fP 255"
+.br
+.ti -1c
+.RI "#define \fBn_rules\fP 128"
+.br
+.ti -1c
+.RI "#define \fBn_objects\fP 32"
+.br
+.ti -1c
+.RI "#define \fBn_situations\fP 128"
+.br
+.in -1c
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef struct \fBfsm_struct_journal_unit\fP \fBfsm_struct_journal_unit\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "typedef struct \fBfsm_struct_list_tool\fP \fBfsm_struct_list_tool\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "typedef struct \fBfsm_struct_list_data\fP \fBfsm_struct_list_data\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "typedef struct \fBfsm_struct_list_disp\fP \fBfsm_struct_list_disp\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SS "Enumerations"
+
+.in +1c
+.ti -1c
+.RI "enum \fBfsm_enum_journal_severity\fP { \fBCRITICAL\fP, \fBERROR\fP, \fBWARNING\fP, \fBINFO\fP, \fBMESSAGE\fP, \fBDEBUG\fP, \fBSPEW\fP }"
+.br
+.ti -1c
+.RI "enum \fBfsm_enum_journal_source\fP { \fBSOURCE\fP, \fBTARGET\fP, \fBJOURNAL\fP, \fBFSM\fP, \fBPREFER\fP, \fBMAIN\fP, \fBAPP\fP, \fBWIDGETS\fP, \fBSIGNAL\fP, \fBMAIN_WINDOW\fP, \fBDIALOG_WINDOW\fP, \fBMODAL_WINDOW\fP, \fBTEXT_WINDOW\fP, \fBAUTO_NOTIFICATION\fP, \fBTOPBAR\fP, \fBTOPBAR_LEFT\fP, \fBTOPBAR_RIGHT\fP, \fBTOPBAR_CENTER\fP, \fBSYNTH_PAGE\fP, \fBSTATE_PAGE\fP, \fBRULES_PAGE\fP, \fBMEASURES_PAGE\fP, \fBRESULTS_PAGE\fP, \fBSenumYNTH_GLAREA\fP, \fBSYNTH_ALL_RESULTS\fP, \fBSYNTH_TIME_DEP_RESULTS\fP, \fBSYNTH_TIME_INDEP_RESULTS\fP, \fBSTATE_TOP\fP, \fBSTATE_BOTTOM\fP, \fBSTATE_GLAREA\fP, \fBSTATE_CAMERA\fP, \fBRULE_GEOMETRY\fP, \fBRULE_GLAREA\fP, \fBRULE_CAMERA\fP, \fBRULE_ALGEBRA\fP, \fBRULE_CONDITION\fP, \fBRULE_ASSIGN\fP, \fBRULE_ID\fP, \fBRULES_TREE\fP, \fBRULES_COMPARE\fP, \fBRULES_USE\fP, \fBMEASURES_TOOLS\fP, \fBMEASURES__ACTIVITY\fP, \fBMEASURES__DISPLAY\fP, \fBRESULTS\fP, \fBTIME_DEP_RESULTS\fP, \fBTIME_INDEP_RESULTS\fP, \fBWIDGET\fP, \fBBUTTON\fP, \fBSCROLL\fP, \fBGLAREA\fP, \fBTEXT\fP, \fBLABEL\fP, \fBTREE\fP, \fBSLIDER\fP, \fBEXPANDER\fP, \fBENTRY\fP, \fBSWITCH_STATE_RULES_DATA\fP, \fBSLIDER_X\fP, \fBSLIDER_Y\fP, \fBSLIDER_Z\fP, \fBSLIDER_A\fP, \fBSLIDER_B\fP, \fBSLIDER_C\fP }"
+.br
+.ti -1c
+.RI "enum \fBfsm_enum_exec_edit\fP { \fBEXEC\fP, \fBEDIT\fP }"
+.br
+.ti -1c
+.RI "enum \fBfsm_enum_state_rules_data\fP { \fBSYNTH\fP, \fBSTATE\fP, \fBRULES\fP, \fBDATA\fP }"
+.br
+.ti -1c
+.RI "enum \fBfsm_enum_store_restore_reset\fP { \fBSTORE\fP, \fBRESTORE\fP, \fBRESET\fP }"
+.br
+.ti -1c
+.RI "enum \fBfsm_enum_measure_type\fP { \fBDATE_RULE_EXEC\fP, \fBRULE_EXEC_NB\fP, \fBOBJECT_NB\fP, \fBELAPSED_TIME\fP }"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBfsm_journal_publish\fP (\fBfsm_struct_journal\fP jj)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_init\fP (\fBfsm_struct_journal\fP *jj)"
+.br
+.RI "2024-09-22 What types of events should be reported ? (fsm, widgets, \&.\&.\&. ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ? "
+.ti -1c
+.RI "void \fBfsm_journal_push_front\fP (\fBfsm_struct_journal\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_clear\fP (\fBfsm_struct_journal\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "long \fBfsm_journal_pop_back\fP (\fBfsm_struct_journal\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "int \fBfsm_journal_length\fP (\fBfsm_struct_journal\fP jj)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_seek\fP (\fBfsm_struct_journal\fP jj, long usec, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_publication_request\fP ()"
+.br
+.RI "The \fBfsm_journal_publication_request()\fP is called only once, by \fBmain()\fP, just after closing the app and before ending the program\&. "
+.ti -1c
+.RI "void \fBfsm_journal_event\fP (int severity, int source, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.RI "It is mandatory for any event to call this function to be published in the journal\&. "
+.ti -1c
+.RI "void \fBfsm_init\fP (char *message)"
+.br
+.RI "fsm init is the first function called by \fBmain\&.c\fP It initiates the journal and the four lists: 'measures', 'results', 'displayables results' and 'preferences'\&. "
+.ti -1c
+.RI "void \fBfsm_list_init_preferences\fP ()"
+.br
+.ti -1c
+.RI "void \fBfsm_list_init_measures\fP ()"
+.br
+.ti -1c
+.RI "void \fBfsm_list_init_results\fP ()"
+.br
+.ti -1c
+.RI "void \fBfsm_list_init_displayables\fP ()"
+.br
+.ti -1c
+.RI "int \fBfsm_get_exec_edit\fP ()"
+.br
+.RI "some client pages (in particular 'state' and 'rules') will be displayed and behave differently depending on whether the fsm is in edit or run state\&. "
+.ti -1c
+.RI "int \fBfsm_get_state_rules_data\fP ()"
+.br
+.RI "The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data\&. "
+.ti -1c
+.RI "void \fBfsm_set_exec_edit\fP (int value)"
+.br
+.RI "setter for the static value: 'choice_STATE_RULES_DATA' (in this file) "
+.ti -1c
+.RI "void \fBfsm_set_state_rules_data\fP (int value)"
+.br
+.RI "setter for the static value: 'choice_STATE_RULES_DATA' (in this file) "
+.ti -1c
+.RI "void \fBfsm_set_store_restore_reset\fP (int choice, int value)"
+.br
+.ti -1c
+.RI "bool \fBfsm_get_preferences_state\fP ()"
+.br
+.RI "getter for the static boolean: 'preferences_have_been_modified' "
+.ti -1c
+.RI "void \fBfsm_set_preferences_modified\fP (bool value)"
+.br
+.RI "setter for the static boolean: 'preferences_have_been_modified' "
+.ti -1c
+.RI "void \fBfsm_add_measure\fP (char *measure_name)"
+.br
+.ti -1c
+.RI "void \fBfsm_add_result\fP (char *result_name)"
+.br
+.ti -1c
+.RI "void \fBfsm_add_displayable\fP (char *displayable_name)"
+.br
+.ti -1c
+.RI "void \fBfsm_reset_all_situations_values\fP (int value)"
+.br
+.ti -1c
+.RI "void \fBfsm_list_tools_insert\fP (\fBfsm_struct_list_tool\fP **tl, int value)"
+.br
+.ti -1c
+.RI "int \fBfsm_list_tools_pop\fP (\fBfsm_struct_list_tool\fP **tl)"
+.br
+.ti -1c
+.RI "int \fBfsm_list_tools_length\fP (\fBfsm_struct_list_tool\fP *tl)"
+.br
+.ti -1c
+.RI "void \fBfsm_list_tools_clear\fP (\fBfsm_struct_list_tool\fP **tl)"
+.br
+.ti -1c
+.RI "void \fBfsm_list_tools_view\fP (\fBfsm_struct_list_tool\fP *tl)"
+.br
+.ti -1c
+.RI "void \fBfsm_list_tools_test\fP ()"
+.br
+.ti -1c
+.RI "void \fBfsm_rule_trig_measure\fP (int rule_id, int object_id, int measure_id)"
+.br
+.ti -1c
+.RI "void \fBfsm_add_data\fP (\fBfsm_struct_list_data\fP d, int *p_data, int *p_target)"
+.br
+.ti -1c
+.RI "int \fBfsm_get_data\fP (\fBfsm_struct_list_data\fP d, int from, int to)"
+.br
+.ti -1c
+.RI "void \fBfsm_remove_data\fP (\fBfsm_struct_list_data\fP d, int *p_data)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+fsm (Finite State Machine) management header
+
+This file is part of Gem-graph\&.
+.SH "Enumeration Type Documentation"
+.PP
+.SS "enum \fBfsm_enum_journal_severity\fP"
+
+.IP "\(bu" 2
+* * * - J O U R N A L M E T A R U L E S - * * * *
+.PP
+ref: sudo cat /var/log/messages
+.PP
+structure d'un log:
+.IP "\(bu" 2
+date
+.IP "\(bu" 2
+rang (n° d'ordre)
+.IP "\(bu" 2
+fichier
+.IP "\(bu" 2
+fonction
+.IP "\(bu" 2
+valeur, paramètre, descriptif, contexte,\&.\&.\&. (tout ce qui peut contribuer à améliorer la compréhension du journal) any value that can qualify the event and provides useful information when reading the log\&.
+.PP
+.PP
+.PP
+.PP
+Un seul \fBfsm_journal_event()\fP par fonction ? sauf si cette fonction génère plusieurs autres fonctions d'intérêt ?
+.PP
+S'il y a deux \fBfsm_journal_event()\fP (begin / end) dans une fonction, ils doivent avoir la même étiquette (les mêmes valeurs) : SEVERITY & SOURCE
+.PP
+.IP "\(bu" 2
+* * * - J O U R N A L M E T A R U L E S - * * *
+.br
+
+.PP
+
+.SH "Function Documentation"
+.PP
+.SS "void fsm_add_displayable (char * displayable_name)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIdisplayable_name\fP
+.RE
+.PP
+
+.SS "void fsm_add_measure (char * measure_name)"
+
+.PP
+\fBSince\fP
+.RS 4
+2024-09
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/measure/dispatch/widget_measure_event_occurences_nb()
+.PP
+src/widget/measure/dispatch/widget_measure_event_occurences_dates()
+.PP
+src/widget/measure/dispatch/widget_measure_event_occurences_situations()
+.PP
+src/widget/measure/dispatch/widget_measure_time_elapsed_between_two_events()
+.PP
+src/widget/measure/dispatch/widget_measure_third_event_occurences_in_between()
+.PP
+src/fsm/dispatch/fsm_journal_event()
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI*measure_name\fP
+.RE
+.PP
+
+.SS "int fsm_get_exec_edit ()"
+
+.PP
+some client pages (in particular 'state' and 'rules') will be displayed and behave differently depending on whether the fsm is in edit or run state\&. Any function which modifies the appearance or behavior of these pages must use this getter to access the choice_EXEC_EDIT value\&.
+.PP
+see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT } The current int may be replaced by a boolean \&. TODO
+.PP
+\fBSince\fP
+.RS 4
+2024-06
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/one_rule/dispatch
+.PP
+src/widget/state/dispatch * 2
+.PP
+src/signal
+.PP
+choice_EXEC_EDIT and
+.PP
+include/fsm/enum fsm_enum_exec_edit {}
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+choice_EXEC_EDIT
+.RE
+.PP
+
+.SS "bool fsm_get_preferences_state ()"
+
+.PP
+getter for the static boolean: 'preferences_have_been_modified'
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+TODO A function must obtain this boolean when it stores the current state of the fsm (including \fBpreferences\fP) before closing the current session\&.
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+preferences_have_been_modified
+.RE
+.PP
+
+.SS "int fsm_get_state_rules_data ()"
+
+.PP
+The value of the static int choice_STATE_RULES_DATA can be one of the enum include/fsm enum fsm_enum_state_rules_data\&. To each value is associated a different page and different possible behaviors\&. Any function that modifies the client window must get this value\&.
+.PP
+see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA }
+.PP
+\fBSince\fP
+.RS 4
+2024-06
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/topbar/left
+.PP
+src/signal
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+choice_STATE_RULES_DATA
+.RE
+.PP
+
+.SS "void fsm_init (char * initial_message_from_main)"
+
+.PP
+fsm init is the first function called by \fBmain\&.c\fP It initiates the journal and the four lists: 'measures', 'results', 'displayables results' and 'preferences'\&. The items selected in these lists define the current state of the fsm\&.
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/main/main()
+.PP
+src/journal/fsm_journal_init()
+.PP
+src/fsm/dispatch/fsm_journal_event()
+.PP
+src/fsm/measures/manager/fsm_list_init_measures()
+.PP
+src/fsm/results/manager/fsm_list_init_results()
+.PP
+src/fsm/preferences/manager/fsm_list_init_displayables()
+.PP
+src/fsm/preferences/manager/fsm_list_init_preferences()
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI*initial_message_from_main\fP
+.RE
+.PP
+
+.SS "void fsm_journal_clear (\fBfsm_struct_journal\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_event (int severity, int source, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+It is mandatory for any event to call this function to be published in the journal\&. Before publication, a filter can be applied here (and only here) to select only some events of interest (during debugging, for example)\&.
+.PP
+If there are too many events, a filter can be applied here to select a few interesting events for publication in the log\&.
+.PP
+This filter can operate on any the following five parameters: severity, source, *file_source, *function_source, *string_value\&.
+.PP
+\fBSee also\fP
+.RS 4
+below (params)
+.RE
+.PP
+Simple filters (on a single parameter) can be combined using the logical operators 'and' and 'or' and parentheses\&.
+.PP
+Use: $ grep -r 'fsm_journal_event' to confirm the callergraph calls\&.
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+\fBsrc/journal\&.c\fP/fsm_journal_push_front()
+.PP
+src/main/main()
+.PP
+src/widget/topbar/modal\&.c
+.PP
+src/widget/topbar/right\&.c
+.PP
+src/widget/topbar/dialog\&.c
+.PP
+src/widget/topbar/left\&.c
+.PP
+\fBsrc/widget/topbar/dispatch\&.c\fP * 3
+.PP
+src/widget/one_rule/dispatch\&.c
+.PP
+\fBsrc/widget/one_rule/algebra/conditions\&.c\fP * 2
+.PP
+src/widget/measure/dispatch\&.c
+.PP
+\fBsrc/widget/dispatch\&.c\fP * 3
+.PP
+src/widget/all_rules/dispatch\&.c
+.PP
+\fBsrc/fsm/preferences/manager\&.c\fP * 8
+.PP
+\fBsrc/fsm/measures/manager\&.c\fP * 2
+.PP
+src/fsm/measures/tools_list\&.c * 4
+.PP
+\fBsrc/fsm/dispatch\&.c\fP * 10
+.PP
+\fBsrc/fsm/results/manager\&.c\fP
+.PP
+src/util/tree\&.c
+.PP
+\fBsrc/signal\&.c\fP * 38
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIseverity\fP <>
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+enum \fBfsm_enum_journal_severity\fP in \fBinclude/fsm\&.h\fP 'severity' is a pre-defined value that must be associated to each event\&. It ranges from zero to six : CRITICAL ERROR WARNING INFO MESSAGE DEBUG SPEW 0 1 2 3 4 5 6
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIsource\fP <>
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+enum fsm_enum_journal_source in \fBinclude/fsm\&.h\fP 'source' is a pre-defined value that can be associated to each event\&. It is not mandatory\&. It can be set to 'NULL'\&.
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI*file_source\fP <> the name of the file that emits the event\&.
+.br
+\fI*function_source\fP <> the function that emits the event\&.
+.br
+\fI*string_value\fP <> any value that can qualify the event and provides useful information when reading the log\&.
+.RE
+.PP
+
+.SS "void fsm_journal_init (\fBfsm_struct_journal\fP * jj)"
+
+.PP
+2024-09-22 What types of events should be reported ? (fsm, widgets, \&.\&.\&. ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ? date clé (rank) fichier source fonction source +/- valeur
+.br
+
+.PP
+.nf
+time_t current_time = time(NULL);
+
+.fi
+.PP
+ Check if the time retrieval was successful if (current_time == ((time_t)-1)) printf('Error getting current time\&.\\n'); Convert to local time format and print printf(' Current timestamp: %ld %s\\n', current_time, message); printf(' Current time: %s', ctime(¤t_time));
+.PP
+\fBDate\fP
+.RS 4
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "int fsm_journal_length (\fBfsm_struct_journal\fP jj)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "long fsm_journal_pop_back (\fBfsm_struct_journal\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_publication_request ()"
+
+.PP
+The \fBfsm_journal_publication_request()\fP is called only once, by \fBmain()\fP, just after closing the app and before ending the program\&. This is to guarantee the chronological order of the events in the journal\&.
+.PP
+The log is modified for each event but events can be send asynchronously\&. This is why the journal is only published once, before the end of 'main()', Its chronological order is therefore guaranteed\&.
+.PP
+\fBsrc/journal\&.c\fP/fsm_journal_publish() (called here) is the last function of the program to be executed\&.
+.PP
+The \fBfsm_struct_journal\fP (gg_logs) is a static instance in this file\&. Therefore, all the functions that read or write it are in this file\&. This is to avoid uncontrolled operations on it\&.
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/main/main()
+.PP
+src/journal/fsm_journal_publish()
+.RE
+.PP
+
+.SS "void fsm_journal_publish (\fBfsm_struct_journal\fP jj)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_push_front (\fBfsm_struct_journal\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_seek (\fBfsm_struct_journal\fP jj, long usec, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_list_init_displayables ()"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.RE
+.PP
+
+.SS "void fsm_list_init_measures ()"
+
+.PP
+\fBSince\fP
+.RS 4
+2024-09
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/fsm/dispatch/fsm_init()
+.RE
+.PP
+
+.SS "void fsm_list_init_preferences ()"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+
+.SS "void fsm_reset_all_situations_values (int value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIvalue\fP
+.RE
+.PP
+
+.SS "void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id)"
+
+.PP
+\fBSince\fP
+.RS 4
+2024-09
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIrule_id\fP
+.br
+\fIobject_id\fP
+.br
+\fImeasure_id\fP
+.RE
+.PP
+
+.SS "void fsm_set_exec_edit (int choice)"
+
+.PP
+setter for the static value: 'choice_STATE_RULES_DATA' (in this file) see include/fsm enum fsm_enum_exec_edit { EXEC, EDIT }
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/signal * 2
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIchoice\fP < a boolean value which can be 'EXEC' or 'EDIT'
+.RE
+.PP
+
+.SS "void fsm_set_preferences_modified (bool value)"
+
+.PP
+setter for the static boolean: 'preferences_have_been_modified'
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+TODO To be used by any function that modifies the current user \fBpreferences\fP
+.PP
+\fBfsm_journal_event()\fP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIvalue\fP = TRUE if preferences_have_been_modified\&.
+.RE
+.PP
+
+.SS "void fsm_set_state_rules_data (int choice)"
+
+.PP
+setter for the static value: 'choice_STATE_RULES_DATA' (in this file) see include/fsm enum fsm_enum_state_rules_data { SYNTH, STATE, RULES, DATA } Today (2024-10) the initial page is set to 'SYNTH'\&.
+.PP
+\fBSee also\fP
+.RS 4
+line 292 choice_STATE_RULES_DATA = SYNTH; NB This choice can be temporarily modified for debugging purpose:
+.PP
+end of the function: \fBfsm/dispatch\&.c\fP window_design_topbar_left()
+.RE
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/signal * 4
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIchoice\fP
+.RE
+.PP
+
+.SS "void fsm_set_store_restore_reset (int choice, int value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIchoice\fP
+.br
+\fIvalue\fP
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/fsm_add_data.3 b/doc/rtfm/man3/fsm_add_data.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_add_data.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_add_measure.3 b/doc/rtfm/man3/fsm_add_measure.3
new file mode 100644
index 0000000..5760f47
--- /dev/null
+++ b/doc/rtfm/man3/fsm_add_measure.3
@@ -0,0 +1 @@
+.so man3/manager.c.3
diff --git a/doc/rtfm/man3/fsm_add_result.3 b/doc/rtfm/man3/fsm_add_result.3
new file mode 100644
index 0000000..5760f47
--- /dev/null
+++ b/doc/rtfm/man3/fsm_add_result.3
@@ -0,0 +1 @@
+.so man3/manager.c.3
diff --git a/doc/rtfm/man3/fsm_enum_exec_edit.3 b/doc/rtfm/man3/fsm_enum_exec_edit.3
new file mode 100644
index 0000000..21477d1
--- /dev/null
+++ b/doc/rtfm/man3/fsm_enum_exec_edit.3
@@ -0,0 +1 @@
+.so man3/noname
diff --git a/doc/rtfm/man3/fsm_enum_journal_severity.3 b/doc/rtfm/man3/fsm_enum_journal_severity.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_enum_journal_severity.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_enum_journal_source.3 b/doc/rtfm/man3/fsm_enum_journal_source.3
new file mode 100644
index 0000000..21477d1
--- /dev/null
+++ b/doc/rtfm/man3/fsm_enum_journal_source.3
@@ -0,0 +1 @@
+.so man3/noname
diff --git a/doc/rtfm/man3/fsm_enum_measure_type.3 b/doc/rtfm/man3/fsm_enum_measure_type.3
new file mode 100644
index 0000000..21477d1
--- /dev/null
+++ b/doc/rtfm/man3/fsm_enum_measure_type.3
@@ -0,0 +1 @@
+.so man3/noname
diff --git a/doc/rtfm/man3/fsm_enum_state_rules_data.3 b/doc/rtfm/man3/fsm_enum_state_rules_data.3
new file mode 100644
index 0000000..21477d1
--- /dev/null
+++ b/doc/rtfm/man3/fsm_enum_state_rules_data.3
@@ -0,0 +1 @@
+.so man3/noname
diff --git a/doc/rtfm/man3/fsm_enum_store_restore_reset.3 b/doc/rtfm/man3/fsm_enum_store_restore_reset.3
new file mode 100644
index 0000000..21477d1
--- /dev/null
+++ b/doc/rtfm/man3/fsm_enum_store_restore_reset.3
@@ -0,0 +1 @@
+.so man3/noname
diff --git a/doc/rtfm/man3/fsm_get_data.3 b/doc/rtfm/man3/fsm_get_data.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_get_data.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_clear.3 b/doc/rtfm/man3/fsm_journal_clear.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_clear.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_init.3 b/doc/rtfm/man3/fsm_journal_init.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_init.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_length.3 b/doc/rtfm/man3/fsm_journal_length.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_length.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_pop_back.3 b/doc/rtfm/man3/fsm_journal_pop_back.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_pop_back.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_publish.3 b/doc/rtfm/man3/fsm_journal_publish.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_publish.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_push_front.3 b/doc/rtfm/man3/fsm_journal_push_front.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_push_front.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_journal_seek.3 b/doc/rtfm/man3/fsm_journal_seek.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_journal_seek.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_list_init_measures.3 b/doc/rtfm/man3/fsm_list_init_measures.3
new file mode 100644
index 0000000..5760f47
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_init_measures.3
@@ -0,0 +1 @@
+.so man3/manager.c.3
diff --git a/doc/rtfm/man3/fsm_list_init_results.3 b/doc/rtfm/man3/fsm_list_init_results.3
new file mode 100644
index 0000000..5760f47
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_init_results.3
@@ -0,0 +1 @@
+.so man3/manager.c.3
diff --git a/doc/rtfm/man3/fsm_list_tools_clear.3 b/doc/rtfm/man3/fsm_list_tools_clear.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_tools_clear.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_list_tools_insert.3 b/doc/rtfm/man3/fsm_list_tools_insert.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_tools_insert.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_list_tools_length.3 b/doc/rtfm/man3/fsm_list_tools_length.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_tools_length.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_list_tools_pop.3 b/doc/rtfm/man3/fsm_list_tools_pop.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_tools_pop.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_list_tools_test.3 b/doc/rtfm/man3/fsm_list_tools_test.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_tools_test.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_list_tools_view.3 b/doc/rtfm/man3/fsm_list_tools_view.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_list_tools_view.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_remove_data.3 b/doc/rtfm/man3/fsm_remove_data.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/fsm_remove_data.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/fsm_rule_trig_measure.3 b/doc/rtfm/man3/fsm_rule_trig_measure.3
new file mode 100644
index 0000000..5760f47
--- /dev/null
+++ b/doc/rtfm/man3/fsm_rule_trig_measure.3
@@ -0,0 +1 @@
+.so man3/manager.c.3
diff --git a/doc/rtfm/man3/graphics.h.3 b/doc/rtfm/man3/graphics.h.3
new file mode 100644
index 0000000..535ff43
--- /dev/null
+++ b/doc/rtfm/man3/graphics.h.3
@@ -0,0 +1,427 @@
+.TH "include/graphics.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/graphics.h \- graphics header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include 'base\&.h'\fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "struct \fBgraphics_stack_t\fP"
+.br
+.RI "Structure describing a gl_area and its parameters, used to create a table of Gem-graph client current gl_areas\&. "
+.in -1c
+.SS "Macros"
+
+.in +1c
+.ti -1c
+.RI "#define \fBVERTEX_SHADER_FILE\fP 'src/shader\&.vert'"
+.br
+.ti -1c
+.RI "#define \fBFRAG_SHADER_FILE\fP 'src/shader\&.frag'"
+.br
+.ti -1c
+.RI "#define \fBGL_TARGET_MAJOR_VERSION\fP 0"
+.br
+.ti -1c
+.RI "#define \fBGL_TARGET_MINOR_VERSION\fP 4"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "bool \fBgraphics_render_stack\fP (GtkWidget *container_widget)"
+.br
+.RI "Structure describing a gl_area and its parameters, used to create a table of Gem-graph client current gl_areas\&. "
+.ti -1c
+.RI "bool \fBgraphics_setup_glarea\fP (int target_mode, GtkWidget *target_widget)"
+.br
+.ti -1c
+.RI "int \fBgraphics_init\fP (void *error_buffer)"
+.br
+.RI "Initializes a gl_area\&. "
+.ti -1c
+.RI "void \fBgraphics_draw\fP (const int graphics_stack_id)"
+.br
+.RI "Draws the current buffer to a gl_area\&. "
+.ti -1c
+.RI "bool \fBgraphics_shutdown\fP (const int graphics_stack_id, void *error_buffer)"
+.br
+.RI "Draws the current buffer to a gl_area\&. "
+.ti -1c
+.RI "bool \fBgraphics_init_shaders\fP (const int graphics_stack_id)"
+.br
+.RI "Initializes the shaders of a gl_area and link them to a program\&. "
+.ti -1c
+.RI "bool \fBgraphics_init_graphics_stack\fP (void *container_widget, GError *error_buffer)"
+.br
+.ti -1c
+.RI "bool \fBgraphics_shutdown_graphics_stack\fP (void *container_widget, GError *error_buffer)"
+.br
+.ti -1c
+.RI "bool \fBgraphics_update_axis_stack\fP (GtkWidget *container_widget, int axis, int value)"
+.br
+.ti -1c
+.RI "void \fBgraphics_init_buffers\fP (const int graphics_stack_id)"
+.br
+.RI "Initializes the buffer of a gl_area Calls according to the user preferences\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_vertex\fP (const int graphics_stack_id, GLfloat x, GLfloat y, GLfloat z)"
+.br
+.RI "Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_line\fP (const int graphics_stack_id, GLuint a, GLuint b)"
+.br
+.RI "Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_plan\fP (const int graphics_stack_id, GLuint a, GLuint b, GLuint c)"
+.br
+.RI "Writes values to describe an (a,b,c) plan (triangle) into the plan buffer\&. "
+.ti -1c
+.RI "void \fBgraphics_draw_color\fP (const int graphics_stack_id, GLfloat r, GLfloat g, GLfloat b)"
+.br
+.RI "Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&. "
+.ti -1c
+.RI "void \fBgraphics_model_setup\fP (const int graphics_stack_id)"
+.br
+.RI "TODO #pragma omp parallel schedule(static, 12) void \fBattribute\fP((optimize('no-unroll-loops'))) main_test_graphics (void) {}\&. "
+.ti -1c
+.RI "int \fBgraphics_draw_one_arrow_vertex\fP (const int graphics_stack_id, int space_X, int space_Y, int space_Z, int weight, int site, int x, int y, int z)"
+.br
+.ti -1c
+.RI "int \fBgraphics_draw_one_arrow_line\fP (const int graphics_stack_id, int offset_vertex)"
+.br
+.ti -1c
+.RI "int \fBgraphics_draw_space_ridges_vertex\fP (const int graphics_stack_id, long offset_vertex, long x, long y, long z)"
+.br
+.RI "Writes grid ridges to vertex and color buffers\&. "
+.ti -1c
+.RI "int \fBgraphics_draw_space_ridges_lines\fP (const int graphics_stack_id)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "long \fBgraphics_draw_grids_on_space_faces_vertex\fP (const int graphics_stack_id, long x, long y, long z)"
+.br
+.RI "Writes grid lines on space faces\&. "
+.ti -1c
+.RI "long \fBgraphics_draw_grids_on_space_faces_lines\fP (const int graphics_stack_id, long offset_vertex, long x, long y, long z)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "int \fBgraphics_set_arrow\fP (int graphics_stack_id, int arrows_nb, int space_X, int space_Y, int space_Z, int requested_weight, int site, int arrow_x, int arrow_y, int arrow_z)"
+.br
+.in -1c
+.SS "Variables"
+
+.in +1c
+.ti -1c
+.RI "struct \fBgraphics_stack_t\fP * \fBgraphics_stack\fP"
+.br
+.RI "Dynamic array of ptrs to dynamically allocated gl_area_entry\&. "
+.in -1c
+.SH "Detailed Description"
+.PP
+graphics header
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "void graphics_draw (const int stack_id)"
+
+.PP
+Draws the current buffer to a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "void graphics_draw_color (const int stack_id, GLfloat r, GLfloat g, GLfloat b)"
+
+.PP
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIGLfloat\fP r, GLfloat g, GLfloat b
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcolor\fP GLfloat(r,g,b)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "long graphics_draw_grids_on_space_faces_vertex (const int stack_id, long x, long y, long z)"
+
+.PP
+Writes grid lines on space faces\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP long (x,y,z)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+Writes grid lines on space faces\&.
+.SS "void graphics_draw_line (const int stack_id, GLuint a, GLuint b)"
+
+.PP
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&. Writes values to describe a line from a to b into the line buffer\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIGLfloat\fP r, GLfloat g, GLfloat b
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void Writes values to describe a line from a to b into the line buffer
+.RE
+.PP
+@use liste de fonctions GTK
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLuint (a,b)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLuint (a,b)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+Draws the color (r, g, b) associated to a vertex if (console) prints (r, g, b) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLuint (a,b)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "void graphics_draw_plan (const int stack_id, GLuint a, GLuint b, GLuint c)"
+
+.PP
+Writes values to describe an (a,b,c) plan (triangle) into the plan buffer\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLuint (a,b,c)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "int graphics_draw_space_ridges_vertex (const int stack_id, long offset_vertex, long x, long y, long z)"
+
+.PP
+Writes grid ridges to vertex and color buffers\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP long (x,y,z), step_x, step_y, step_z
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+Writes grid ridges to vertex and color buffers\&.
+.SS "void graphics_draw_vertex (const int stack_id, GLfloat x, GLfloat y, GLfloat z)"
+
+.PP
+Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIGLfloat\fP x, GLfloat y, GLfloat z
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+Draws a vertex (x, y, z) if (console) prints (x, y, z) values to console\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcoords\fP GLfloat(x,y,z)
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "int graphics_init (void * error_buffer)"
+
+.PP
+Initializes a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+true if initialized
+.RE
+.PP
+Initializes a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+id if initialized
+.RE
+.PP
+
+.SS "void graphics_init_buffers (const int stack_id)"
+
+.PP
+Initializes the buffer of a gl_area Calls according to the user preferences\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "bool graphics_init_shaders (const int stack_id)"
+
+.PP
+Initializes the shaders of a gl_area and link them to a program\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+true if initialized
+.RE
+.PP
+
+.SS "void graphics_model_setup (const int stack_id)"
+
+.PP
+TODO #pragma omp parallel schedule(static, 12) void \fBattribute\fP((optimize('no-unroll-loops'))) main_test_graphics (void) {}\&. assert : space dimensions (x,y,z) > 0 assert : arrows localization within space and sites assert : no more than one arrow per address notify : weights are replaced, NOT added (could be !)
+.PP
+Init space and arrows (= initial state) and allows ulterior creations, suppressions or modifications of the arrows[] array
+.PP
+draws the space() triggers graphics_set_arrows() that modifies the list () and draws arrows
+.PP
+Initialisation du générateur pseudo-aléatoire Attention, les vertex centraux de chaque unité d'espace (cube) peuvent être redondants (max 6)
+.SS "bool graphics_shutdown (const int id, void * error_buffer)"
+
+.PP
+Draws the current buffer to a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void Shutdowns a gl_area
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+true if success
+.RE
+.PP
+Draws the current buffer to a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+true if success
+.RE
+.PP
+
+.SH "Variable Documentation"
+.PP
+.SS "struct \fBgraphics_stack_t\fP* graphics_stack\fC [extern]\fP"
+
+.PP
+Dynamic array of ptrs to dynamically allocated gl_area_entry\&. Dynamic array of ptrs to dynamically allocated gl_area_entry\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/graphics_draw.3 b/doc/rtfm/man3/graphics_draw.3
new file mode 100644
index 0000000..e3d42e8
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw.3
@@ -0,0 +1 @@
+.so man3/draw.c.3
diff --git a/doc/rtfm/man3/graphics_draw_color.3 b/doc/rtfm/man3/graphics_draw_color.3
new file mode 100644
index 0000000..e3d42e8
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_color.3
@@ -0,0 +1 @@
+.so man3/draw.c.3
diff --git a/doc/rtfm/man3/graphics_draw_grids_on_space_faces_lines.3 b/doc/rtfm/man3/graphics_draw_grids_on_space_faces_lines.3
new file mode 100644
index 0000000..b20af3e
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_grids_on_space_faces_lines.3
@@ -0,0 +1 @@
+.so man3/grid.c.3
diff --git a/doc/rtfm/man3/graphics_draw_grids_on_space_faces_vertex.3 b/doc/rtfm/man3/graphics_draw_grids_on_space_faces_vertex.3
new file mode 100644
index 0000000..b20af3e
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_grids_on_space_faces_vertex.3
@@ -0,0 +1 @@
+.so man3/grid.c.3
diff --git a/doc/rtfm/man3/graphics_draw_line.3 b/doc/rtfm/man3/graphics_draw_line.3
new file mode 100644
index 0000000..e3d42e8
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_line.3
@@ -0,0 +1 @@
+.so man3/draw.c.3
diff --git a/doc/rtfm/man3/graphics_draw_one_arrow_line.3 b/doc/rtfm/man3/graphics_draw_one_arrow_line.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_one_arrow_line.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_draw_one_arrow_vertex.3 b/doc/rtfm/man3/graphics_draw_one_arrow_vertex.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_one_arrow_vertex.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_draw_plan.3 b/doc/rtfm/man3/graphics_draw_plan.3
new file mode 100644
index 0000000..e3d42e8
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_plan.3
@@ -0,0 +1 @@
+.so man3/draw.c.3
diff --git a/doc/rtfm/man3/graphics_draw_space_ridges_lines.3 b/doc/rtfm/man3/graphics_draw_space_ridges_lines.3
new file mode 100644
index 0000000..b20af3e
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_space_ridges_lines.3
@@ -0,0 +1 @@
+.so man3/grid.c.3
diff --git a/doc/rtfm/man3/graphics_draw_space_ridges_vertex.3 b/doc/rtfm/man3/graphics_draw_space_ridges_vertex.3
new file mode 100644
index 0000000..b20af3e
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_space_ridges_vertex.3
@@ -0,0 +1 @@
+.so man3/grid.c.3
diff --git a/doc/rtfm/man3/graphics_draw_vertex.3 b/doc/rtfm/man3/graphics_draw_vertex.3
new file mode 100644
index 0000000..e3d42e8
--- /dev/null
+++ b/doc/rtfm/man3/graphics_draw_vertex.3
@@ -0,0 +1 @@
+.so man3/draw.c.3
diff --git a/doc/rtfm/man3/graphics_init.3 b/doc/rtfm/man3/graphics_init.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_init.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_init_buffers.3 b/doc/rtfm/man3/graphics_init_buffers.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_init_buffers.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_init_graphics_stack.3 b/doc/rtfm/man3/graphics_init_graphics_stack.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_init_graphics_stack.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_init_shaders.3 b/doc/rtfm/man3/graphics_init_shaders.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_init_shaders.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_model_setup.3 b/doc/rtfm/man3/graphics_model_setup.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_model_setup.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_render_stack.3 b/doc/rtfm/man3/graphics_render_stack.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_render_stack.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_set_arrow.3 b/doc/rtfm/man3/graphics_set_arrow.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_set_arrow.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_setup_glarea.3 b/doc/rtfm/man3/graphics_setup_glarea.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_setup_glarea.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_shutdown.3 b/doc/rtfm/man3/graphics_shutdown.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_shutdown.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_shutdown_graphics_stack.3 b/doc/rtfm/man3/graphics_shutdown_graphics_stack.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_shutdown_graphics_stack.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/graphics_stack.3 b/doc/rtfm/man3/graphics_stack.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_stack.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_stack_size.3 b/doc/rtfm/man3/graphics_stack_size.3
new file mode 100644
index 0000000..784524c
--- /dev/null
+++ b/doc/rtfm/man3/graphics_stack_size.3
@@ -0,0 +1 @@
+.so man3/init.c.3
diff --git a/doc/rtfm/man3/graphics_update_axis_stack.3 b/doc/rtfm/man3/graphics_update_axis_stack.3
new file mode 100644
index 0000000..f385205
--- /dev/null
+++ b/doc/rtfm/man3/graphics_update_axis_stack.3
@@ -0,0 +1 @@
+.so man3/graphics.h.3
diff --git a/doc/rtfm/man3/grid.c.3 b/doc/rtfm/man3/grid.c.3
new file mode 100644
index 0000000..14be06a
--- /dev/null
+++ b/doc/rtfm/man3/grid.c.3
@@ -0,0 +1,50 @@
+.TH "src/graphics/grid.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+src/graphics/grid.c \- graphics - grid/empty space drawing functions
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include '\&.\&./\&.\&./include/graphics\&.h'\fP
+.br
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBgraphics_draw_space_ridges_vertex\fP (const int stack_id, long offset_vertex, long x, long y, long z)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "int \fBgraphics_draw_space_ridges_lines\fP (const int stack_id)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "long \fBgraphics_draw_grids_on_space_faces_vertex\fP (const int stack_id, long x, long y, long z)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "long \fBgraphics_draw_grids_on_space_faces_lines\fP (const int stack_id, long offset_vertex, long x, long y, long z)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SH "Detailed Description"
+.PP
+graphics - grid/empty space drawing functions
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "long graphics_draw_grids_on_space_faces_vertex (const int stack_id, long x, long y, long z)"
+
+.PP
+phantom documentation used to test the functioning of doxygen Writes grid lines on space faces\&.
+.SS "int graphics_draw_space_ridges_vertex (const int stack_id, long offset_vertex, long x, long y, long z)"
+
+.PP
+phantom documentation used to test the functioning of doxygen Writes grid ridges to vertex and color buffers\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/init.c.3 b/doc/rtfm/man3/init.c.3
new file mode 100644
index 0000000..f674ded
--- /dev/null
+++ b/doc/rtfm/man3/init.c.3
@@ -0,0 +1,154 @@
+.TH "src/graphics/init.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+src/graphics/init.c \- graphics - initialization and graphic stack management
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include '\&.\&./\&.\&./include/graphics\&.h'\fP
+.br
+\fC#include '\&.\&./\&.\&./include/parse\&.h'\fP
+.br
+\fC#include '\&.\&./\&.\&./include/util\&.h'\fP
+.br
+
+.SS "Macros"
+
+.in +1c
+.ti -1c
+.RI "#define \fBTEST\fP 0"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "int \fBgraphics_init\fP (void *error_buffer)"
+.br
+.RI "Initializes graphical stack\&. "
+.ti -1c
+.RI "bool \fBgraphics_shutdown\fP (const int id, void *error_buffer)"
+.br
+.RI "Shutdowns a gl_area\&. "
+.ti -1c
+.RI "void \fBgraphics_model_setup\fP (const int stack_id)"
+.br
+.RI "TODO #pragma omp parallel schedule(static, 12) void \fBattribute\fP((optimize('no-unroll-loops'))) main_test_graphics (void) {}\&. "
+.ti -1c
+.RI "void \fBgraphics_init_buffers\fP (const int stack_id)"
+.br
+.RI "Initializes the buffer of a gl_area Calls according to the user preferences\&. "
+.ti -1c
+.RI "bool \fBgraphics_init_shaders\fP (const int stack_id)"
+.br
+.RI "Initializes the shaders of a gl_area and link them to a program\&. "
+.in -1c
+.SS "Variables"
+
+.in +1c
+.ti -1c
+.RI "struct \fBgraphics_stack_t\fP * \fBgraphics_stack\fP = NULL"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "size_t \fBgraphics_stack_size\fP = 0"
+.br
+.ti -1c
+.RI "int * \fBfree_stack_slot\fP = NULL"
+.br
+.ti -1c
+.RI "size_t \fBfree_stack_slot_size\fP = 0"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+graphics - initialization and graphic stack management
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "int graphics_init (void * error_buffer)"
+
+.PP
+Initializes graphical stack\&. Initializes a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+id if initialized
+.RE
+.PP
+
+.SS "void graphics_init_buffers (const int stack_id)"
+
+.PP
+Initializes the buffer of a gl_area Calls according to the user preferences\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+void
+.RE
+.PP
+
+.SS "bool graphics_init_shaders (const int stack_id)"
+
+.PP
+Initializes the shaders of a gl_area and link them to a program\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+true if initialized
+.RE
+.PP
+
+.SS "void graphics_model_setup (const int stack_id)"
+
+.PP
+TODO #pragma omp parallel schedule(static, 12) void \fBattribute\fP((optimize('no-unroll-loops'))) main_test_graphics (void) {}\&. assert : space dimensions (x,y,z) > 0 assert : arrows localization within space and sites assert : no more than one arrow per address notify : weights are replaced, NOT added (could be !)
+.PP
+Init space and arrows (= initial state) and allows ulterior creations, suppressions or modifications of the arrows[] array
+.PP
+draws the space() triggers graphics_set_arrows() that modifies the list () and draws arrows
+.PP
+Initialisation du générateur pseudo-aléatoire Attention, les vertex centraux de chaque unité d'espace (cube) peuvent être redondants (max 6)
+.SS "bool graphics_shutdown (const int id, void * error_buffer)"
+
+.PP
+Shutdowns a gl_area\&. Draws the current buffer to a gl_area\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIgl_area,ptr\fP to the gl_area widget
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+true if success
+.RE
+.PP
+
+.SH "Variable Documentation"
+.PP
+.SS "struct \fBgraphics_stack_t\fP* graphics_stack = NULL"
+
+.PP
+phantom documentation used to test the functioning of doxygen Dynamic array of ptrs to dynamically allocated gl_area_entry\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/journal.c.3 b/doc/rtfm/man3/journal.c.3
new file mode 100644
index 0000000..8e61c4c
--- /dev/null
+++ b/doc/rtfm/man3/journal.c.3
@@ -0,0 +1,222 @@
+.TH "src/journal.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+src/journal.c \- journal / log
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include '\&.\&./include/fsm\&.h'\fP
+.br
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBfsm_journal_init\fP (\fBfsm_struct_journal\fP *jj)"
+.br
+.RI "2024-09-22 What types of events should be reported ? (fsm, widgets, \&.\&.\&. ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ? "
+.ti -1c
+.RI "void \fBfsm_journal_clear\fP (\fBfsm_struct_journal\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_push_front\fP (\fBfsm_struct_journal\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "long \fBfsm_journal_pop_back\fP (\fBfsm_struct_journal\fP *jj, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "int \fBfsm_journal_length\fP (\fBfsm_struct_journal\fP jj)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_seek\fP (\fBfsm_struct_journal\fP jj, long usec, const char *file_source, const char *function_source, const char *string_value)"
+.br
+.ti -1c
+.RI "void \fBfsm_journal_publish\fP (\fBfsm_struct_journal\fP jj)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+journal / log
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "void fsm_journal_clear (\fBfsm_struct_journal\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_init (\fBfsm_struct_journal\fP * jj)"
+
+.PP
+2024-09-22 What types of events should be reported ? (fsm, widgets, \&.\&.\&. ) For what purpose ? What information must be collected and transmitted ? How do you name and classify this information ? How do you present it ? date clé (rank) fichier source fonction source +/- valeur
+.br
+
+.PP
+.nf
+time_t current_time = time(NULL);
+
+.fi
+.PP
+ Check if the time retrieval was successful if (current_time == ((time_t)-1)) printf('Error getting current time\&.\\n'); Convert to local time format and print printf(' Current timestamp: %ld %s\\n', current_time, message); printf(' Current time: %s', ctime(¤t_time));
+.PP
+\fBDate\fP
+.RS 4
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "int fsm_journal_length (\fBfsm_struct_journal\fP jj)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "long fsm_journal_pop_back (\fBfsm_struct_journal\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_publish (\fBfsm_struct_journal\fP jj)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_push_front (\fBfsm_struct_journal\fP * jj, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void fsm_journal_seek (\fBfsm_struct_journal\fP jj, long usec, const char * file_source, const char * function_source, const char * string_value)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/main.c.3 b/doc/rtfm/man3/main.c.3
index 62b9c3d..adc92cb 100644
--- a/doc/rtfm/man3/main.c.3
+++ b/doc/rtfm/man3/main.c.3
@@ -25,9 +25,14 @@ src/main.c \- Gem-graph-client main file\&.
.PP
Gem-graph-client main file\&.
-This file is part of Gem-graph\&. It contains only the main function\&.
+This file is part of Gem-graph\&. It contains only the main function\&. The function \fBmain()\fP initialises the log, the finite state machine (fsm), the application and the windows and closes all the elements it opened at the end of program execution\&. The main window is opened on the 'synthetic view' page of the current model by default (
.PP
-The function \fBmain()\fP initialises the log, the finite state machine (fsm), the application and the windows\&. The main window is opened on the 'synthetic view' page of the current model by default\&. The main function closes all the elements it opened at the end of program execution\&.
+\fBSee also\fP
+.RS 4
+the \fBmain\fP window topbar dispatcher)\&.
+.RE
+.PP
+
.SH "Function Documentation"
.PP
.SS "int main (int argc, char ** argv)"
diff --git a/doc/rtfm/man3/manager.c.3 b/doc/rtfm/man3/manager.c.3
index 22c4084..979f66d 100644
--- a/doc/rtfm/man3/manager.c.3
+++ b/doc/rtfm/man3/manager.c.3
@@ -1,179 +1,34 @@
-.TH "src/fsm/preferences/manager.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.TH "src/fsm/results/manager.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
.ad l
.nh
.SH NAME
-src/fsm/preferences/manager.c
+src/fsm/results/manager.c \- fsm results manager
+
.SH SYNOPSIS
.br
.PP
-\fC#include '\&.\&./\&.\&./\&.\&./include/fsm\&.h'\fP
+\fC#include \fP
.br
-\fC#include '\&.\&./\&.\&./\&.\&./include/signal\&.h'\fP
+\fC#include '\&.\&./\&.\&./\&.\&./include/fsm\&.h'\fP
.br
\fC#include '\&.\&./\&.\&./\&.\&./include/widget\&.h'\fP
.br
-.SS "Classes"
-
-.in +1c
-.ti -1c
-.RI "struct \fBpreferences\fP"
-.br
-.in -1c
.SS "Functions"
.in +1c
.ti -1c
-.RI "void \fBfsm_set_store_restore_reset\fP (int choice, int value)"
+.RI "void \fBfsm_add_result\fP (char *result_name)"
.br
.ti -1c
-.RI "void \fBfsm_reset_all_situations_values\fP (int value)"
-.br
-.ti -1c
-.RI "void \fBfsm_add_displayable\fP (char *displayable_name)"
-.br
-.ti -1c
-.RI "void \fBfsm_list_init_preferences\fP ()"
-.br
-.ti -1c
-.RI "void \fBfsm_list_init_displayables\fP ()"
+.RI "void \fBfsm_list_init_results\fP ()"
.br
.in -1c
-.SS "Variables"
-
-.in +1c
-.ti -1c
-.RI "struct \fBpreferences\fP * \fBpref_jean\fP = NULL"
-.br
-.in -1c
-.SH "Function Documentation"
+.SH "Detailed Description"
.PP
-.SS "void fsm_add_displayable (char * displayable_name)"
-
-.PP
-\fBDate\fP
-.RS 4
-
-.RE
-.PP
-\fBAuthor\fP
-.RS 4
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-.PP
-.RE
-.PP
-\fBParameters\fP
-.RS 4
-\fIdisplayable_name\fP
-.RE
-.PP
-
-.SS "void fsm_list_init_displayables ()"
-
-.PP
-\fBDate\fP
-.RS 4
-
-.RE
-.PP
-\fBAuthor\fP
-.RS 4
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-.RE
-.PP
-
-.SS "void fsm_list_init_preferences ()"
-
-.PP
-\fBDate\fP
-.RS 4
-
-.RE
-.PP
-\fBAuthor\fP
-.RS 4
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-.PP
-.RE
-.PP
-
-.SS "void fsm_reset_all_situations_values (int value)"
-
-.PP
-\fBDate\fP
-.RS 4
-
-.RE
-.PP
-\fBAuthor\fP
-.RS 4
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-.PP
-.RE
-.PP
-\fBParameters\fP
-.RS 4
-\fIvalue\fP
-.RE
-.PP
-
-.SS "void fsm_set_store_restore_reset (int choice, int value)"
-
-.PP
-\fBDate\fP
-.RS 4
-
-.RE
-.PP
-\fBAuthor\fP
-.RS 4
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-.PP
-.RE
-.PP
-\fBParameters\fP
-.RS 4
-\fIchoice\fP
-.br
-\fIvalue\fP
-.RE
-.PP
-
-.SH "Variable Documentation"
-.PP
-.SS "struct \fBpreferences\fP* pref_jean = NULL"
-
-.PP
-\fBDate\fP
-.RS 4
-
-.RE
-.PP
-\fBAuthor\fP
-.RS 4
-.RE
-.PP
-\fBSee also\fP
-.RS 4
-.PP
-.RE
-.PP
+fsm results manager
+This file is part of Gem-graph\&. It manages the results (maintain a list, provides access)\&.
.SH "Author"
.PP
Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/n_objects.3 b/doc/rtfm/man3/n_objects.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/n_objects.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/n_rules.3 b/doc/rtfm/man3/n_rules.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/n_rules.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/n_situations.3 b/doc/rtfm/man3/n_situations.3
new file mode 100644
index 0000000..238efb4
--- /dev/null
+++ b/doc/rtfm/man3/n_situations.3
@@ -0,0 +1 @@
+.so man3/fsm.h.3
diff --git a/doc/rtfm/man3/on_axis_value_change.3 b/doc/rtfm/man3/on_axis_value_change.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_axis_value_change.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_bind_user_tree_factory.3 b/doc/rtfm/man3/on_bind_user_tree_factory.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_bind_user_tree_factory.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_clicked_topbar_right_home.3 b/doc/rtfm/man3/on_clicked_topbar_right_home.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_clicked_topbar_right_home.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_clicked_topbar_right_search.3 b/doc/rtfm/man3/on_clicked_topbar_right_search.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_clicked_topbar_right_search.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_closing_page.3 b/doc/rtfm/man3/on_closing_page.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_closing_page.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_discard_current_model_before_editing.3 b/doc/rtfm/man3/on_discard_current_model_before_editing.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_discard_current_model_before_editing.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_entry_name_delete_after.3 b/doc/rtfm/man3/on_entry_name_delete_after.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_entry_name_delete_after.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_entry_name_insert_after.3 b/doc/rtfm/man3/on_entry_name_insert_after.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_entry_name_insert_after.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_glarea_realize.3 b/doc/rtfm/man3/on_glarea_realize.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_glarea_realize.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_glarea_render.3 b/doc/rtfm/man3/on_glarea_render.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_glarea_render.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_glarea_unrealize.3 b/doc/rtfm/man3/on_glarea_unrealize.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_glarea_unrealize.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_depends_on_a_single_event.3 b/doc/rtfm/man3/on_measure_depends_on_a_single_event.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_depends_on_a_single_event.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_depends_on_two_events.3 b/doc/rtfm/man3/on_measure_depends_on_two_events.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_depends_on_two_events.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_single_event_occurences_dates.3 b/doc/rtfm/man3/on_measure_single_event_occurences_dates.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_single_event_occurences_dates.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_single_event_occurences_nb.3 b/doc/rtfm/man3/on_measure_single_event_occurences_nb.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_single_event_occurences_nb.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_single_event_occurences_situations.3 b/doc/rtfm/man3/on_measure_single_event_occurences_situations.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_single_event_occurences_situations.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_third_event_occurences_in_between.3 b/doc/rtfm/man3/on_measure_third_event_occurences_in_between.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_third_event_occurences_in_between.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_measure_time_elapsed_between_two_events.3 b/doc/rtfm/man3/on_measure_time_elapsed_between_two_events.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_measure_time_elapsed_between_two_events.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_preferences_action.3 b/doc/rtfm/man3/on_preferences_action.3
new file mode 100644
index 0000000..331bc3a
--- /dev/null
+++ b/doc/rtfm/man3/on_preferences_action.3
@@ -0,0 +1 @@
+.so man3/action.h.3
diff --git a/doc/rtfm/man3/on_resetting_XYZ_in_state_page.3 b/doc/rtfm/man3/on_resetting_XYZ_in_state_page.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_resetting_XYZ_in_state_page.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_save_current_model_before_editing.3 b/doc/rtfm/man3/on_save_current_model_before_editing.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_save_current_model_before_editing.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_select_a_second_measurement.3 b/doc/rtfm/man3/on_select_a_second_measurement.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_select_a_second_measurement.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_select_a_second_rules_set.3 b/doc/rtfm/man3/on_select_a_second_rules_set.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_select_a_second_rules_set.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_select_rules_first.3 b/doc/rtfm/man3/on_select_rules_first.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_select_rules_first.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_setup_user_tree_factory.3 b/doc/rtfm/man3/on_setup_user_tree_factory.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_setup_user_tree_factory.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_situations_box_do_reset.3 b/doc/rtfm/man3/on_situations_box_do_reset.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_situations_box_do_reset.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_skip_this_step.3 b/doc/rtfm/man3/on_skip_this_step.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_skip_this_step.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_something_else.3 b/doc/rtfm/man3/on_something_else.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_something_else.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_start_new_engine.3 b/doc/rtfm/man3/on_start_new_engine.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_start_new_engine.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_start_new_measure.3 b/doc/rtfm/man3/on_start_new_measure.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_start_new_measure.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_toggle_exec_edit.3 b/doc/rtfm/man3/on_toggle_exec_edit.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_toggle_exec_edit.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_toggle_state_rules_data.3 b/doc/rtfm/man3/on_toggle_state_rules_data.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_toggle_state_rules_data.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_topbar_right_measure_clicked.3 b/doc/rtfm/man3/on_topbar_right_measure_clicked.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_topbar_right_measure_clicked.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_updating_objects_transparencies.3 b/doc/rtfm/man3/on_updating_objects_transparencies.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_updating_objects_transparencies.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/on_windows_activation.3 b/doc/rtfm/man3/on_windows_activation.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/on_windows_activation.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/on_windows_startup.3 b/doc/rtfm/man3/on_windows_startup.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/on_windows_startup.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/on_write_current_model.3 b/doc/rtfm/man3/on_write_current_model.3
new file mode 100644
index 0000000..a26168c
--- /dev/null
+++ b/doc/rtfm/man3/on_write_current_model.3
@@ -0,0 +1 @@
+.so man3/signal.h.3
diff --git a/doc/rtfm/man3/parse.h.3 b/doc/rtfm/man3/parse.h.3
new file mode 100644
index 0000000..08cffb2
--- /dev/null
+++ b/doc/rtfm/man3/parse.h.3
@@ -0,0 +1,45 @@
+.TH "include/parse.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/parse.h \- model parsing header
+
+.SH SYNOPSIS
+.br
+.PP
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "bool \fBparse_model_init\fP (const char *content, size_t length, const char *basename)"
+.br
+.ti -1c
+.RI "bool \fBparse_model_shutdown\fP (void)"
+.br
+.ti -1c
+.RI "char \fBparse_model_get_dim\fP (void)"
+.br
+.ti -1c
+.RI "long \fBparse_model_get_dim_value\fP (const char *axis)"
+.br
+.ti -1c
+.RI "char \fBparse_model_get_multiplicity\fP (void)"
+.br
+.ti -1c
+.RI "bool \fBparse_model_get_next_state\fP (char *new_state_id)"
+.br
+.ti -1c
+.RI "bool \fBparse_model_get_next_arrow\fP (struct \fBarrow_t\fP *new_arrow, const char *state_id, char dimension)"
+.br
+.ti -1c
+.RI "long \fBparse_model_get_state_arrows_count\fP (const char *state_id)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+model parsing header
+
+This file is part of Gem-graph\&.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/parse_model_get_dim.3 b/doc/rtfm/man3/parse_model_get_dim.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_get_dim.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_get_dim_value.3 b/doc/rtfm/man3/parse_model_get_dim_value.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_get_dim_value.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_get_multiplicity.3 b/doc/rtfm/man3/parse_model_get_multiplicity.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_get_multiplicity.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_get_next_arrow.3 b/doc/rtfm/man3/parse_model_get_next_arrow.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_get_next_arrow.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_get_next_state.3 b/doc/rtfm/man3/parse_model_get_next_state.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_get_next_state.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_get_state_arrows_count.3 b/doc/rtfm/man3/parse_model_get_state_arrows_count.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_get_state_arrows_count.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_init.3 b/doc/rtfm/man3/parse_model_init.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_init.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/parse_model_shutdown.3 b/doc/rtfm/man3/parse_model_shutdown.3
new file mode 100644
index 0000000..0bd28c8
--- /dev/null
+++ b/doc/rtfm/man3/parse_model_shutdown.3
@@ -0,0 +1 @@
+.so man3/parse.h.3
diff --git a/doc/rtfm/man3/signal.c.3 b/doc/rtfm/man3/signal.c.3
new file mode 100644
index 0000000..33ad141
--- /dev/null
+++ b/doc/rtfm/man3/signal.c.3
@@ -0,0 +1,591 @@
+.TH "src/signal.c" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+src/signal.c \- events management functions
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include '\&.\&./include/fsm\&.h'\fP
+.br
+\fC#include '\&.\&./include/signal\&.h'\fP
+.br
+\fC#include '\&.\&./include/widget\&.h'\fP
+.br
+\fC#include '\&.\&./include/graphics\&.h'\fP
+.br
+\fC#include '\&.\&./include/util\&.h'\fP
+.br
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBon_setup_user_tree_factory\fP (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)"
+.br
+.ti -1c
+.RI "void \fBon_bind_user_tree_factory\fP (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)"
+.br
+.ti -1c
+.RI "gboolean \fBon_glarea_render\fP (GtkGLArea *area, GdkGLContext *context)"
+.br
+.ti -1c
+.RI "void \fBon_glarea_realize\fP (GtkWidget *widget)"
+.br
+.RI "We need to set up our state when we realize the GtkGLArea widget\&. "
+.ti -1c
+.RI "void \fBon_glarea_unrealize\fP (GtkWidget *widget)"
+.br
+.RI "We should tear down the state when unrealizing\&. "
+.ti -1c
+.RI "void \fBon_axis_value_change\fP (GtkAdjustment *adjustment, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_save_current_model_before_editing\fP (GtkWidget *btt_save_current_model, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_discard_current_model_before_editing\fP (GtkWidget *btt_discard_current_model, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_write_current_model\fP (GtkWidget *btt_write_current_model, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_toggle_exec_edit\fP (GtkWidget *toggled_button, gpointer user_data)"
+.br
+.ti -1c
+.RI "void \fBon_toggle_state_rules_data\fP (GtkWidget *toggled_button, gpointer widget_all_vs_selected_one)"
+.br
+.ti -1c
+.RI "void \fBon_clicked_topbar_right_search\fP (GtkWidget *btt_menu, gpointer list_box)"
+.br
+.ti -1c
+.RI "void \fBon_clicked_topbar_right_home\fP (GtkWidget *btt_reset, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_updating_objects_transparencies\fP (GtkWidget *btt_source, GtkScrollbar *scrollbar)"
+.br
+.ti -1c
+.RI "void \fBon_resetting_XYZ_in_state_page\fP ()"
+.br
+.ti -1c
+.RI "void \fBon_situations_box_do_reset\fP (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)"
+.br
+.ti -1c
+.RI "void \fBon_topbar_right_measure_clicked\fP (GtkWidget *btt, gpointer button_icon_name)"
+.br
+.ti -1c
+.RI "void \fBon_start_new_measure\fP (GtkWidget *btt, gpointer btt_label)"
+.br
+.ti -1c
+.RI "void \fBon_select_rules_first\fP (GtkWidget *btt, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_measure_depends_on_a_single_event\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_depends_on_two_events\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_select_a_second_rules_set\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_select_a_second_measurement\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_skip_this_step\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_something_else\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_closing_page\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_single_event_occurences_nb\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_single_event_occurences_dates\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_single_event_occurences_situations\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_time_elapsed_between_two_events\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_third_event_occurences_in_between\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_entry_name_insert_after\fP (GtkWidget *entry, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_entry_name_delete_after\fP (GtkWidget *entry, gpointer data)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+events management functions
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "void on_axis_value_change (GtkAdjustment * adjustment, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_bind_user_tree_factory (GtkSignalListItemFactory * factory, GObject * object, gpointer user_data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_clicked_topbar_right_home (GtkWidget * btt_reset, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_clicked_topbar_right_search (GtkWidget * btt_menu, gpointer list_box)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_discard_current_model_before_editing (GtkWidget * btt_discard_current_model, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_entry_name_delete_after (GtkWidget * entry, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_entry_name_insert_after (GtkWidget * entry, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_glarea_realize (GtkWidget * widget)"
+
+.PP
+We need to set up our state when we realize the GtkGLArea widget\&.
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "gboolean on_glarea_render (GtkGLArea * area, GdkGLContext * context)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_glarea_unrealize (GtkWidget * widget)"
+
+.PP
+We should tear down the state when unrealizing\&.
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_resetting_XYZ_in_state_page ()"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_save_current_model_before_editing (GtkWidget * btt_save_current_model, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_select_rules_first (GtkWidget * btt, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_situations_box_do_reset (GtkWidget * btt_reset, GtkScrollbar * reset_scrollbar)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_start_new_measure (GtkWidget * btt, gpointer btt_label)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_toggle_exec_edit (GtkWidget * toggled_button, gpointer user_data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_toggle_state_rules_data (GtkWidget * toggled_button, gpointer widget_all_vs_selected_one)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_topbar_right_measure_clicked (GtkWidget * btt, gpointer button_icon_name)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_updating_objects_transparencies (GtkWidget * btt_source, GtkScrollbar * scrollbar)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_write_current_model (GtkWidget * btt_write_current_model, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/signal.h.3 b/doc/rtfm/man3/signal.h.3
new file mode 100644
index 0000000..a14cbde
--- /dev/null
+++ b/doc/rtfm/man3/signal.h.3
@@ -0,0 +1,642 @@
+.TH "include/signal.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/signal.h \- events management header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "void \fBon_windows_activation\fP (GtkApplication *app)"
+.br
+.ti -1c
+.RI "void \fBon_windows_startup\fP (GtkApplication *app)"
+.br
+.ti -1c
+.RI "void \fBon_toggle_exec_edit\fP (GtkWidget *btt_XOR_EXEC_EDIT, gpointer user_data)"
+.br
+.ti -1c
+.RI "void \fBon_toggle_state_rules_data\fP (GtkWidget *btt_STATE_RULES_DATA, gpointer user_data)"
+.br
+.ti -1c
+.RI "void \fBon_save_current_model_before_editing\fP (GtkWidget *btt_SAVE_CURRENT_MODEL, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_discard_current_model_before_editing\fP (GtkWidget *btt_SAVE_CURRENT_MODEL, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_write_current_model\fP (GtkWidget *btt_WRITE_CURRENT_MODEL, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_setup_user_tree_factory\fP (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)"
+.br
+.ti -1c
+.RI "void \fBon_bind_user_tree_factory\fP (GtkSignalListItemFactory *factory, GObject *object, gpointer user_data)"
+.br
+.ti -1c
+.RI "gboolean \fBon_glarea_render\fP (GtkGLArea *area, GdkGLContext *context)"
+.br
+.ti -1c
+.RI "void \fBon_glarea_realize\fP (GtkWidget *widget)"
+.br
+.RI "We need to set up our state when we realize the GtkGLArea widget\&. "
+.ti -1c
+.RI "void \fBon_glarea_unrealize\fP (GtkWidget *widget)"
+.br
+.RI "We should tear down the state when unrealizing\&. "
+.ti -1c
+.RI "void \fBon_axis_value_change\fP (GtkAdjustment *adjustment, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_updating_objects_transparencies\fP (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)"
+.br
+.ti -1c
+.RI "void \fBon_situations_box_do_reset\fP (GtkWidget *btt_reset, GtkScrollbar *reset_scrollbar)"
+.br
+.ti -1c
+.RI "void \fBon_resetting_XYZ_in_state_page\fP ()"
+.br
+.ti -1c
+.RI "void \fBon_clicked_topbar_right_home\fP (GtkWidget *btt_reset, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_clicked_topbar_right_search\fP (GtkWidget *btt_menu, gpointer list_box)"
+.br
+.ti -1c
+.RI "void \fBon_topbar_right_measure_clicked\fP (GtkWidget *btt_measure, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_start_new_measure\fP (GtkWidget *btt_new_measure, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_select_rules_first\fP (GtkWidget *btt_new_measure, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_measure_depends_on_a_single_event\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_depends_on_two_events\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_select_a_second_rules_set\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_single_event_occurences_nb\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_single_event_occurences_dates\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_single_event_occurences_situations\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_time_elapsed_between_two_events\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_measure_third_event_occurences_in_between\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_select_a_second_measurement\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_skip_this_step\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_something_else\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_closing_page\fP (GtkWidget *btt, gpointer data)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBon_start_new_engine\fP (GtkWidget *btt, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_entry_name_insert_after\fP (GtkWidget *entry, gpointer data)"
+.br
+.ti -1c
+.RI "void \fBon_entry_name_delete_after\fP (GtkWidget *entry, gpointer data)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+events management header
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "void on_axis_value_change (GtkAdjustment * adjustment, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_bind_user_tree_factory (GtkSignalListItemFactory * factory, GObject * object, gpointer user_data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_clicked_topbar_right_home (GtkWidget * btt_reset, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_clicked_topbar_right_search (GtkWidget * btt_menu, gpointer list_box)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_discard_current_model_before_editing (GtkWidget * btt_discard_current_model, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_entry_name_delete_after (GtkWidget * entry, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_entry_name_insert_after (GtkWidget * entry, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_glarea_realize (GtkWidget * widget)"
+
+.PP
+We need to set up our state when we realize the GtkGLArea widget\&.
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "gboolean on_glarea_render (GtkGLArea * area, GdkGLContext * context)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_glarea_unrealize (GtkWidget * widget)"
+
+.PP
+We should tear down the state when unrealizing\&.
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_resetting_XYZ_in_state_page ()"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_save_current_model_before_editing (GtkWidget * btt_save_current_model, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_select_rules_first (GtkWidget * btt, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_situations_box_do_reset (GtkWidget * btt_reset, GtkScrollbar * reset_scrollbar)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_start_new_measure (GtkWidget * btt, gpointer btt_label)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_toggle_exec_edit (GtkWidget * toggled_button, gpointer user_data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_toggle_state_rules_data (GtkWidget * toggled_button, gpointer widget_all_vs_selected_one)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_topbar_right_measure_clicked (GtkWidget * btt, gpointer button_icon_name)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_updating_objects_transparencies (GtkWidget * btt_source, GtkScrollbar * scrollbar)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SS "void on_windows_activation (GtkApplication * app)"
+
+.PP
+\fBSince\fP
+.RS 4
+2024-06
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+\fBwidget_design_main_window()\fP
+.PP
+widget_design_dialog_window()
+.PP
+widget_design_text_window()
+.PP
+util_trigger_test()
+.PP
+\fBfsm_journal_event()\fP
+.PP
+\fBmain()\fP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI*app\fP
+.RE
+.PP
+
+.SS "void on_windows_startup (GtkApplication * app)"
+
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+\fBfsm_journal_event()\fP
+.PP
+\fBmain()\fP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI*app\fP
+.RE
+.PP
+
+.SS "void on_write_current_model (GtkWidget * btt_write_current_model, gpointer data)"
+
+.PP
+\fBDate\fP
+.RS 4
+
+.RE
+.PP
+\fBAuthor\fP
+.RS 4
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+.PP
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI\fP .RE
+.PP
+return
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/util.h.3 b/doc/rtfm/man3/util.h.3
new file mode 100644
index 0000000..afdd7f7
--- /dev/null
+++ b/doc/rtfm/man3/util.h.3
@@ -0,0 +1,283 @@
+.TH "include/util.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/util.h \- utilities header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include \fP
+.br
+\fC#include '\&.\&./include/fsm\&.h'\fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "struct \fBpile\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBelem\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBdblist\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "struct \fBslist\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SS "Typedefs"
+
+.in +1c
+.ti -1c
+.RI "typedef struct \fBpile\fP \fBpile\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "typedef struct \fBelem\fP \fBelem\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "typedef struct \fBslist\fP \fBslist\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "char * \fButil_read_file\fP (char *filename)"
+.br
+.ti -1c
+.RI "char * \fButil_concat\fP (const char *str,\&.\&.\&.)"
+.br
+.ti -1c
+.RI "void \fButil_pile_clear\fP (\fBpile\fP **)"
+.br
+.ti -1c
+.RI "void \fButil_pile_view\fP (\fBpile\fP *)"
+.br
+.ti -1c
+.RI "int \fButil_pile_push\fP (\fBpile\fP **, int)"
+.br
+.ti -1c
+.RI "int \fButil_pile_pop\fP (\fBpile\fP **)"
+.br
+.ti -1c
+.RI "int \fButil_pile_length\fP (\fBpile\fP *p)"
+.br
+.ti -1c
+.RI "void \fButil_list_2x2_init\fP (\fBdblist\fP *l)"
+.br
+.ti -1c
+.RI "void \fButil_list_2x2_clear\fP (\fBdblist\fP *l)"
+.br
+.ti -1c
+.RI "void \fButil_list_2x2_view\fP (\fBdblist\fP l)"
+.br
+.ti -1c
+.RI "int \fButil_list_2x2_push_back\fP (\fBdblist\fP *l, int val)"
+.br
+.ti -1c
+.RI "int \fButil_list_2x2_push_front\fP (\fBdblist\fP *l, int val)"
+.br
+.ti -1c
+.RI "int \fButil_list_2x2_pop_back\fP (\fBdblist\fP *l)"
+.br
+.ti -1c
+.RI "int \fButil_list_2x2_pop_front\fP (\fBdblist\fP *l)"
+.br
+.ti -1c
+.RI "int \fButil_list_2x2_length\fP (\fBdblist\fP l)"
+.br
+.ti -1c
+.RI "void \fButil_sorted_list_clear\fP (\fBslist\fP **sl)"
+.br
+.ti -1c
+.RI "void \fButil_sorted_list_view\fP (\fBslist\fP *sl)"
+.br
+.ti -1c
+.RI "int \fButil_sorted_list_insert\fP (\fBslist\fP **sl, int val)"
+.br
+.ti -1c
+.RI "int \fButil_sorted_list_pop\fP (\fBslist\fP **sl)"
+.br
+.ti -1c
+.RI "int \fButil_sorted_list_length\fP (\fBslist\fP *sl)"
+.br
+.ti -1c
+.RI "void \fButil_trigger_test\fP ()"
+.br
+.ti -1c
+.RI "void \fButil_test_pile\fP ()"
+.br
+.ti -1c
+.RI "void \fButil_test_double_list\fP ()"
+.br
+.ti -1c
+.RI "void \fButil_test_sorted_list\fP ()"
+.br
+.ti -1c
+.RI "long \fButil_gl_get_stack\fP (void *container_widget)"
+.br
+.RI "Look for stack entry and returns stack_id\&. "
+.ti -1c
+.RI "long \fButil_gl_is_util_ready\fP (void *container_widget)"
+.br
+.ti -1c
+.RI "bool \fButil_gl_init_stack\fP (void *container_widget, GError *error_buffer)"
+.br
+.RI "Look for stack entry and initializes OpenGL for it\&. "
+.ti -1c
+.RI "bool \fButil_gl_shutdown_stack\fP (void *container_widget, GError *error_buffer)"
+.br
+.RI "Look for stack entry and shutdowns OpenGL for it\&. "
+.ti -1c
+.RI "void \fButil_gl_clean_stack_index\fP (void)"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "bool \fButil_gl_render_stack\fP (GtkWidget *container_widget)"
+.br
+.RI "Look for stack entry and triggers OpenGL for drawing\&. "
+.ti -1c
+.RI "bool \fButil_gl_update_axis\fP (GtkWidget *container_widget, int axis, int value)"
+.br
+.RI "Look for stack entry and triggers OpenGL for drawing\&. "
+.ti -1c
+.RI "void \fButil_gl_shutdown_all_stacks\fP (void)"
+.br
+.RI "Look for every stack entry and shutdowns OpenGL for it\&. "
+.ti -1c
+.RI "GtkWidget * \fBcreate_axis_slider\fP (int axis)"
+.br
+.RI "Creates a slider widget\&. "
+.in -1c
+.SH "Detailed Description"
+.PP
+utilities header
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "GtkWidget * create_axis_slider (int axis)"
+
+.PP
+Creates a slider widget\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIaxis\fP the axis we're building a label for
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+GtkWidget*: pointer to the new widget
+.RE
+.PP
+
+.SS "long util_gl_get_stack (void * container_widget)"
+
+.PP
+Look for stack entry and returns stack_id\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcontainer_widget\fP generally the GtkBox that contains the GLArea
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+stack_id
+.RE
+.PP
+
+.SS "bool util_gl_init_stack (void * container_widget, GError * error_buffer)"
+
+.PP
+Look for stack entry and initializes OpenGL for it\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcontainer_widget\fP generally the GtkBox that contains the GLArea
+.br
+\fIerror_buffer\fP phantom documentation used to test the functioning of doxygen
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+bool: true if success
+.RE
+.PP
+
+.SS "bool util_gl_render_stack (GtkWidget * container_widget)"
+
+.PP
+Look for stack entry and triggers OpenGL for drawing\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcontainer_widget\fP generally the GtkBox that contains the GLArea
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+bool: true if success
+.RE
+.PP
+
+.SS "void util_gl_shutdown_all_stacks (void)"
+
+.PP
+Look for every stack entry and shutdowns OpenGL for it\&. returns true if success ? TODO why not bool ?
+.SS "bool util_gl_shutdown_stack (void * container_widget, GError * error_buffer)"
+
+.PP
+Look for stack entry and shutdowns OpenGL for it\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcontainer_widget\fP generally the GtkBox that contains the GLArea
+.br
+\fIerror_buffer\fP phantom documentation used to test the functioning of doxygen
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+bool: true if success
+.RE
+.PP
+
+.SS "bool util_gl_update_axis (GtkWidget * container_widget, int axis, int value)"
+
+.PP
+Look for stack entry and triggers OpenGL for drawing\&.
+.PP
+\fBParameters\fP
+.RS 4
+\fIcontainer_widget\fP generally the GtkBox that contains the GLArea
+.br
+\fIaxis\fP phantom documentation used to test the functioning of doxygen
+.br
+\fIvalue\fP phantom documentation used to test the functioning of doxygen
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+bool: true if success
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/util_concat.3 b/doc/rtfm/man3/util_concat.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_concat.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_gl_is_util_ready.3 b/doc/rtfm/man3/util_gl_is_util_ready.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_gl_is_util_ready.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_clear.3 b/doc/rtfm/man3/util_list_2x2_clear.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_clear.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_init.3 b/doc/rtfm/man3/util_list_2x2_init.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_init.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_length.3 b/doc/rtfm/man3/util_list_2x2_length.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_length.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_pop_back.3 b/doc/rtfm/man3/util_list_2x2_pop_back.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_pop_back.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_pop_front.3 b/doc/rtfm/man3/util_list_2x2_pop_front.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_pop_front.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_push_back.3 b/doc/rtfm/man3/util_list_2x2_push_back.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_push_back.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_push_front.3 b/doc/rtfm/man3/util_list_2x2_push_front.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_push_front.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_list_2x2_view.3 b/doc/rtfm/man3/util_list_2x2_view.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_list_2x2_view.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_pile_clear.3 b/doc/rtfm/man3/util_pile_clear.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_pile_clear.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_pile_length.3 b/doc/rtfm/man3/util_pile_length.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_pile_length.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_pile_pop.3 b/doc/rtfm/man3/util_pile_pop.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_pile_pop.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_pile_push.3 b/doc/rtfm/man3/util_pile_push.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_pile_push.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_pile_view.3 b/doc/rtfm/man3/util_pile_view.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_pile_view.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_read_file.3 b/doc/rtfm/man3/util_read_file.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_read_file.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_sorted_list_clear.3 b/doc/rtfm/man3/util_sorted_list_clear.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_sorted_list_clear.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_sorted_list_insert.3 b/doc/rtfm/man3/util_sorted_list_insert.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_sorted_list_insert.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_sorted_list_length.3 b/doc/rtfm/man3/util_sorted_list_length.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_sorted_list_length.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_sorted_list_pop.3 b/doc/rtfm/man3/util_sorted_list_pop.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_sorted_list_pop.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_sorted_list_view.3 b/doc/rtfm/man3/util_sorted_list_view.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_sorted_list_view.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_test_double_list.3 b/doc/rtfm/man3/util_test_double_list.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_test_double_list.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_test_pile.3 b/doc/rtfm/man3/util_test_pile.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_test_pile.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_test_sorted_list.3 b/doc/rtfm/man3/util_test_sorted_list.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_test_sorted_list.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/util_trigger_test.3 b/doc/rtfm/man3/util_trigger_test.3
new file mode 100644
index 0000000..beec56e
--- /dev/null
+++ b/doc/rtfm/man3/util_trigger_test.3
@@ -0,0 +1 @@
+.so man3/util.h.3
diff --git a/doc/rtfm/man3/widget.h.3 b/doc/rtfm/man3/widget.h.3
new file mode 100644
index 0000000..27ea0a5
--- /dev/null
+++ b/doc/rtfm/man3/widget.h.3
@@ -0,0 +1,587 @@
+.TH "include/widget.h" 3 "Version 0.1.0" "Gem-graph" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+include/widget.h \- widgets management header
+
+.SH SYNOPSIS
+.br
+.PP
+\fC#include \fP
+.br
+
+.SS "Classes"
+
+.in +1c
+.ti -1c
+.RI "struct \fBTreeNode_t\fP"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.in -1c
+.SS "Macros"
+
+.in +1c
+.ti -1c
+.RI "#define \fBW_MY_SCREEN\fP 1920"
+.br
+.ti -1c
+.RI "#define \fBH_MY_SCREEN\fP 1000"
+.br
+.ti -1c
+.RI "#define \fBW_TEXT_WINDOW\fP 550"
+.br
+.ti -1c
+.RI "#define \fBH_TEXT_WINDOW\fP H_MY_SCREEN"
+.br
+.ti -1c
+.RI "#define \fBW_TREE\fP 160"
+.br
+.ti -1c
+.RI "#define \fBW_DO_UNDO_REDO_BOX\fP 1300"
+.br
+.ti -1c
+.RI "#define \fBW_XYZ_BOX\fP 62"
+.br
+.ti -1c
+.RI "#define \fBH_XYZ_BOX\fP 200"
+.br
+.ti -1c
+.RI "#define \fBH_E_COLI\fP 760"
+.br
+.ti -1c
+.RI "#define \fBH_OBJECTS_SITUATIONS\fP 130"
+.br
+.ti -1c
+.RI "#define \fBW_COMPARATOR\fP 64"
+.br
+.ti -1c
+.RI "#define \fBW_RULES_USE\fP 90"
+.br
+.ti -1c
+.RI "#define \fBW_IMAGE_800\fP 800"
+.br
+.ti -1c
+.RI "#define \fBW_IMAGE_100\fP 100"
+.br
+.ti -1c
+.RI "#define \fBALL_VS_SELECTED\fP 340"
+.br
+.ti -1c
+.RI "#define \fBH_PARTITION_SYNTH\fP 1600"
+.br
+.ti -1c
+.RI "#define \fBW_PARTITION_SYNTH\fP 400"
+.br
+.ti -1c
+.RI "#define \fBPARTITION_STATE_TOP\fP 600"
+.br
+.ti -1c
+.RI "#define \fBPARTITION_SPACE_VS_CONTROLS_1\fP 920"
+.br
+.ti -1c
+.RI "#define \fBPARTITION_SPACE_VS_CONTROLS_2\fP 800"
+.br
+.ti -1c
+.RI "#define \fBPARTITION_SPACE_VS_CAMERA_IN_STATE\fP 1850"
+.br
+.ti -1c
+.RI "#define \fBPARTITION_SPACE_VS_CAMERA_IN_SYNTH\fP 1560"
+.br
+.ti -1c
+.RI "#define \fBLIST_W\fP 190"
+.br
+.ti -1c
+.RI "#define \fBLIST_H\fP 114"
+.br
+.ti -1c
+.RI "#define \fBH_PARTITION_RESULTS\fP 140"
+.br
+.in -1c
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "GtkWindow * \fBwidget_get_main_window\fP ()"
+.br
+.RI "getter "
+.ti -1c
+.RI "GtkWindow * \fBwidget_get_dialog_window\fP ()"
+.br
+.RI "getter "
+.ti -1c
+.RI "GtkWindow * \fBwidget_get_text_window\fP ()"
+.br
+.RI "getter "
+.ti -1c
+.RI "void \fBwidget_design_main_window\fP (GtkWindow *main_window, GtkApplication *app)"
+.br
+.ti -1c
+.RI "void \fBwidget_design_dialog_window\fP (GtkWindow *main_window, GtkWindow *dialog_window)"
+.br
+.ti -1c
+.RI "void \fBwidget_design_text_window\fP (GtkWindow *main_window, GtkWindow *text_window)"
+.br
+.ti -1c
+.RI "const char * \fBwidget_get_btt_label_synth\fP ()"
+.br
+.ti -1c
+.RI "const char * \fBwidget_get_btt_label_state\fP ()"
+.br
+.ti -1c
+.RI "const char * \fBwidget_get_btt_label_rules\fP ()"
+.br
+.ti -1c
+.RI "const char * \fBwidget_get_btt_label_data\fP ()"
+.br
+.ti -1c
+.RI "void \fBwindow_design_topbar_left\fP (GtkWidget *header_bar)"
+.br
+.ti -1c
+.RI "void \fBwindow_design_topbar_right\fP (GtkWidget *header_bar, GtkApplication *app)"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_page_synth\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_page_state\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_page_data\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_page_measure\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_page_engine\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_time_dependent\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_space_vs_non_time_dependent\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_non_time_dependent\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_space_view\fP (int partition_space_vs_camera)"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_graph_view_control\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_space_edit_control\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_sequence_control\fP ()"
+.br
+.ti -1c
+.RI "void \fBwidget_set_situations_value\fP (int value)"
+.br
+.ti -1c
+.RI "void \fBwidget_set_objects_value\fP (int rank, int value)"
+.br
+.ti -1c
+.RI "int \fBwidget_get_object_transparency\fP (int i)"
+.br
+.ti -1c
+.RI "void \fBwidget_reset_XYZ_in_state_pane\fP ()"
+.br
+.ti -1c
+.RI "void \fBwidget_reset_XYZ_scrollbars_rule\fP ()"
+.br
+.ti -1c
+.RI "void \fBwidget_reset_XYZ_scrollbars_state\fP ()"
+.br
+.ti -1c
+.RI "void \fBwidget_reset_XYZ_scrollbars_synth\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_pane_all_rules_left\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_pane_selected_rule_right\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_rules_pilot_box\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_rules_tree_tools\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_rules_use\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_rule_edition_tools\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_rule_investigation_tools\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_algebra\fP ()"
+.br
+.RI "Provides the three lists needed to describe a rule algebraically\&. "
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_geometry\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_conditions_list_btt\fP ()"
+.br
+.RI "Builds and presents the conditions list of a rule\&. "
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_assignations_list_btt\fP ()"
+.br
+.RI "Presents the list of all the elementary actions (assignments) performed when the rule is applied\&. "
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_identity_btt\fP ()"
+.br
+.RI "Hosts a list of character strings that can be combined to provide a 'human readable' rule identifier\&. "
+.ti -1c
+.RI "GtkEntry \fBwidget_set_item_text\fP (GtkWidget *list_box, const char *text, bool editable)"
+.br
+.RI "Format an entry (a text item) in a list\&. "
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_camera\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_selected_rule_before_after\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_results_box_organize\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_results_box_display\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_results_box_time\fP ()"
+.br
+.ti -1c
+.RI "struct \fBTreeNode_t\fP * \fBwidget_create_user_rules_tree_node\fP (const gchar *text)"
+.br
+.ti -1c
+.RI "void \fBwidget_add_tree_child_node\fP (struct \fBTreeNode_t\fP *parent, struct \fBTreeNode_t\fP *child)"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_user_rules_tree\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_get_text_from_address\fP (gchar *text_name)"
+.br
+.ti -1c
+.RI "char * \fBwidget_get_address_text_theory\fP ()"
+.br
+.RI "return '\&./data/text/théorie\&.txt' "
+.ti -1c
+.RI "char * \fBwidget_get_address_text_practice\fP ()"
+.br
+.RI "return '\&./data/text/pratique\&.txt' "
+.ti -1c
+.RI "char * \fBwidget_get_address_text_alpha_index\fP ()"
+.br
+.RI "return '\&./alphabetic_index\&.all' "
+.ti -1c
+.RI "void * \fBwidget_get_an_impression_of_what_a_rules_comparator_could_be\fP ()"
+.br
+.RI "phantom documentation used to test the functioning of doxygen "
+.ti -1c
+.RI "void \fBwidget_let_us_create_a_complex_useless_and_expensive_tree\fP (struct \fBTreeNode_t\fP *tree_root)"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_new\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_select_rules_first\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_depends_on_one_or_two_events\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_depends_on_a_single_event\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_depends_on_two_events\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_select_a_second_rules_set\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_choose_an_event_type\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_correlate\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_insert_in_measurements_list\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_do_end_creation_of_measurement_process\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_event_occurences_nb\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_event_occurences_dates\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_event_occurences_situations\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_time_elapsed_between_two_events\fP ()"
+.br
+.ti -1c
+.RI "void * \fBwidget_measure_third_event_occurences_in_between\fP ()"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+widgets management header
+
+This file is part of Gem-graph\&.
+.SH "Function Documentation"
+.PP
+.SS "void widget_design_main_window (GtkWindow * main_window, GtkApplication * app)"
+
+.PP
+\fBParameters\fP
+.RS 4
+\fI*main_window\fP
+.br
+\fI*app\fP
+.RE
+.PP
+
+.SS "GtkWindow * widget_get_dialog_window ()"
+
+.PP
+getter
+.PP
+\fBSince\fP
+.RS 4
+2024-07
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/signal
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+dialog_window
+.RE
+.PP
+
+.SS "GtkWindow * widget_get_main_window ()"
+
+.PP
+getter
+.PP
+\fBSince\fP
+.RS 4
+2024-07
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/signal
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+main_window
+.RE
+.PP
+
+.SS "void * widget_get_selected_rule_algebra ()"
+
+.PP
+Provides the three lists needed to describe a rule algebraically\&. The algebraic definition of a rule comprises three types of character strings organised into three lists:
+.IP "\(bu" 2
+conditions
+.IP "\(bu" 2
+assignations
+.IP "\(bu" 2
+name (a set of identity elements)
+.PP
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/one_rule/algebra/conditions()
+.PP
+src/widget/one_rule/algebra/assignations()
+.PP
+src/widget/one_rule/algebra/identity()
+.PP
+src/widget/one_rule/dispatch()
+.RE
+.PP
+
+.SS "void * widget_get_selected_rule_assignations_list_btt ()"
+
+.PP
+Presents the list of all the elementary actions (assignments) performed when the rule is applied\&. Today, an arbitrary presentation with no link to the XML model and no verification of compliance with the meta-rules\&. (see below) TODO
+.PP
+|- - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - - >
+.PP
+This list groups all the elementary assignments of the rule\&. No assignment should be repeated or modified by other assignments\&. (== a unique assignment per address in rule workspace) Completeness is not required\&. (== there does not need to be one assignment per address in the rule workspace)
+.PP
+< - - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - -|
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/one_rule/algebra/utilities/widget_set_item_text()
+.PP
+src/fsm/dispatch/fsm_journal_event() < TODO (for each item ?)
+.PP
+src/widget/one_rule/algebra/dispatch()
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+the assignations list
+.RE
+.PP
+
+.SS "void * widget_get_selected_rule_conditions_list_btt ()"
+
+.PP
+Builds and presents the conditions list of a rule\&. This list sets out all the conditions that the rule must meet in order to be applied\&.
+.PP
+Today, an arbitrary presentation with no link to the XML model and no verification of compliance with the meta-rules\&. (see below) TODO
+.PP
+|- - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - - >
+.PP
+No conditions should be repeated\&. No condition may contradict another (== a unique condition per address in rule workspace) Completeness is not required (== there does not need to be one condition per address in the rule workspace)
+.PP
+(NB The following applies to server workers) Two rules cannot share the same set of conditions\&. If several rules apply to the same set of local conditions - which can happen if several different actions are possible from the same situation - they must each include an additional condition determining their probability of execution in the event of a conflict\&. If two rules share the same local set of conditions, they must both be evaluated\&. If all the conditions of one rule are included in the conditions of another rule, then the other rule must be evaluated first\&.
+.PP
+< - - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - -|
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/one_rule/algebra/utilities/widget_set_item_text()
+.PP
+src/fsm/dispatch/fsm_journal_event() < TODO (for each item ?)
+.PP
+src/widget/one_rule/algebra/dispatch()
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+the conditions list
+.RE
+.PP
+
+.SS "void * widget_get_selected_rule_identity_btt ()"
+
+.PP
+Hosts a list of character strings that can be combined to provide a 'human readable' rule identifier\&. This list can also contain non-mandatory elements\&.
+.PP
+Each rule can have a specific 'human readable' name chosen by its designer\&. This name can be used to identify the rule\&. It is desirable for a unique name to be accepted and shared by as many users as possible\&.
+.PP
+On the contrary, for the automaton, the identity of each rule is given exclusively by its set of conditions\&.
+.PP
+Today, this function provides only an arbitrary presentation with no link to the XML model and no verification of compliance with the meta-rules\&. (see below) TODO
+.PP
+|- - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - - >
+.PP
+No item of the list should be repeated\&. No element describing the function of the rule can contradict another\&. All the elements required for identification by name must be present\&. Uniqueness is required (This name must be usable as a key)\&. Non-mandatory elements can be added (comments, etc\&.)\&.
+.PP
+< - - - - - - - - - - - - - - meta-rules - - - - - - - - - - - - - - -|
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/one_rule/algebra/utilities/widget_set_item_text()
+.PP
+src/fsm/dispatch/fsm_journal_event() < TODO (for each item ?)
+.PP
+src/widget/one_rule/algebra/dispatch/gtk_box_append()
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+rule identity
+.RE
+.PP
+
+.SS "GtkWindow * widget_get_text_window ()"
+
+.PP
+getter
+.PP
+\fBSince\fP
+.RS 4
+2024-07
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/signal
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+text_window
+.RE
+.PP
+
+.SS "GtkEntry widget_set_item_text (GtkWidget * list_box, const char * text, bool editable)"
+
+.PP
+Format an entry (a text item) in a list\&.
+.PP
+\fBSince\fP
+.RS 4
+2024-08
+.RE
+.PP
+\fBSee also\fP
+.RS 4
+src/widget/one_rule/algebra/conditions()
+.PP
+src/widget/one_rule/algebra/assign()
+.PP
+src/widget/one_rule/algebra/identity()
+.RE
+.PP
+\fBParameters\fP
+.RS 4
+\fI*list_box\fP
+.br
+\fI*text\fP
+.br
+\fIeditable\fP
+.RE
+.PP
+\fBReturns\fP
+.RS 4
+*entry < a text item
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for Gem-graph from the source code\&.
diff --git a/doc/rtfm/man3/widget_add_tree_child_node.3 b/doc/rtfm/man3/widget_add_tree_child_node.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_add_tree_child_node.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_create_user_rules_tree_node.3 b/doc/rtfm/man3/widget_create_user_rules_tree_node.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_create_user_rules_tree_node.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_design_dialog_window.3 b/doc/rtfm/man3/widget_design_dialog_window.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_design_dialog_window.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_design_main_window.3 b/doc/rtfm/man3/widget_design_main_window.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_design_main_window.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_design_text_window.3 b/doc/rtfm/man3/widget_design_text_window.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_design_text_window.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_address_text_alpha_index.3 b/doc/rtfm/man3/widget_get_address_text_alpha_index.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_address_text_alpha_index.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_get_address_text_practice.3 b/doc/rtfm/man3/widget_get_address_text_practice.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_address_text_practice.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_get_address_text_theory.3 b/doc/rtfm/man3/widget_get_address_text_theory.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_address_text_theory.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_get_an_impression_of_what_a_rules_comparator_could_be.3 b/doc/rtfm/man3/widget_get_an_impression_of_what_a_rules_comparator_could_be.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_an_impression_of_what_a_rules_comparator_could_be.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_btt_label_data.3 b/doc/rtfm/man3/widget_get_btt_label_data.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_btt_label_data.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_btt_label_rules.3 b/doc/rtfm/man3/widget_get_btt_label_rules.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_btt_label_rules.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_btt_label_state.3 b/doc/rtfm/man3/widget_get_btt_label_state.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_btt_label_state.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_btt_label_synth.3 b/doc/rtfm/man3/widget_get_btt_label_synth.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_btt_label_synth.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_dialog_window.3 b/doc/rtfm/man3/widget_get_dialog_window.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_dialog_window.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_get_graph_view_control.3 b/doc/rtfm/man3/widget_get_graph_view_control.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_graph_view_control.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_main_window.3 b/doc/rtfm/man3/widget_get_main_window.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_main_window.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_get_non_time_dependent.3 b/doc/rtfm/man3/widget_get_non_time_dependent.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_non_time_dependent.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_object_transparency.3 b/doc/rtfm/man3/widget_get_object_transparency.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_object_transparency.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_page_data.3 b/doc/rtfm/man3/widget_get_page_data.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_page_data.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_page_engine.3 b/doc/rtfm/man3/widget_get_page_engine.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_page_engine.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_page_measure.3 b/doc/rtfm/man3/widget_get_page_measure.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_page_measure.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_page_state.3 b/doc/rtfm/man3/widget_get_page_state.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_page_state.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_page_synth.3 b/doc/rtfm/man3/widget_get_page_synth.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_page_synth.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_pane_all_rules_left.3 b/doc/rtfm/man3/widget_get_pane_all_rules_left.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_pane_all_rules_left.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_pane_selected_rule_right.3 b/doc/rtfm/man3/widget_get_pane_selected_rule_right.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_pane_selected_rule_right.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_results_box_display.3 b/doc/rtfm/man3/widget_get_results_box_display.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_results_box_display.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_results_box_organize.3 b/doc/rtfm/man3/widget_get_results_box_organize.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_results_box_organize.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_results_box_time.3 b/doc/rtfm/man3/widget_get_results_box_time.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_results_box_time.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_rule_edition_tools.3 b/doc/rtfm/man3/widget_get_rule_edition_tools.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_rule_edition_tools.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_rule_investigation_tools.3 b/doc/rtfm/man3/widget_get_rule_investigation_tools.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_rule_investigation_tools.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_rules_pilot_box.3 b/doc/rtfm/man3/widget_get_rules_pilot_box.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_rules_pilot_box.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_rules_tree_tools.3 b/doc/rtfm/man3/widget_get_rules_tree_tools.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_rules_tree_tools.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_rules_use.3 b/doc/rtfm/man3/widget_get_rules_use.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_rules_use.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_selected_rule.3 b/doc/rtfm/man3/widget_get_selected_rule.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_selected_rule.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_selected_rule_before_after.3 b/doc/rtfm/man3/widget_get_selected_rule_before_after.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_selected_rule_before_after.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_selected_rule_camera.3 b/doc/rtfm/man3/widget_get_selected_rule_camera.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_selected_rule_camera.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_selected_rule_geometry.3 b/doc/rtfm/man3/widget_get_selected_rule_geometry.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_selected_rule_geometry.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_sequence_control.3 b/doc/rtfm/man3/widget_get_sequence_control.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_sequence_control.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_space_edit_control.3 b/doc/rtfm/man3/widget_get_space_edit_control.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_space_edit_control.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_space_view.3 b/doc/rtfm/man3/widget_get_space_view.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_space_view.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_space_vs_non_time_dependent.3 b/doc/rtfm/man3/widget_get_space_vs_non_time_dependent.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_space_vs_non_time_dependent.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_text_from_address.3 b/doc/rtfm/man3/widget_get_text_from_address.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_text_from_address.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_text_window.3 b/doc/rtfm/man3/widget_get_text_window.3
new file mode 100644
index 0000000..c6006cc
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_text_window.3
@@ -0,0 +1 @@
+.so man3/dispatch.c.3
diff --git a/doc/rtfm/man3/widget_get_time_dependent.3 b/doc/rtfm/man3/widget_get_time_dependent.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_time_dependent.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_get_user_rules_tree.3 b/doc/rtfm/man3/widget_get_user_rules_tree.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_get_user_rules_tree.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_let_us_create_a_complex_useless_and_expensive_tree.3 b/doc/rtfm/man3/widget_let_us_create_a_complex_useless_and_expensive_tree.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_let_us_create_a_complex_useless_and_expensive_tree.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_choose_an_event_type.3 b/doc/rtfm/man3/widget_measure_do_choose_an_event_type.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_choose_an_event_type.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_correlate.3 b/doc/rtfm/man3/widget_measure_do_correlate.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_correlate.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_depends_on_a_single_event.3 b/doc/rtfm/man3/widget_measure_do_depends_on_a_single_event.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_depends_on_a_single_event.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_depends_on_one_or_two_events.3 b/doc/rtfm/man3/widget_measure_do_depends_on_one_or_two_events.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_depends_on_one_or_two_events.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_depends_on_two_events.3 b/doc/rtfm/man3/widget_measure_do_depends_on_two_events.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_depends_on_two_events.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_end_creation_of_measurement_process.3 b/doc/rtfm/man3/widget_measure_do_end_creation_of_measurement_process.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_end_creation_of_measurement_process.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_insert_in_measurements_list.3 b/doc/rtfm/man3/widget_measure_do_insert_in_measurements_list.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_insert_in_measurements_list.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_select_a_second_rules_set.3 b/doc/rtfm/man3/widget_measure_do_select_a_second_rules_set.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_select_a_second_rules_set.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_do_select_rules_first.3 b/doc/rtfm/man3/widget_measure_do_select_rules_first.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_do_select_rules_first.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_event_occurences_dates.3 b/doc/rtfm/man3/widget_measure_event_occurences_dates.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_event_occurences_dates.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_event_occurences_nb.3 b/doc/rtfm/man3/widget_measure_event_occurences_nb.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_event_occurences_nb.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_event_occurences_situations.3 b/doc/rtfm/man3/widget_measure_event_occurences_situations.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_event_occurences_situations.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_new.3 b/doc/rtfm/man3/widget_measure_new.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_new.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_third_event_occurences_in_between.3 b/doc/rtfm/man3/widget_measure_third_event_occurences_in_between.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_third_event_occurences_in_between.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_measure_time_elapsed_between_two_events.3 b/doc/rtfm/man3/widget_measure_time_elapsed_between_two_events.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_measure_time_elapsed_between_two_events.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_reset_XYZ_in_state_pane.3 b/doc/rtfm/man3/widget_reset_XYZ_in_state_pane.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_reset_XYZ_in_state_pane.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_reset_XYZ_scrollbars_rule.3 b/doc/rtfm/man3/widget_reset_XYZ_scrollbars_rule.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_reset_XYZ_scrollbars_rule.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_reset_XYZ_scrollbars_state.3 b/doc/rtfm/man3/widget_reset_XYZ_scrollbars_state.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_reset_XYZ_scrollbars_state.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_reset_XYZ_scrollbars_synth.3 b/doc/rtfm/man3/widget_reset_XYZ_scrollbars_synth.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_reset_XYZ_scrollbars_synth.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_set_objects_value.3 b/doc/rtfm/man3/widget_set_objects_value.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_set_objects_value.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/widget_set_situations_value.3 b/doc/rtfm/man3/widget_set_situations_value.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/widget_set_situations_value.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/window_design_topbar_left.3 b/doc/rtfm/man3/window_design_topbar_left.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/window_design_topbar_left.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/doc/rtfm/man3/window_design_topbar_right.3 b/doc/rtfm/man3/window_design_topbar_right.3
new file mode 100644
index 0000000..f23c759
--- /dev/null
+++ b/doc/rtfm/man3/window_design_topbar_right.3
@@ -0,0 +1 @@
+.so man3/widget.h.3
diff --git a/include/action.h b/include/action.h
index f76166f..c3420f9 100644
--- a/include/action.h
+++ b/include/action.h
@@ -1,26 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Actions header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2024 Adrien Bourmault *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * actions header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
// https://docs.gtk.org/gio/class.MenuItem.html
// https://docs.gtk.org/gio/ctor.MenuItem.new.html
diff --git a/include/base.h b/include/base.h
index 08b9fee..c1f0b19 100644
--- a/include/base.h
+++ b/include/base.h
@@ -1,26 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Base header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2021-2024 Adrien Bourmault *
-* Copyright © 2021-2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * base header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
diff --git a/include/fsm.h b/include/fsm.h
index 027a9ba..b5ac718 100644
--- a/include/fsm.h
+++ b/include/fsm.h
@@ -1,25 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Finite state machine header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * fsm (Finite State Machine) management header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#pragma once
diff --git a/include/graphics.h b/include/graphics.h
index dd604ac..01a4b2c 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -1,25 +1,28 @@
-/*** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Graphics header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2023-2024 Adrien Bourmault *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * graphics header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#pragma once
diff --git a/include/parse.h b/include/parse.h
index f630bdf..634cdbd 100644
--- a/include/parse.h
+++ b/include/parse.h
@@ -1,26 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Model parsing header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2021-2024 Adrien Bourmault *
-* Copyright © 2021-2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * model parsing header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#pragma once
diff --git a/include/signal.h b/include/signal.h
index ea67a0f..80e17d2 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -1,26 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Events management header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2021-2024 Adrien Bourmault *
-* Copyright © 2021-2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * events management header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#pragma once
diff --git a/include/util.h b/include/util.h
index 5d2ff4b..cf7f233 100644
--- a/include/util.h
+++ b/include/util.h
@@ -1,25 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Utilities header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * utilities header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#pragma once
diff --git a/include/widget.h b/include/widget.h
index 257f5fa..09810a2 100644
--- a/include/widget.h
+++ b/include/widget.h
@@ -1,25 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Widgets management header *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as publishedby the Free Software Foundation, *
-* either version 3 of the License, or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * widgets hierarchy header
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#pragma once
@@ -38,9 +41,9 @@
// called in signal / switch_state_rules_data() / gtk_window_set_child()
// defined in widget / dispatch
-void *widget_get_main_window();
-void *widget_get_dialog_window();
-void *widget_get_text_window();
+GtkWindow *widget_get_main_window();
+GtkWindow *widget_get_dialog_window();
+GtkWindow *widget_get_text_window();
// called in widget / dispatch.c / on_windows_activation()
diff --git a/src/actions.c b/src/actions.c
index 4989be4..abb1dbb 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -1,28 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Actions functions *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2021-2024 Adrien Bourmault *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * events management (actions)
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
//
//
//
diff --git a/src/fsm/dispatch.c b/src/fsm/dispatch.c
index ff48fef..6a8ee3b 100644
--- a/src/fsm/dispatch.c
+++ b/src/fsm/dispatch.c
@@ -1,27 +1,54 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Finite State Machine *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * @brief fsm (Finite State Machine) tasks dispatcher
+ *
+ * This file is part of Gem-graph.
+ *
+ * @details
+ * The Finite State Machine (fsm) describes all the possible states of the
+ * Gem-graph client and all the transitions between them.
+ * It manages several kinds of exclusive states:
+ * - Run the model or edit it.
+ * - Select a single view of the model from all those possible.
+ * The different views show either the space, or the rule tree,
+ * or a single rule of interest, or measurements or results.
+ * NB an overview is possible, but it does not provide details.
+ * - Apply a selected measurement to the currently running model
+ * - Select some results for study or/and presentation.
+ * - Choose the user's preferred values for a set of parameters
+ * used to modify the appearance or behaviour of gem-graph.
+ *
+ * Each state of the fsm is a combination of each of these states.
+ *
+ * The current state of the fsm must be
+ * - saved at the end of a work session and
+ * - reread (available to the user) at the start of a new session.
+ *
+ * No state of the fsm should be defined in another module.
+ *
+ * No fsm transition should be executed in another module.
+ *
+ * The journal is created, edited and published from here.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#include
@@ -44,40 +71,6 @@
*******************************************************************************/
-/**
- * @file
- *
- * @brief This Finite State Machine (fsm)
- * describes all the possible states of the Gem-graph client
- * and all the transitions between them.
- *
- * @details The gem-graph-client fsm manages several kinds of exclusive states:
- * - Run the model or edit it.
- * - Select a single view of the model from all those possible.
- * The different views show either the space, or the rule tree,
- * or a single rule of interest, or measurements or results.
- * NB an overview is possible, but it does not provide details.
- * - Apply a selected measurement to the currently running model
- * - Select some results for study or/and presentation.
- * - Choose the user's preferred values for a set of parameters
- * used to modify the appearance or behaviour of gem-graph.
- *
- * Each state of the fsm is a combination of each of these states.
- *
- * The current state of the fsm must be
- * - saved at the end of a work session and
- * - reread (available to the user) at the start of a new session.
- *
- * No state of the fsm should be defined in another module.
- *
- * No fsm transition should be executed in another module.
- *
- *
- *
- * The journal is created, edited and published from here.
- */
-
-
/*******************************************************************************
* J O U R N A L *
*******************************************************************************/
@@ -197,9 +190,9 @@ void fsm_journal_event (int severity,
*
* @since 2024-08
*
- * @callgraph
- * @see src/main/main()
* @callergraph
+ * @see src/main/main()
+ * @callgraph
* @see src/journal/fsm_journal_init()
* @see src/fsm/dispatch/fsm_journal_event()
* @see src/fsm/measures/manager/fsm_list_init_measures()
diff --git a/src/fsm/engine/manager.c b/src/fsm/engine/manager.c
index 7701ddb..17d93fa 100644
--- a/src/fsm/engine/manager.c
+++ b/src/fsm/engine/manager.c
@@ -1,27 +1,33 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Finite State Machine Engine *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * @brief fsm engine manager
+ *
+ * This file is part of Gem-graph. (is it really ?)
+ *
+ * @details
+ * I can't even remember what I had in mind when writing these notes...
+ * learning how to deal with events, perhaps...
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
+
#include
#include
diff --git a/src/fsm/measures/manager.c b/src/fsm/measures/manager.c
index c575a0f..12dc06a 100644
--- a/src/fsm/measures/manager.c
+++ b/src/fsm/measures/manager.c
@@ -1,84 +1,75 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* State machine / Measures *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * @brief fsm measures manager
+ *
+ * This file is part of Gem-graph. It inits the three lists used for measurements
+ * and results management: tools, data and displayables (disp) and provides access.
+ *
+ * @details
+ * F R O M M E A S U R E M E N T S T O P R E S E N T A T I O N S
+ * How should the sequence from measurements to results presentation be
+ * organized ?
+ *
+ * (1) create/edit some mesurement tools and/or activate existing ones
+ * (2) apply a mesurement tool to a situation to create a new data list
+ * data list = x, f(x), g(x),...
+ * these data are collected by the server and send to the client
+ * and possibly carry out any operations on these results
+ * (3) display (plot) the results and adjust the appearance of the tables
+ * - - -
+ * As a consequence, three lists at least must be created and maintained :
+ *
+ * (1) a mesurement tools list (see : fsm/measure/tool_list.c)
+ * which should mention if the tool is 'active' or 'inactive
+ * NB each rule ou rules-tree edition may change some items of that list
+ *
+ * (2) a data flows list (see : fsm/measure/flow_list.c)
+ * (it could either be named : fsm/measure/data_list.c)
+ * on which some operations could be performed :
+ * ex : filter, concat, inverse, scale, correlate, etc.
+ * NB each data flow should be available in a 'displayable form'
+ *
+ * (3) a displayed data list (see : fsm/measure/disp_list.c)
+ * NB some data may be displayed simultaneously in different pages
+ * ex : SYNTH & RESULTS
+ *
+ * NB these three lists should be stored in the XML model
+ * and restored at the beginning of a new session
+ * - - -
+ * (4) a journal (a pile) stores chronologically the fsm events during a session
+ * run (rules exec, mainly) in a journal (.log) one by session
+ * - - -
+ * When a rule is adequately tagged, it triggers a measure :
+ * fsm_rule_trig_measure (rule_id, object_id, measure_id) {...}
+ * The measurement is then taken and the result stored.
+ *
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
+
#include
#include
#include
#include "../../../include/fsm.h"
-/******************************************************************************/
-/* F R O M M E A S U R E M E N T S T O P R E S E N T A T I O N S */
-/* */
-/* How should the sequence */
-/* from measurements to results presentation */
-/* be organized */
-/* ? */
-/* */
-/* (1) create/edit some mesurement tools and/or activate existing ones */
-/* (2) apply a mesurement tool to a situation to create a new data list */
-/* data list = x, f(x), g(x),... */
-/* ces data sont collectées par le serveur et envoyées au client */
-/* */
-/* */
-/* */
-/* and possibly carry out any operations on these results */
-/* (3) display (plot) the results and adjust the appearance of the tables */
-/* - - - */
-/* */
-/* As a consequence, three lists at least */
-/* must be created and maintained : */
-/* */
-/* (1) a mesurement tools list (see : fsm/measure/tool_list.c) */
-/* which should mention if the tool is 'active' or 'inactive' */
-/* NB each rule ou rules-tree edition may change some items of that list */
-/* */
-/* (2) a data flows list (see : fsm/measure/flow_list.c) */
-/* (it could either be named : fsm/measure/data_list.c) */
-/* on which some operations could be performed : */
-/* ex : filter, concat, inverse, scale, correlate, etc. */
-/* NB each data flow should be available in a 'displayable form' */
-/* */
-/* (3) a displayed data list (see : fsm/measure/disp_list.c) */
-/* NB some data may be displayed simultaneously in different pages */
-/* ex : SYNTH & RESULTS */
-/* */
-/* NB these three lists should be stored in the XML model */
-/* and restored at the beginning of a new session */
-/* - - - */
-/* */
-/* (4) a journal (a pile) stores chronologically the fsm events */
-/* during a session run (rules exec, mainly) */
-/* dans un fichier journal (.log) un par session */
-/* - - - */
-/* */
-/* When a rule is adequately tagged, it triggers a measure : */
-/* fsm_rule_trig_measure (rule_id, object_id, measure_id) {...} */
-/* */
-/* The measurement is then taken and the result stored. */
-/* */
-/******************************************************************************/
@@ -86,7 +77,18 @@
-
+/**
+ * @since 2024-09
+ * @callergraph
+ * @see src/widget/measure/dispatch/widget_measure_event_occurences_nb()
+ * @see src/widget/measure/dispatch/widget_measure_event_occurences_dates()
+ * @see src/widget/measure/dispatch/widget_measure_event_occurences_situations()
+ * @see src/widget/measure/dispatch/widget_measure_time_elapsed_between_two_events()
+ * @see src/widget/measure/dispatch/widget_measure_third_event_occurences_in_between()
+ * @callgraph
+ * @see src/fsm/dispatch/fsm_journal_event()
+ * @param *measure_name
+ */
void fsm_add_measure (char *measure_name)
{
fsm_journal_event (DEBUG,
@@ -96,6 +98,11 @@ void fsm_add_measure (char *measure_name)
measure_name);
}
+/**
+ * @since 2024-09
+ * @callergraph
+ * @see src/fsm/dispatch/fsm_init()
+ */
void fsm_list_init_measures()
{
if (0) fsm_list_tools_test();
@@ -107,6 +114,12 @@ void fsm_list_init_measures()
"(double chained)");
}
+/**
+ * @since 2024-09
+ * @param rule_id
+ * @param object_id
+ * @param measure_id
+ */
void fsm_rule_trig_measure (int rule_id, int object_id, int measure_id) {}
diff --git a/src/fsm/preferences/manager.c b/src/fsm/preferences/manager.c
index b63af89..388ef2a 100644
--- a/src/fsm/preferences/manager.c
+++ b/src/fsm/preferences/manager.c
@@ -1,30 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Finite State Machine - Preferences management *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
/**
* @file
+ * fsm preferences manager
+ *
+ * This file is part of Gem-graph.
+ * It manages the preferences (maintain a list, provides access).
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
*/
diff --git a/src/fsm/results/manager.c b/src/fsm/results/manager.c
index eafd4e8..4ce6030 100644
--- a/src/fsm/results/manager.c
+++ b/src/fsm/results/manager.c
@@ -1,27 +1,29 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Finite State Machine - Results display *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * fsm results manager
+ *
+ * This file is part of Gem-graph.
+ * It manages the results (maintain a list, provides access).
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#include
diff --git a/src/graphics/draw.c b/src/graphics/draw.c
index 3f89e52..7c60eec 100644
--- a/src/graphics/draw.c
+++ b/src/graphics/draw.c
@@ -1,28 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Graphics - general drawing functions *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2023-2024 Adrien Bourmault *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * graphics - general drawing functions
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#include
diff --git a/src/graphics/grid.c b/src/graphics/grid.c
index 97ee63a..d671ced 100644
--- a/src/graphics/grid.c
+++ b/src/graphics/grid.c
@@ -1,28 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Graphics - grid/empty space drawing functions *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2023-2024 Adrien Bourmault *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * graphics - grid/empty space drawing functions
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#include "../../include/graphics.h"
diff --git a/src/graphics/init.c b/src/graphics/init.c
index 20cac95..6b3cb71 100644
--- a/src/graphics/init.c
+++ b/src/graphics/init.c
@@ -1,28 +1,29 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Graphics - initialization and graphic stack management *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2023-2024 Adrien Bourmault *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * graphics - initialization and graphic stack management
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021 Arthur Menges
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
+
#include "../../include/graphics.h"
diff --git a/src/graphics/shader.frag b/src/graphics/shader.frag
index 39c04cb..9316534 100644
--- a/src/graphics/shader.frag
+++ b/src/graphics/shader.frag
@@ -1,28 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Graphics - fragment shader *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2023 Arthur Menges *
-* Copyright © 2023-2024 Adrien Bourmault *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * graphics - fragment shader
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021 Arthur Menges
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#version 330 core
diff --git a/src/graphics/shader.vert b/src/graphics/shader.vert
index df5b6f9..f8b1205 100644
--- a/src/graphics/shader.vert
+++ b/src/graphics/shader.vert
@@ -1,28 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Graphics - vertex shader *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2023 Arthur Menges *
-* Copyright © 2023-2024 Adrien Bourmault *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * graphics - vertex shader
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021 Arthur Menges
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#version 330 core
diff --git a/src/journal.c b/src/journal.c
index 51052ff..bc0bbf8 100644
--- a/src/journal.c
+++ b/src/journal.c
@@ -1,27 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Finite State Machine - Journal *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * journal / log
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
//#include
#include
diff --git a/src/main.c b/src/main.c
index 68bbf85..f57665a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,13 +1,13 @@
/**
* @file
- * @brief Gem-graph-client main file.
+ * Gem-graph-client main file.
*
* This file is part of Gem-graph. It contains only the main function.
- *
* The function main() initialises the log, the finite state machine (fsm),
- * the application and the windows. The main window is opened on the 'synthetic
- * view' page of the current model by default. The main function closes all the
- * elements it opened at the end of program execution.
+ * the application and the windows and closes all the elements it opened
+ * at the end of program execution.
+ * The main window is opened on the 'synthetic view' page of the current model
+ * by default (@see the main window topbar dispatcher).
*
* @cond LICENSE
* Copyright © 2021 Libre en Communs
@@ -84,7 +84,7 @@ int main (int argc, char **argv)
//----------------------------- personal notes ---------------------------
-
+// TODO (ranger ça !)
/*
* Sur quel modèle se guider pour structurer le client gem-graph ?
diff --git a/src/signal.c b/src/signal.c
index 6f38242..4742ec6 100644
--- a/src/signal.c
+++ b/src/signal.c
@@ -1,29 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Events management functions *
-* *
-* Copyright © 2021 Libre en Communs *
-* Copyright © 2021 Arthur Menges *
-* Copyright © 2021-2024 Adrien Bourmault *
-* Copyright © 2021-2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * events callbacks
+ *
+ * This file is part of Gem-graph.
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
@@ -418,7 +417,7 @@ void on_toggle_exec_edit (GtkWidget *toggled_button, gpointer user_data)
void on_toggle_state_rules_data (GtkWidget *toggled_button, gpointer widget_all_vs_selected_one)
{
const char *toggled_button_name
- = gtk_check_button_get_label (GTK_CHECK_BUTTON (toggled_button));
+ = gtk_check_button_get_label (GTK_CHECK_BUTTON (toggled_button));
fsm_journal_event (DEBUG, BUTTON, "signal", "toggle_state_rules_data()",
util_concat ("[", toggled_button_name, "]", NULL));
int is_active = gtk_check_button_get_active (GTK_CHECK_BUTTON (toggled_button));
diff --git a/src/widget/dispatch.c b/src/widget/dispatch.c
index 54d99cd..ec7b8b6 100644
--- a/src/widget/dispatch.c
+++ b/src/widget/dispatch.c
@@ -1,27 +1,28 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Widget dispatcher *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * windows (main, dialog, modal) creation and access
+ *
+ *
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
@@ -51,78 +52,61 @@
-/**
+/*
* Comment gerer l'image du curseur ?
* https://docs.gtk.org/gdk4/class.Cursor.html TODO
+ *
+ *--------------------------------------------------
+ * static void action_b (GSimpleAction *action, TODO à supprimer ?...
+ GVariant *parameter,
+ GApplication *application) {printf ("action_b() in widget/dispatch\n");} action_b;
*/
+
static GtkWindow *main_window,
*dialog_window,
*text_window;
/**
- * @brief
- * @details
- * @date
- * @author
- * @callgraph
- * @see
+ * @brief getter
+ * @since 2024-07
* @callergraph
- * @see
- * @param
- * @return
+ * @see src/signal
+ * @return main_window
*/
-void *widget_get_main_window() { return main_window; }
+GtkWindow *widget_get_main_window() { return main_window; }
/**
- * @brief
- * @details
- * @date
- * @author
- * @callgraph
- * @see
+ * @brief getter
+ * @since 2024-07
* @callergraph
- * @see
- * @param
- * @return
+ * @see src/signal
+ * @return dialog_window
*/
-void *widget_get_dialog_window() { return dialog_window; }
+GtkWindow *widget_get_dialog_window() { return dialog_window; }
/**
- * @brief
- * @details
- * @date
- * @author
- * @callgraph
- * @see
+ * @brief getter
+ * @since 2024-07
* @callergraph
- * @see
- * @param
- * @return
+ * @see src/signal
+ * @return text_window
*/
-void *widget_get_text_window() { return text_window; }
+GtkWindow *widget_get_text_window() { return text_window; }
-/*static void action_b (GSimpleAction *action,
- GVariant *parameter,
- GApplication *application) {printf ("action_b() in widget/dispatch\n");}action_b;*/
-
/**
- * @brief
- * @details
- * @date
- * @author
+ * @since 2024-08
* @callgraph
- * @see
+ * @see fsm_journal_event()
* @callergraph
- * @see
- * @param
- * @return
+ * @see main()
+ * @param *app
*/
void on_windows_startup (GtkApplication *app) // WIP 2024-09
{
@@ -132,16 +116,16 @@ void on_windows_startup (GtkApplication *app) // WIP 2024-09
/**
- * @brief
- * @details
- * @date
- * @author
+ * @since 2024-06
* @callgraph
- * @see
+ * @see widget_design_main_window()
+ * @see widget_design_dialog_window()
+ * @see widget_design_text_window()
+ * @see util_trigger_test()
+ * @see fsm_journal_event()
* @callergraph
- * @see
- * @param
- * @return
+ * @see main()
+ * @param *app
*/
void on_windows_activation (GtkApplication *app)
{
diff --git a/src/widget/topbar/dispatch.c b/src/widget/topbar/dispatch.c
index 7dcd1af..047ba1e 100644
--- a/src/widget/topbar/dispatch.c
+++ b/src/widget/topbar/dispatch.c
@@ -1,27 +1,27 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-* Gem-graph client *
-* Topbar dispatcher *
-* *
-* Copyright © 2024 Libre en Communs *
-* Copyright © 2024 Jean Sirmai *
-* *
-* This file is part of Gem-graph. *
-* *
-* This program is free software: you can redistribute it and/or modify it *
-* under the terms of the GNU Affero General Public License *
-* as published by the Free Software Foundation, *
-* either version 3 of the License, *
-* or (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; *
-* without even the implied warranty of MERCHANTABILITY *
-* or FITNESS FOR A PARTICULAR PURPOSE. *
-* See the GNU Affero General Public License for more details. *
-* *
-* You should have received a copy of the GNU Affero General Public License *
-* along with this program. If not, see . *
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/**
+ * @file
+ * Main window widgets dispatcher (topbar and six pages)
+ *
+ *
+ * @cond LICENSE
+ * Copyright © 2021 Libre en Communs
+ * Copyright © 2021-2024 Adrien Bourmault
+ * Copyright © 2021-2024 Jean Sirmai
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU Affero General Public License as published by the Free
+ * Software Foundation, either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ * @endcond
+ */
#include "../../../include/base.h"
@@ -37,6 +37,10 @@
static GtkWidget *window_topbar (GtkWindow *window);
+/**
+ * @param *main_window
+ * @param *app
+ */
void widget_design_main_window (GtkWindow *main_window, GtkApplication *app)
{
fsm_journal_event (INFO, TOPBAR, "widget/topbar/dispatch",
@@ -53,6 +57,9 @@ void widget_design_main_window (GtkWindow *main_window, GtkApplication *app)
}
+/**
+ * @param *main_window
+ */
static GtkWidget *window_topbar (GtkWindow *window)
{
fsm_journal_event (INFO, TOPBAR_CENTER, "widget/topbar/dispatch",
@@ -83,14 +90,23 @@ static GtkWidget *window_topbar (GtkWindow *window)
/* T E X T S */
/******************************************************************************/
+/**
+ * return "./data/text/théorie.txt"
+ */
char *widget_get_address_text_theory () {
return "./data/text/théorie.txt";
}
+/**
+ * return "./data/text/pratique.txt"
+ */
char *widget_get_address_text_practice () {
return "./data/text/pratique.txt";
}
+/**
+ * return "./alphabetic_index.all"
+ */
char *widget_get_address_text_alpha_index () {
return "./alphabetic_index.all";
}