Commit Graph

65 Commits

Author SHA1 Message Date
ispyisail 5c4fa8fadf Build folios only when needed, by default (stage D6)
Every project now opens without building its folios; a folio is built
when it is shown or something needs its items (QETProject::lazyFolios()).
QET_LAZY_FOLIOS is gone; QET_EAGER_FOLIOS=1 builds every folio on
opening, as before, for comparisons and troubleshooting. Comments that
named the old variable now say "lazy folios"; the tests switch modes
with the new one.

The first save of a .qet as .qetz still builds every folio: a .qet does
not say which program wrote it, so its folios are written again rather
than copied. A .qetz opens and saves without building.

ctest 96/96 by default and with QET_EAGER_FOLIOS=1; 342 corpus projects
save the same in all four arms and export the same. In the GUI
(qet-gui-dialog): a 136-folio .qetz opens with no folio built, shows
folios 1 to 4, saves building none, the save = the original but the time
spent in it; a .qet opens lazily, saves as a .qetz beside it after the
notice, the .qet unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 23:03:51 +13:00
ispyisail e89ccf2a40 Open a .qetz from its database, each folio read when built (stage D2)
A .qetz now carries index.sqlite: the project database as QElectroTech
keeps it -- every table but the drawing items, which exist for built
folios only -- with each folio's own data (Diagram::headerXml()) and a
stamp of the schema it was written with (projectDataBase::indexFile(),
QETProject::writeContainerFile(): Save, --resave, --set-titleblock, a
script's and live mode's save). Written when every folio, symbol and wire
has a uuid of its own; a reader that does not know the entry skips it.

With QET_LAZY_FOLIOS=1, a .qetz with an index opens from it: the project
document is joined without its folios (QetContainer::join() with
folio_files), the database and the stores of symbol information and wire
properties are filled from the index (fillFromIndex()), each folio is made
from its own data and keeps the name of its part, read when the folio is
built (Diagram::deferredXml(), QETProject::readFolioPart(),
QetContainer::readFolio() -- pictures and engineering data back from
project.sqlite, QetContainerDb::restoreFolio()). A terminal strip finds its
terminals' folios in the database. Any other .qetz, or one whose index
cannot be used, is read whole as before.

The index is untrusted: refused unless written with this database's
schema, every table read a plain table (not a view), nothing in its schema
run (trusted_schema off); refused, the project is read whole. Checked: an
index of garbage, a wrong stamp, a table made a view -- each refused and
the project saved as a plain save.

The 136-folio f2099 as .qetz opens in 1.8 s (3.65 s read whole, 29 s
building every folio); what is left is mostly its 7 MB of symbol
definitions (0.8 s). The file grows from 2.6 to 5.2 MB, the index
overlapping project.sqlite until D3.

tst_lazyfolios: a .qetz opened from its index builds only the terminal
strip's folios, numbering read as when built, every folio shown in turn
draws and links as when built, the save as when built; fails when a folio
part's engineering data is not put back. Corpus, 342 projects: 340 .qetz
carry an index and open from it (2 have symbols sharing a uuid); saved
back as .qet = eager = master on all 342. Probe on industrial and f2099
.qetz: every folio as eager but the 3 render-noise folios of f2099. In a
real window the .qetz opens and pages building only shown folios and
partners. ctest 96/96 with and without QET_LAZY_FOLIOS=1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 23:03:43 +13:00
Laurent Trinques 77e2a9bfc5 Speed up opening big projects with lazy folios 2026-10-13 11:01:21 +02:00
Laurent Trinques 118a62adb2 Merge pull request #540 from DieterMayerOSS/cleanup/qt6-deprecation-warnings
Cleanup/qt6 deprecation warnings
2026-07-16 11:57:13 +02:00
Dieter Mayer a0f66d22cc Fix remaining Qt6 build warnings (narrowing, nodiscard, qHash)
Clears the 9 non-deprecation warnings from the Qt6 build:
- qHash(QColor): hash rgba() (unambiguous QRgb) instead of name(), and
  use the size_t seed signature on Qt6 (guarded for Qt5). Fixes the
  ambiguous-overload warning in terminalstripmodel.h.
- Two qsizetype->int narrowings in brace-init: explicit static_cast<int>
  (elementscene.cpp, terminalstrip.cpp).
- main.cpp: keep the QtConcurrent::run QFuture in a [[maybe_unused]]
  variable (nodiscard).
- qetapp.cpp: guard the stylesheet load on QFile::open() succeeding
  (nodiscard) instead of ignoring the result.
2026-07-14 19:27:37 +02:00
Dieter Mayer 1265e51ebe Replace deprecated qAsConst with std::as_const
qAsConst was deprecated in Qt 6.6; std::as_const (C++17, already the
project standard) is the drop-in replacement. Clears 46 -Wdeprecated-
declarations warnings across 18 files. No behavioural change.
2026-07-14 19:27:16 +02:00
Laurent Trinques 4044d04cc5 One year
Auto-build doxygen docs / doxygen (push) Has been cancelled
Auto-build doxygen docs / deploy (push) Has been cancelled
2026-01-16 15:24:35 +01:00
joshua f83a5b3a79 Merge branch 'terminal_strip' 2025-10-15 23:30:54 +02:00
joshua a2ae8255ac Minor fix
During the development, we saved some terminal strip with "phantom"
terminal (terminal added to the strip and after the terminal was removed
from the project but keep in the terminal strip data) and this mistake
was saved in the xml. When we open this project the phantom terminal
don't appear in the layout but the empty physical terminal is still here
in the terminal strip data because the position of the terminals in the
strip is wrong (sometime bigger than the size of the strip, sometime
with a gap, sometime don't start at 0). This commit fix this mistake
when we open a project.
2025-07-01 22:46:18 +02:00
plc-user 67112bf8e5 fix typo in enum-entry and comments 2025-02-17 09:33:35 +01:00
Laurent Trinques 77bfe84a4c One year 2025-01-04 13:37:40 +01:00
plc-user b3ac3c82af fixed indentations of the remaining *.cpp/*.h files 2024-05-02 08:39:27 +02:00
Laurent Trinques e73cf633ce 2023->2024 2024-03-29 10:09:48 +01:00
joshua 539e0a7a49 Merge branch 'terminal_strip'
* terminal_strip:
  Terminal strip item can saved / loaded to .qet file
  See previous commit...
  Move terminal strip drawer class in is own file
  Fix wrong use of QStringLiteral and QLatin1String
  Double click a TerminalStripItem open the editor
  Minor change about checkable QAction of QetDiagramEditor
  Minor : corrects a minor aesthetic defect when unbridge terminals
  Revamp code
  Add and move terminal strip item are now managed by undo command
  TerminalStripItem : Draw terminal bridge
  Terminal strip item can be added to diagram
  Minor : add QGIUtility namespace
2023-01-02 19:40:08 +01:00
Laurent Trinques 9afef79629 Update Copyright date 2023-01-01 17:05:57 +01:00
luz paz 1994235bc5 Fix various typos in source documentation and comments (cont.)
Found via `codespell`
2022-12-04 20:46:32 +01:00
joshua d23a5bbdc7 Fix wrong use of QStringLiteral and QLatin1String 2022-12-02 18:26:56 +01:00
joshua 2a307a74da Improve execution time of some actions.
Improve the execution time when we add, change or remove
several terminals to/from terminal strip.
2022-06-23 21:36:24 +02:00
joshua bce6a43427 Several terminals can be removed or moved from strip in one shot 2022-04-10 13:52:45 +02:00
joshua 0ff099fb52 Revamp code
Change the way to know who is the physical terminal of a real terminal
when we got only the real terminal.
2022-02-20 13:13:29 +01:00
joshua 05a2e4b37b Improve undo command when add/move/remove terminal in/from/to terminal strip 2022-02-19 12:34:38 +01:00
joshua dcc5a4dd0b Revamp code.
Remove a QVector member variable and use instead a function who
return the same vector, but created on the fly
2022-02-09 19:15:45 +01:00
joshua ba638f52e5 Revamp code, make it more simple 2022-02-09 18:57:27 +01:00
joshua ffd904749e Remove the real terminal uuid, and use instead the uuid of the terminal element itself 2022-02-09 18:13:35 +01:00
joshua c037d3ea0a RealTerminal is created by the TerminalElement itself 2022-02-09 18:08:20 +01:00
joshua 70f50ff362 Change relationship betwen classes RealTerminal PhysicalTerminald and TerminalElement 2022-02-08 19:24:16 +01:00
joshua 53157afd12 Minor : rebuild terminal vector everywhere is needed 2022-02-01 10:30:42 +01:00
joshua c02238cab8 Terminal strip bridge are now save in .qet file 2022-01-31 18:11:21 +01:00
joshua d114b097bf Minor Fix : undo command for unbridge strip don't work 2022-01-27 19:45:33 +01:00
joshua 683095173e TerminalStripBridge color can be edited. 2022-01-18 11:24:07 +01:00
joshua 1572fafabe Change struct TerminalStripBridge to class
And move it in a new file
2021-12-26 18:43:17 +01:00
joshua 5709f469fc Revamp terminalStrip feature code
Move RealTerminal class in a new file
Move PhysicalTerminal class in a new file.
Remove the use of QWeakPointer and use instead QSharedPointer
in a big part of the revamp.
2021-12-26 17:26:00 +01:00
joshua 2ea9f8a2c6 Revamp PhysicalTerminal class 2021-12-23 22:17:37 +01:00
joshua a2e5989f3b Revamp RealTerminal class...... again
I don't know what I want, I'm crazy :D.
Next commit will also revamp PhysicalTerminal
and TerminalStripBridge class, code will be more clear and
easy to understand.
2021-12-23 18:37:17 +01:00
joshua 02b385e0b7 Improve bridge edition 2021-12-22 19:21:54 +01:00
joshua e2454faa36 Improve code readability 2021-12-19 21:05:48 +01:00
joshua 6505330b5f Make code less spaghetti
Not finished yet.
2021-12-19 14:55:02 +01:00
joshua beee4a06c8 Draw bridge pixmap in the tableview (wip) 2021-12-11 21:25:40 +01:00
joshua ce8bd7fae3 Add terminal bridge feature 2021-12-01 21:27:04 +01:00
joshua 3e5713a512 Fix FTBFS for ubuntu bionic beaver 2021-11-01 13:36:41 +01:00
joshua 58a3e72abe Fix FTBFS for ubuntu Bionic Beaver 2021-11-01 12:41:43 +01:00
joshua 1cc162867f Fix fail to build for QT version lesser than 5.14 2021-10-29 19:37:02 +02:00
joshua 107d7ff806 Level of real terminal can be edited
The level of each real terminal who compose a physical terminal can be
edited. Several real terminal can be edited in one shot.
2021-10-12 19:25:35 +02:00
joshua 7c6fca2aac Ungroup terminal is now managed by undo stack 2021-10-09 14:45:54 +02:00
joshua c6e3e385ff Clear code 2021-10-09 12:08:18 +02:00
joshua 089f260d9b Group terminals together is now managed by undo stack 2021-10-09 11:58:10 +02:00
joshua 828424cae8 Level terminals can be disassembled 2021-10-04 21:26:51 +02:00
joshua dca643f7aa Multi-level terminal can be created. 2021-10-03 13:22:21 +02:00
joshua 1699ad9dd8 Add a push button to automatically reorder the terminal strip 2021-09-22 23:02:33 +02:00
joshua 377f8b1521 Overridden properties of terminal elements are now saved/loaded from project
The overridden properties of terminal elements made in the terminal
strip dialog are now saved and loaded from/to the project file.
2021-09-20 18:34:48 +02:00