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

Tier 3 Pages Research

Research compiled for Contributing, Building, and Development Roadmap pages.

Contributing Page Research

Technical Stack Required

  • Language: C++ (primary development language)
  • Framework: Qt Framework (Qt 5.x, moving to Qt 6.x)
  • Additional libraries: KF5 (KDE Frameworks 5)
  • Build system: CMake
  • Version control: Git
  • File formats: XML (for projects, elements, titleblocks)
  • Documentation: Doxygen (for API docs)
  • GUI translations: Qt Linguist

Development Setup

git clone --recursive https://github.com/qelectrotech/qelectrotech-source-mirror.git

Code Quality Tools

  • Code formatting: .clang-format file for consistent style
  • Documentation: Doxygen for API documentation
  • Testing: Unit test framework (Catch2, googletest)

Community Channels

What Needs Work

  • 30 open issues currently (bugs, features, documentation)
  • Critical bugs: NaN coordinates causing hangs, UUID duplicates
  • UI/UX: Conductor rendering, folio links, shortcuts config
  • Features: IEC 61355 folder structure, terminal block improvements
  • Maintenance: Wiki cleanup (20+ dead links)

Building Page Research

Current Version

  • Latest stable: v0.100 (January 25, 2024)
  • Nightly builds: Available (may be unstable)
  • Qt5 status: Frozen, unmaintained
  • Qt6 status: Active development

Build System

  • CMake: Primary build system
  • Dependency manager: Handles Catch2, googletest, Qt versions

Key Dependencies

  • Qt5/Qt6: Framework for GUI and cross-platform support
  • Catch2 v2.13.10: Testing framework
  • googletest v1.17.0: Testing framework
  • i18n support: Qt Linguist for translations

Recent Build Improvements

  • Dependency upgrades
  • CMake refinements
  • Improved i18n handling
  • Updated packaging scripts
  • Cross-platform deployment (AppImage, Flatpak, Snap, macOS)
  • Expanded unit test coverage
  • Better QA processes

Platform Support

  • Linux: Full support via package managers and AppImage
  • Windows: Installer and portable support
  • macOS: Native package and AppImage
  • ARM/aarch64: Recent support additions for non-x86 architectures

Development Roadmap Research

Current Focus: QET 2.0 Refactoring

Major modernization initiative addressing technical debt since 2006. No explicit timeline provided.

Prerequisites Before Refactoring

Must implement before major refactoring begins:

  • Terminal strip generator
  • Cable generator
  • Project structure improvements

Phase 1: File Format Modernization

Element Files (.elmt):

  • Convert to proper SVG namespace
  • Separate non-graphical data (dynamic text, terminals, information)
  • Better structure for import/export

Project Files (.qet):

  • Restructure into zipped folder format
  • Simplified .qet manifest file
  • SQLite database for all project metadata
  • Organized subdirectories:
    • images/ (embedded diagrams)
    • elements/ (local custom elements)
    • titleblocks/ (custom title blocks)
    • config/ (project configuration)

Phase 2: Code Architecture Refactoring

QetDiagramEditor Refactoring:

  • Extract scattered QActions into ActionPool singleton
  • Reduce class complexity
  • Better code organization

Serialization Layer:

  • Create dedicated serialization classes
  • Separate XML handling from domain logic
  • Potentially plugin-based approach

Element Information System:

  • Redesign element information class
  • Interface with SQLite database
  • Remove direct data storage

Phase 3: Feature Enhancements

Electrical Potential System:

  • Introduce electrical potential as first-class concept
  • Group conductor properties by potential
  • Allow individual overrides per conductor
  • Better electrical relationship modeling

Intelligent Auto-Numbering:

  • Formula-based system using variables
  • Examples: %{prefix}, %{element_type}
  • Adapts automatically to element types
  • More flexible numbering schemes

Cross-Reference (Xref) Expansion:

  • Increased flexibility in display options
  • Better positioning and sizing control
  • Improved multi-folio linking

Element Prefix Standardization:

  • Standardize prefixes by element type
  • Support for norm specifications (IEC, DIN, etc.)
  • Automatic prefix assignment

Phase 4: Code Quality Improvements

Identified Issues Needing Work:

  • Titleblock code simplification and redesign
  • Conductor creation complexity reduction
  • Text handling inconsistencies
  • Data validation improvements
  • Proper error handling

Current Open Issues (30 total)

Critical Bugs:

  • #781: NaN coordinates cause QET to hang on project load
  • #782: Non-finite coordinates propagate to saved files
  • #783: Duplicated UUID issues in elements/links

UI/UX Issues:

  • #735: Folio report link picker displays blanks
  • #734: Conductor rendering spurs at terminals
  • #757: Shortcuts config reports false conflicts

Feature Requests:

  • #730: IEC/EN 61355 folder structure support
  • #663: Terminal block info menu in element editor
  • #802: Page refresh after element modification

Documentation:

  • #816: 20+ dead sidebar wiki links need cleanup

Qt Framework Transition

  • Qt5: Legacy, no longer maintained in nightly builds
  • Qt6: Active development focus
  • Timeline: Gradual migration, nightly builds on Qt6
  • Benefits: Modernization, performance, long-term support

Timeline Notes

  • No explicit roadmap timeline provided
  • Major refactoring deferred until prerequisites complete
  • Nightly builds show active ongoing work
  • Community contributions welcome for:
    • Bug fixes
    • Feature implementation
    • Documentation improvements
    • Testing and QA

Key Insights for Content

Contributing Page Should Cover:

  • C++/Qt/CMake skills required
  • GitHub fork + clone workflow
  • CONTRIBUTING.md guidelines (reference)
  • How to find work (issues list)
  • Testing framework (Catch2, googletest)
  • Code formatting (clang-format)
  • Documentation (Doxygen)
  • Communication channels (forum, GitHub)
  • PR review process
  • Building locally before submitting

Building Page Should Cover:

  • Prerequisites: CMake, Qt5/Qt6, C++ compiler
  • Platform-specific setup (Linux, Windows, macOS, ARM)
  • Step-by-step build instructions
  • Dependency handling
  • Build variants (Release, Debug, with sanitizers)
  • Common build issues and fixes
  • Running tests
  • Contributing changes back

Development Roadmap Should Cover:

  • QET 2.0 refactoring initiative
  • File format modernization plans
  • Architectural improvements
  • Feature enhancements (electrical potential, auto-numbering, xref)
  • Qt6 migration status
  • Current open issues (30 total)
  • How to contribute to roadmap
  • Prerequisites before major refactoring
  • No explicit timeline (be honest about this)
  • Community contribution opportunities
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

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