Commit Graph

34 Commits

Author SHA1 Message Date
Laurent Trinques a24acfac24 Update fetch_pugixml.cmake 2026-06-07 14:57:05 +02:00
Laurent Trinques cd76b6a1d6 This adds native, clickable hyperlinks to PDF exports: cross-references jump
directly to the related component on its folio, framing the target element.

When a project is exported to PDF, every cross-reference becomes an internal
link. Four kinds are covered:

- **Master → contact**: the contact list on a coil/relay (`CrossRefItem`)
- **Folio report → report**: report element labels (`DynamicElementTextItem`)
- **Slave → master**: the `(folio-position)` reference shown on a slave
  (both standalone `DynamicElementTextItem` and grouped `ElementTextItemGroup`)

Clicking a link navigates **inside** the open document (no new viewer
instance) and zooms to frame the target element.

1. **Injection** (`printDiagram`, only when the paint engine is a `QPdfEngine`):
   link rectangles are added with `QPdfEngine::drawHyperlink()`. The scene→page
   mapping is rebuilt to match exactly what `QGraphicsScene::render()` does
   (top-left anchored, `KeepAspectRatio`, **no centering**), and rectangles are
   passed in device pixels — `pageMatrix()` already applies the 72/resolution
   scale and Y-flip internally.

2. Each link URL encodes the target page and the target element's rectangle, in
   PDF points on its own page: `#page=N&fitr=L_B_R_T`.

3. **Post-processing** (`pdfConvertUriToGoTo`, run after the painter is closed):
   the `/S /URI` annotations are rewritten to native `/S /GoTo` actions with a
   `/D [pageObj 0 R /FitR L B R T]` destination, and the xref table is rebuilt.
   Pages are enumerated from the `/Pages /Kids` tree (reliable), not by scanning
   for `/Type /Page` in raw bytes.

- `sources/print/projectprintwindow.{cpp,h}` — injection + post-processing
- `sources/qetgraphicsitem/crossrefitem.{cpp,h}` — `hoveredContactsMap()` accessor; store text rect for hit area
- `sources/qetgraphicsitem/dynamicelementtextitem.h` — `slaveXrefItem()` / `masterElement()` accessors
- `sources/qetgraphicsitem/elementtextitemgroup.h` — `slaveXrefItem()` accessor
- `qelectrotech.pro`, `cmake/qet_compilation_vars.cmake` — enable Qt gui-private headers (`<private/qpdf_p.h>`)

- **Fit-to-page mode only.** Links are not injected in tiled mode (multiple
  pages per folio), which would require a per-tile transform.
- Uses Qt private API (`QPdfEngine::drawHyperlink`), stable since Qt 4 but not
  part of the public API; the build links against `gui-private`.
- Page-tree enumeration assumes the flat `/Kids` array Qt produces (no nested
  page trees).
- The frame zoom is controlled by two constants in `destRectPdf` (`pad`,
  `minSide`) and can be tuned.
- Tested on Qt5; the `/Kids` parsing and `pageMatrix` behaviour are identical on
  Qt6.
2026-05-30 18:48:28 +02:00
Kellermorph 0118d94d4e makro 2026-04-26 10:48:47 +02:00
Kellermorph eb8f859038 Terminal numbering 2026-04-09 08:36:54 +02:00
Kellermorph 51725d9d8e Replace conductornumexport.cpp with wiringlistexport.h 2026-04-05 18:32:35 +02:00
Kellermorph bc9173d726 Add RAM-based wiring list export 2026-04-05 08:33:37 +02:00
Andre Rummler 67b80364e1 CMAKE/FIX: BE was missing as it had been renamed to nl_BE. RS and UK were not included. 2025-09-08 23:52:27 +02:00
Magnus Hellströmer 82d7bbda68 Added swedish language 2025-02-16 20:54:15 +01:00
plc-user d971da5ac7 add commandline-parameter "--data-dir" 2025-01-27 21:48:36 +01:00
plc-user 5d725f6d55 fix typo 2024-08-19 09:48:11 +02:00
plc-user 85d10fc0e6 integrate "QET_ElementScaler" as external software 2024-08-19 09:19:28 +02:00
plc-user 73f7d44dcf changed some remaining "pt_br" to "pt_BR" 2024-03-28 17:43:15 +01:00
Simon De Backer d35b1623a4 Fix Cmake build
When creating new files.
Add the new files to: "cmake/qet_compilation_vars.cmake".

So that Cmake stays up to date.

thank you.
2023-12-10 22:58:31 +01:00
Laurent Trinques 29ebc6000b Fix Cmake files 2023-11-08 13:38:55 +01:00
Pino Toscano cf479bc113 Drop old mimelnk MIME types
Those desktop MIME types were needed only with KDE up to 3.x, as it
used to have its own desktop-based MIME type system. KDE 3 is EOL for
many years now, and there are already XDG MIME types.
2022-07-05 18:16:51 +02:00
Pino Toscano 08e206deeb Drop XML files autogenerated from qelectrotech.xml
These files are the bare XML definitions, and they are automatically
generated by update-mime-database (part of shared-mime-info) on update
(e.g. by distro hooks) or manually. Keeping them in the sources, and
installing them, is definitely not correct, as qelectrotech.xml is
their canonical definition.

Hence, drop them from the sources, together with references to them.
2022-07-05 18:16:51 +02:00
Simon De Backer a3dfc3efa6 Fix Cmake
See:
3220a58b96 ("Move file", 2021-05-14)
2021-07-27 20:45:13 +02:00
Laurent Trinques 1a3656f7be Add MINGW flag for cmake 2021-03-22 08:15:37 +01:00
Simon De Backer a4adcf4865 Fix cmake user properties class
for commit 44db25e76b
2021-03-18 21:22:39 +01:00
Gleb Popov d7dd32ff1a Fix CMake build when git revision can't be determined 2021-03-18 13:44:15 +01:00
Gleb Popov 564f38396f Add CMake option to allow using system pugixml library 2021-03-18 13:44:04 +01:00
Gleb Popov ab5dd39556 Add CMake option to allow using system KF5 libraries 2021-03-18 13:43:50 +01:00
Simon De Backer 170d856007 Fix Cmake
did not compile
2021-03-02 22:15:44 +01:00
Simon De Backer 81e6f217b4 Fix Cmake will not build
missing files in Cmake
From: 0c4f87bd76
2021-02-14 06:52:05 +01:00
Simon De Backer 2000b6cd2b Update Cmake and disable fail to compile if it uses deprecated APIs. 2021-01-04 20:38:57 +01:00
Simon De Backer d3093f495b Revert "Mod DynamicTextFieldEditor"
This reverts commit f6d777e2f7.

it is preferable to keep the gui in the ui file
QT6 will have to wait.
2021-01-04 20:37:17 +01:00
Simon De Backer 0cc3099908 Mod TextEditor
the ui file is written in the TextEditor class
    Add switch for KF5 (QT6)
2020-12-18 17:39:00 +01:00
Simon De Backer 404ae4fffc Add Cmake ui files in sdk 2020-12-17 21:43:23 +01:00
Simon De Backer cb37c1c2fe Add switch for KF5 (QT6) and Mod Cmake
if we want to test QET on QT6, KF5 must be removed from the code,
this switch is for that,

this is for testing only
2020-12-16 23:06:08 +01:00
Simon De Backer 13db08ad56 Mod hoto_update_cmake_message 2020-12-15 21:30:25 +01:00
Simon De Backer 842b39d68b Fix som Cmake PATH 2020-12-13 20:57:10 +01:00
Simon De Backer 2fc7f594cc Add Cmake files 2020-12-13 15:44:01 +01:00
Simon De Backer c46caaf6e4 Fix Cmake dubbe
see cmake/define_definitions.cmake
2020-12-13 00:47:09 +01:00
Simon De Backer c88d1ef6bb Refactoring Cmake
cleaning up the Cmake code
2020-12-13 00:40:43 +01:00