Skip to content
ispyisail edited this page Sep 9, 2026 · 1 revision

Contribuer à QElectroTech

Merci de votre intérêt pour contribuer à QElectroTech ! Ce guide explique comment s'impliquer, de la signalisation des bugs à l'écriture de code.

Liens rapides :

Façons de Contribuer

Signaler les Bugs

Vous avez trouvé un problème ? Aidez-nous à le corriger :

  1. Recherchez les problèmes existants pour éviter les doublons
  2. Créez un problème avec :
    • Description claire du problème
    • Étapes pour reproduire
    • Comportement attendu vs réel
    • Votre version QET et OS
    • Captures d'écran si utile

Suggérer des Fonctionnalités

Vous avez une idée ? Partagez-la :

  1. Recherchez les discussions pour voir si elle a été discutée
  2. Ouvrez une discussion expliquant :
    • Ce que vous voulez faire
    • Pourquoi ce serait utile
    • Toute approche alternative

Écrire de la Documentation

Aidez à améliorer ce wiki et d'autres documentations :

  1. Voir Contribution au Wiki
  2. Aider à traduire la documentation
  3. Créer des tutoriels ou des guides pour les workflows courants

Créer des Éléments Personnalisés

Partager vos bibliothèques d'éléments avec la communauté :

  1. Apprenez à créer des éléments
  2. Publier sur le Référentiel d'Éléments
  3. Rejoindre l'équipe de maintenance des éléments

Contribuer au Code

Prêt à coder ? Suivez ces étapes :


Commencer avec les Contributions de Code

Prérequis

Vous aurez besoin de :

Compétences en Programmation :

  • C++ — QET est écrit en C++ moderne (C++11 et versions ultérieures)
  • Framework Qt — Qt 5.x (stable actuel), Qt 6.x (en développement actif)
  • Git — Contrôle de version ; essentiel pour la collaboration

Outils et Connaissances :

Recommandé :

  • Une certaine familiarité avec les schémas électriques (aide à comprendre le domaine)
  • Expérience avec le workflow de contribution open-source

Technologies Clés

Composant Technologie Utilisation
Framework GUI Qt 5.x / Qt 6.x Interface utilisateur, multi-plateforme
Langage C++ Logique d'application principale
Système de Construction CMake Configuration et compilation
Tests Catch2, googletest Framework de test unitaire
Documentation Doxygen Génération de documentation API
Traductions Qt Linguist Internationalisation (i18n)
Formats de Fichier XML Projets (.qet), éléments (.elmt), blocs de titre
VCS Git Contrôle de version (GitHub)

Configuration de Votre Environnement de Développement

  1. Forkez le référentiel sur GitHub :

  2. Clonez votre fork localement (avec sous-modules) :

    git clone --recursive https://github.com/YOUR_USERNAME/qelectrotech-source-mirror.git
    cd qelectrotech-source-mirror
  3. Ajoutez le contrôle à distance upstream pour suivre le référentiel principal :

    git remote add upstream https://github.com/qelectrotech/qelectrotech-source-mirror.git
  4. Créez une branche de fonctionnalité pour votre travail :

    git checkout -b fix/issue-123
    # ou
    git checkout -b feature/ma-fonctionnalite
    # Nommage de branche : fix/*, feature/*, docs/*, refactor/*, etc.
  5. Configurez l'utilisateur Git (s'il n'est pas déjà fait) :

    git config user.name "Votre Nom"
    git config user.email "votre.email@exemple.com"
  6. Construire à partir de la source pour assurer que l'environnement fonctionne :

    mkdir build && cd build
    cmake ..
    cmake --build . --config Release

Apporter des Modifications

  1. Comprendre le problème/la fonctionnalité :

    • Lire le problème GitHub attentivement
    • Poster un commentaire si flou ("Je voudrais travailler sur ceci")
    • Discuter de l'approche avec les responsables pour les changements majeurs
  2. Écrire du code propre et maintenable :

    • Suivre le formatage du code : Utiliser clang-format (configuration incluse)
    • Un changement logique par commit — ne pas mélanger les correctifs non liés
    • Messages de commit significatifs — expliquer POURQUOI, pas juste QUOI
    • Commenter légèrement : Seule la logique complexe nécessite des commentaires
    • Garder les fonctions concentrées et petites
  3. Directives de style de code :

    • Nommage : camelCase pour les variables/fonctions, PascalCase pour les classes
    • Formatage : Configuré via le fichier .clang-format (exécuter avant de committer)
    • Conventions Qt : Suivre les normes de codage Qt/KDE
    • C++ moderne : Utiliser les fonctionnalités C++11/14/17 de façon appropriée
  4. Ajouter des tests pour les nouvelles fonctionnalités :

    • Framework de test : Catch2 ou googletest
    • Écrire des tests unitaires qui vérifient vos modifications
    • S'assurer que les tests existants passent toujours : ctest
    • Exécuter : cmake --build . && ctest
  5. Créer localement et tester :

    cd build
    cmake --build . --config Release
    ctest  # Exécuter les tests
    ./qelectrotech  # Tester l'application manuellement
  6. Gardez votre branche à jour avec upstream :

    git fetch upstream
    git rebase upstream/main
    # ou fusionner si vous préférez : git merge upstream/main

Soumettre Votre Contribution

  1. Poussez votre branche vers votre fork :

    git push origin fix/issue-123
  2. Créez une Pull Request (PR) sur GitHub :

    • Allez à votre fork → Bouton "Create Pull Request"
    • Titre : Court, descriptif (p. ex., "Corriger la gestion de coordonnées NaN lors du chargement d'éléments")
    • Description : Inclure :
      • Quel problème cela résout ?
      • Comment votre solution fonctionne-t-elle ?
      • Captures d'écran pour les modifications de l'interface
      • Tests ajoutés
      • Problèmes associés : "Fixes #781" ou "Closes #782"
    • Base : Définir sur la branche main
    • Draft PR : Marquer comme Draft si toujours en cours
  3. Répondre aux commentaires :

    • Les responsables examineront votre code
    • Traiter les commentaires et les suggestions
    • Pousser des commits supplémentaires à la même branche (met à jour automatiquement la PR)
    • Soyez patient et collaboratif
  4. Gardez la PR à jour si la branche principale change :

    git fetch upstream
    git rebase upstream/main
    git push --force-with-lease origin fix/issue-123
  5. Célébrez ! 🎉 Une fois approuvée et fusionnée, votre contribution fait partie de QET


Qualité du Code et Normes

Formatage du Code

QET utilise clang-format pour un style de code cohérent :

# Formater vos fichiers avant de committer
clang-format -i src/mon_fichier.cpp
# ou formater tous les fichiers modifiés
git diff --name-only | xargs clang-format -i

Documentation

  • Commentaires en ligne : Uniquement pour la logique non évidente
  • Documentation des fonctions : Utiliser le style Doxygen pour les API publiques
  • Messages de commit : Clairs, descriptifs, expliquent pourquoi pas juste quoi

Tests

  • Tests unitaires : Écrire des tests pour les nouvelles fonctionnalités
  • Exécuter les tests existants : S'assurer que vous ne cassez rien
  • Couverture des tests : Plus de tests = meilleure confiance

Directives de Message de Commit

Bonne structure de message de commit :

Bref résumé en une ligne (50 caractères ou moins)

Explication plus longue du changement. Expliquez le problème,
votre solution, et tous les compromis ou considérations.
Garder à une largeur de ligne de 72 caractères.

Fixes #123

Exemples :

  • ✅ "Corriger la validation de coordonnées NaN lors du chargement d'élément"
  • ✅ "Ajouter la fonctionnalité de générateur de bande terminale avec tests"
  • ❌ "Correction du bug"
  • ❌ "Mise à jour du code"

Révision du Code

  • Les responsables examineront votre code
  • Les commentaires visent à l'amélioration, pas à la critique personnelle
  • Soyez ouvert aux suggestions
  • Demandez des clarifications si quelque chose n'est pas clair

Ressources et Aide

Où Chercher de l'Aide

Communication

  • Soyez respectueux — Nous sommes tous ici pour améliorer QET
  • Soyez clair — Expliquez ce que vous essayez d'accomplir
  • Demandez de l'aide — Ne pas avoir peur de poser des questions
  • Célébrez les contributions — Reconnaître le travail des autres

Merci de Contribuer ! 🎉

Vos contributions aident QElectroTech à devenir un meilleur outil pour tous. Que ce soit un correctif de bug, une nouvelle fonctionnalité, une documentation ou une traduction, votre travail est apprécié !

Questions ? Rejoignez le Forum ou posez une question sur GitHub Discussions.


🌐 Choisir la Langue — English · Français · Deutsch

Getting Started

Home

🌐 Languages — English · Français · Deutsch

Downloads

Windows without admin rights — the portable archive, no installer

Quick Start Guide

User Manual

FAQ

Tips & Tricks

Guides

Conductors — wire properties, what feeds which export, cables, and hops where wires cross

Wires per terminal — limit the wires on a terminal, chain wiring instead of stars

Printing and exporting — paper, PDF, images, and what each path does differently

Linking elements — master, slave, terminal

PLC modules — I/O tables and linking a wire to a specific point

Using the element editor — drawing tools, saving, checks

Generic devices — a quick box symbol with terminals on any side, made by a wizard (pending)

Grid size and element size — why symbols aren't all the same scale, and scaling one without leaving the grid

Preferences reference — what each settings page does

Saving and loading settings — your whole setup in one file, to copy or keep

Keyboard-only control — mouseless QET, and what still needs a mouse

Mouse modifiers — what Shift, Ctrl and Alt change while you drag

3D mouse — SpaceMouse pan, zoom and buttons

Aligning items — snap symbols back to the grid, or line them up

Pictures on a sheet — labels, crop, transparency, what they cost in the file

Arcs and curved wires — the Arc tool, pulling an arc in or out, rounding a corner with a fillet, dashed arcs for lighting layouts

Grouping items — select, move and copy several items as one

Finding your place on a sheet — go to a cell like B13 or 4-B7, keep the headers in sight, show the cell limits, zoom and pan

Showing and hiding kinds of items — hide texts, wire numbers, shapes, pictures, tables or cross-references on every sheet

Drawing faster — place without dragging, the S shortcut bar, command search, gestures

Customising QElectroTech — keys, toolbar size and contents, the gesture ring (partly pending)

Managing collections — folders, writability, building your own shortlist

Templates — reusable multi-element blocks, placed by double-click or drag

Search & Replace — bulk property changes

Building a nomenclature query — the BOM/summary table builder

Linking wires across pages — sheet reports

Variables & formulas — %f, %{label}, sequences

Auto-numbering — schemes, sequences, freezing

Terminal strips — strips, levels, bridges

Title block templates — the .titleblock format

Importing EPLAN parts (.edz) — EPLAN Data Portal

DXF import & export — two unrelated features, one format; command-line export and layers

The project database — the in-memory SQLite cache

File formats
Elements XML
Project XML
Development

Building from Source

Contributing Code

Automating QET — CLI, XML formats, external tools

CLI Reference — command line usage

JavaScript Scripting — --run, geometry editing, undo

MCP server — let an AI assistant read, verify and edit projects

Connecting an AI assistant — setup for Claude, Copilot, Gemini, Codex, Cursor, LM Studio

Script buttons — stored scripts with an icon, by hand or by an assistant

Live mode — an assistant working in the open project while you watch

Macro recorder — record a task by hand, for an assistant to script

Development Roadmap

Vision — proposal, under discussion

Developer Tools

About

Features

History

Community

License

Contributing to this Wiki

Clone this wiki locally