%T last: a folio title keeps the variables it contains

The folio title was put into the formula before %c, %l, %prefix, the
wire variables, the title block and project variables and the
sequences, so a title such as "Schema %c" had them replaced inside it.
It is replaced after all of them now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
DaTweety
2026-10-18 22:52:06 +02:00
parent ff65b85357
commit ba64fd5164
2 changed files with 17 additions and 4 deletions
+6 -3
View File
@@ -414,9 +414,6 @@ namespace autonum
QString::number(m_context.folio_total));
m_assigned_label.replace("%M", m_context.plant);
m_assigned_label.replace("%LM", m_context.locmach);
//%T on its own only, not the start of a longer word
static const QRegularExpression folio_title(QStringLiteral("%T(?![A-Za-z0-9_])"));
m_assigned_label.replace(folio_title, m_context.folio_title);
QSettings settings;
if (m_context.has_element)
@@ -441,6 +438,12 @@ namespace autonum
assignTitleBlockVar();
assignProjectVar();
assignSequence();
//The folio title last: it is free text, and a title such as
//"Schema %c" must stay as typed, not have the variables in it
//replaced. %T on its own only, not the start of a longer word.
static const QRegularExpression folio_title(QStringLiteral("%T(?![A-Za-z0-9_])"));
m_assigned_label.replace(folio_title, m_context.folio_title);
}
void AssignVariables::assignTitleBlockVar()
+11 -1
View File
@@ -24,7 +24,8 @@
%T in a folio report or cross reference formula is the title of the
folio the reference points to, so a reference can read like the ones
EPLAN prints: "+UV1/1 Versorgung UG/EG.0". %total and the title block
and project variables (lower case only) keep their own values.
and project variables (lower case only) keep their own values, and the
title itself is free text: variables in it stay as typed.
*/
class tst_reportfoliotitle : public QObject
{
@@ -62,6 +63,15 @@ private slots:
QCOMPARE(result, QStringLiteral("Versorgung UG/EG / 23 / SH363N / SH363N"));
}
void titleKeepsTheVariablesItContains()
{
autonum::FormulaContext c = context();
c.folio_title = QStringLiteral("Schema %c %F %total %{typ}");
c.title_block_fields.addValue(QStringLiteral("typ"), QStringLiteral("SH363N"));
const QString result = label(QStringLiteral("%F %T"), c);
QCOMPARE(result, QStringLiteral("1 Schema %c %F %total %{typ}"));
}
void emptyTitleLeavesNothing()
{
autonum::FormulaContext c = context();