Manuel développeur — qt6sermo

1. Architecture

qt6sermo/
├── src/
│   ├── gtk3sermo.cpp/.h          # Point d'entrée
│   ├── safe_exec.cpp/.h          # Wrappers sécurisés
│   ├── automaton.cpp/.h          # Moteur AST → widgets
│   ├── gtkdialog_parser.y          # Parser Bison
│   ├── gtkdialog_lexer.l           # Lexer Flex
│   ├── variables.cpp/.h          # Gestion variables
│   ├── widgets.cpp/.h            # Dispatch widgets
│   └── widget_*.cpp/.h           # Un fichier par widget
├── configure.in
└── Makefile.am

2. Ajouter un nouveau widget

2.1 Constante (automaton.h)

#define WIDGET_MYWIDGET  0x00D00000

2.2 Header (widget_mywidget.h)

#ifndef WIDGET_MYWIDGET_H
#define WIDGET_MYWIDGET_H
void       widget_mywidget_clear(variable *var);
GtkWidget *widget_mywidget_create(AttributeSet *Attr, tag_attr *attr, gint Type);
gchar     *widget_mywidget_envvar_construct(GtkWidget *widget);
void       widget_mywidget_refresh(variable *var);
#endif

2.3 Dispatch (widgets.cpp)

// Dans widget_get_text_value() :
case WIDGET_MYWIDGET:
    return widget_mywidget_envvar_construct(widget);

// Dans widgets_to_str() :
case WIDGET_MYWIDGET:
    type = "MYWIDGET"; break;

2.4 Parser (gtkdialog_lexer.l)

"mywidget"   { return MYWIDGET; }

2.5 Makefile.am

qt6sermo_SOURCES = ... \
    widget_mywidget.cpp widget_mywidget.h

3. Toolkit — notes spécifiques

Qt6 C++ — QWidget, signaux/slots Qt, moc requis à la compilation

API de référence : doc.qt.io/qt-6

4. Sécurité — règles obligatoires

5. Vérification syntaxe

gcc -fsyntax-only -std=c11 \
    $(pkg-config --cflags qt6) \
    -I src/ src/widget_mywidget.cpp

Assistance IA — Claude

Ce travail a été réalisé avec l'assistance de Claude (Anthropic), dans le cadre du développement de la famille haplo-dialog sur haplo-dialog.

“Ce projet a bénéficié de l’assistance de Claude (Anthropic) — mai 2026.”