From 86563850f81f42d2f696810c9a3903197b16ad24 Mon Sep 17 00:00:00 2001 From: Kellermorph Date: Thu, 22 Oct 2026 18:40:19 +0200 Subject: [PATCH] Move the terminal labelling setting into the project The review asked for it, and it is the right place: the same file must draw the same way on every machine which opens it, so how a terminal writes its label belongs to the project, not to the application's own settings. The choice lives with the other display options of the sheets, in the project properties (General page), and is saved in the project as -- written only when on, so a project with it off saves byte for byte as before. Reading it is a member of the project now: no QSettings built per text refresh any more, and switching it redraws the labels of the drawings already open. The application setting (QetSettings, the General configuration page) is gone with it, and the test reads the project's own value. --- .../dynamicelementtextitem.cpp | 2 +- sources/qetgraphicsitem/element.cpp | 28 ++++---- sources/qetgraphicsitem/element.h | 8 +-- sources/qetinformation.h | 2 +- sources/qetproject.cpp | 67 +++++++++++++++++++ sources/qetproject.h | 8 +++ .../configpage/generalconfigurationpage.cpp | 19 ------ .../ui/configpage/generalconfigurationpage.ui | 42 ------------ sources/ui/configpage/projectconfigpages.cpp | 39 +++++++++++ sources/ui/configpage/projectconfigpages.h | 5 ++ sources/utils/qetsettings.cpp | 24 ------- sources/utils/qetsettings.h | 14 ---- tests/qttest/tst_terminallabeldisplay.cpp | 45 ++++--------- 13 files changed, 152 insertions(+), 151 deletions(-) diff --git a/sources/qetgraphicsitem/dynamicelementtextitem.cpp b/sources/qetgraphicsitem/dynamicelementtextitem.cpp index c74a123a1..6e7ece16b 100644 --- a/sources/qetgraphicsitem/dynamicelementtextitem.cpp +++ b/sources/qetgraphicsitem/dynamicelementtextitem.cpp @@ -1259,7 +1259,7 @@ void DynamicElementTextItem::elementInfoChanged() if(element) { dc = element->elementInformations(); //The label and the terminal number are drawn the way the - //settings say (@sa QetSettings::terminalLabelSplit): a + //project says (@sa QETProject::terminalLabelSplit): a //composite text which uses them must see the same values the //fields bound to them show dc.addValue(QETInformation::ELMT_LABEL, element->labelForDisplay()); diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index cf4a84174..238332130 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -33,7 +33,6 @@ #include "../properties/terminaldata.h" #include "../properties/xrefproperties.h" #include "../qetinformation.h" -#include "../utils/qetsettings.h" #include "../qetgraphicsitem/conductor.h" #include "../qetgraphicsitem/terminal.h" #include "../ui/elementpropertieswidget.h" @@ -1765,7 +1764,8 @@ void Element::removeDynamicTextItem(DynamicElementTextItem *deti) The fields which draw the label draw it again: what they show of the label has changed under them (a field for the terminal number added or removed, @sa Element::hasTerminalNumberText), or the terminal - labelling setting was switched (@sa QetSettings::terminalLabelSplit). + labelling setting of the project was switched + (@sa QETProject::terminalLabelSplit). Only the fields which draw a label are refreshed, every other field follows its own information. */ @@ -2762,21 +2762,22 @@ QString Element::actualLabel() /** @brief Element::labelForDisplay - @return the label as the drawing must show it, the settings of the - moment being read (@sa QetSettings::terminalLabelSplit): the whole - label ("X1:1") while the labelling is shown in one field; the label - alone ("X1") when it is shown split and this symbol has a text field - of its own for the terminal number; and the two one under the other - when it is split without such a field -- so a symbol drawn before - the setting existed still shows all of its label, only shorter. - Only an element of the terminal type is ever drawn split: the colon - in any other label is part of the label ("-K1:13"). + @return the label as the drawing must show it, the terminal labelling + of the project being read (@sa QETProject::terminalLabelSplit): the + whole label ("X1:1") while the labelling is shown in one field; the + label alone ("X1") when it is shown split and this symbol has a text + field of its own for the terminal number; and the two one under the + other when it is split without such a field -- so a symbol drawn + before the setting existed still shows all of its label, only + shorter. Only an element of the terminal type is ever drawn split: + the colon in any other label is part of the label ("-K1:13"). */ QString Element::labelForDisplay() { const QString label = actualLabel(); + const Diagram *d = diagram(); const bool split = m_data.m_type == ElementData::Terminal - && QetSettings::terminalLabelSplit(); + && d && d->project() && d->project()->terminalLabelSplit(); //The "Show name" box of the selection properties hides the name //of this element on the sheet only: the element keeps all of its @@ -2823,8 +2824,9 @@ QString Element::labelForDisplay() */ QString Element::terminalNumberForDisplay() { + const Diagram *d = diagram(); if (m_data.m_type != ElementData::Terminal - || !QetSettings::terminalLabelSplit()) { + || !d || !d->project() || !d->project()->terminalLabelSplit()) { return QString(); } diff --git a/sources/qetgraphicsitem/element.h b/sources/qetgraphicsitem/element.h index a7d5b2ef1..6668e0991 100644 --- a/sources/qetgraphicsitem/element.h +++ b/sources/qetgraphicsitem/element.h @@ -167,8 +167,8 @@ class Element : public QetGraphicsItem QString actualLabel(); /** What the drawing shows of the label and of the terminal - number, the terminal labelling setting of the moment being - read (@sa QetSettings::terminalLabelSplit). The label itself + number, the terminal labelling of the project being + read (@sa QETProject::terminalLabelSplit). The label itself is never changed by any of them. */ QString labelForDisplay(); @@ -180,8 +180,8 @@ class Element : public QetGraphicsItem The fields which draw the label draw it again: called when what they show of the label has changed under them, a field for the terminal number added or removed, or the - terminal labelling setting switched (@sa - QetSettings::terminalLabelSplit). + terminal labelling setting of the project switched (@sa + QETProject::terminalLabelSplit). */ void refreshLabelFields(); diff --git a/sources/qetinformation.h b/sources/qetinformation.h index 7da77677c..c49f28e5b 100644 --- a/sources/qetinformation.h +++ b/sources/qetinformation.h @@ -41,7 +41,7 @@ namespace QETInformation static QString ELMT_LABEL = "label"; //The part of the label behind its last colon ("1" in "X1:1"), //shown in a text field of its own when the terminal labelling - //is drawn split (@sa QetSettings::terminalLabelSplit) + //is drawn split (@sa QETProject::terminalLabelSplit) static QString ELMT_TERMINAL_NUMBER = "terminal_number"; static QString ELMT_FORMULA = "formula"; /** diff --git a/sources/qetproject.cpp b/sources/qetproject.cpp index c8dd66df0..9837657d7 100644 --- a/sources/qetproject.cpp +++ b/sources/qetproject.cpp @@ -2331,6 +2331,39 @@ void QETProject::setUprightSymbolTexts(bool upright) } } +/** + @brief QETProject::terminalLabelSplit + @return whether the terminals of this project draw their label split, + the label ("X1") and the terminal number ("1") each in their own text + field, instead of the whole label ("X1:1") in one field. Off unless + the project says otherwise, so a project saved without it draws as it + always did. This is a setting of the project, not of the application: + the same file draws the same way on every machine which opens it. + @sa setTerminalLabelSplit +*/ +bool QETProject::terminalLabelSplit() const { + return m_terminal_label_split; +} + +/** + @brief QETProject::setTerminalLabelSplit + Set whether the terminals of this project draw their label split, and + tell the labels of the drawings already open to draw it again. + @param split +*/ +void QETProject::setTerminalLabelSplit(bool split) +{ + if (split == m_terminal_label_split) { + return; + } + m_terminal_label_split = split; + for (Diagram *diagram : diagrams()) { + for (Element *element : diagram->elements()) { + element->refreshLabelFields(); + } + } +} + /** @brief QETProject::wiringRules @return how many wires a terminal of this project may take @@ -2569,6 +2602,7 @@ QDomDocument QETProject::toXml(QHash *kept_folios, QStringList writeUsageXml(project_root); writeWireHopsXml(project_root); writeSymbolTextsXml(project_root); + writeTerminalLabelSplitXml(project_root); writeWiringRulesXml(project_root); // Properties for news diagrams @@ -3529,6 +3563,7 @@ void QETProject::readProjectXml(QDomDocument &xml_project) readUsageXml(xml_project); readWireHopsXml(xml_project); readSymbolTextsXml(xml_project); + readTerminalLabelSplitXml(xml_project); readWiringRulesXml(xml_project); //Load the default properties for the new diagrams @@ -3893,6 +3928,21 @@ void QETProject::readSymbolTextsXml(QDomDocument &xml_project) && texts.attribute(QStringLiteral("upright")) == QLatin1String("true"); } +/** + @brief QETProject::readTerminalLabelSplitXml + Read the element of the project, if any. A + project without it was saved before the setting existed, or with it + off, and draws the whole label of each terminal in one field. + @param xml_project : the xml description of the project +*/ +void QETProject::readTerminalLabelSplitXml(QDomDocument &xml_project) +{ + const QDomElement labelling = xml_project.documentElement() + .firstChildElement(QStringLiteral("terminal_labelling")); + m_terminal_label_split = !labelling.isNull() + && labelling.attribute(QStringLiteral("split")) == QLatin1String("true"); +} + /** @brief QETProject::readWiringRulesXml Read the element of the project, if any. @@ -4217,6 +4267,23 @@ void QETProject::writeSymbolTextsXml(QDomElement &xml_element) xml_element.appendChild(texts); } +/** + @brief QETProject::writeTerminalLabelSplitXml + Export whether the terminals draw their label split, as a + child of \a xml_element. Written only when on, + so a project with it off saves exactly as before. +*/ +void QETProject::writeTerminalLabelSplitXml(QDomElement &xml_element) +{ + if (!m_terminal_label_split) { + return; + } + QDomElement labelling = xml_element.ownerDocument() + .createElement(QStringLiteral("terminal_labelling")); + labelling.setAttribute(QStringLiteral("split"), QStringLiteral("true")); + xml_element.appendChild(labelling); +} + /** @brief QETProject::writeWiringRulesXml Export the project's wiring rules as a child of diff --git a/sources/qetproject.h b/sources/qetproject.h index 1675f2627..33cb5c897 100644 --- a/sources/qetproject.h +++ b/sources/qetproject.h @@ -324,6 +324,8 @@ class QETProject : public QObject void setWireHops(WireHops::Mode mode); bool uprightSymbolTexts() const; void setUprightSymbolTexts(bool upright); + bool terminalLabelSplit() const; + void setTerminalLabelSplit(bool split); WiringRules::Settings wiringRules() const; WiringRules::Settings projectWiringRules() const; void setWiringRules(const WiringRules::Settings &rules); @@ -453,6 +455,7 @@ class QETProject : public QObject void readUsageXml(QDomDocument &xml_project); void readWireHopsXml(QDomDocument &xml_project); void readSymbolTextsXml(QDomDocument &xml_project); + void readTerminalLabelSplitXml(QDomDocument &xml_project); void readWiringRulesXml(QDomDocument &xml_project); void writeProjectPropertiesXml(QDomElement &); @@ -462,6 +465,7 @@ class QETProject : public QObject void writeUsageXml(QDomElement &); void writeWireHopsXml(QDomElement &); void writeSymbolTextsXml(QDomElement &); + void writeTerminalLabelSplitXml(QDomElement &); void writeWiringRulesXml(QDomElement &); void addDiagram(Diagram *diagram, int pos = -1); void detachDiagram(Diagram *diagram); @@ -577,6 +581,10 @@ class QETProject : public QObject /// Texts drawn in a turned symbol stay horizontal (on for a new /// project, off for one saved without it), see uprightSymbolTexts() bool m_upright_symbol_texts = false; + /// Terminals draw their label split: the label ("X1") and the + /// terminal number ("1") each in their own text field (off for + /// a project saved without it), see terminalLabelSplit() + bool m_terminal_label_split = false; WiringRules::Settings m_wiring_rules; XmlElementCollection *m_elements_collection = nullptr; QTimer m_save_backup_timer, diff --git a/sources/ui/configpage/generalconfigurationpage.cpp b/sources/ui/configpage/generalconfigurationpage.cpp index 645dec4dc..6928e8d2b 100644 --- a/sources/ui/configpage/generalconfigurationpage.cpp +++ b/sources/ui/configpage/generalconfigurationpage.cpp @@ -44,7 +44,6 @@ #include #include "../../diagram.h" -#include "../../qetgraphicsitem/element.h" #include "../../qetproject.h" namespace { @@ -162,11 +161,6 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : enable(ui->m_wiring_rules_cb->isChecked()); connect(ui->m_wiring_rules_cb, &QCheckBox::toggled, this, enable); } - if (QetSettings::terminalLabelSplit()) { - ui->m_terminal_label_split_rb->setChecked(true); - } else { - ui->m_terminal_label_combined_rb->setChecked(true); - } ui->m_use_gesture_trackpad->setChecked(settings.value("diagramview/gestures", false).toBool()); ui->m_save_label_paste->setChecked(settings.value("diagramcommands/erase-label-on-copy", true).toBool()); ui->m_autonumber_pasted->setChecked(settings.value("diagramcommands/autonumber-pasted-elements", true).toBool()); @@ -421,19 +415,6 @@ void GeneralConfigurationPage::applyConf() if (WiringRules::masterEnabled() && WiringRules::turnsRuleOn(before, rules)) { WiringRulesWarning::show(this); } - } - //The labelling setting is read where the label is drawn, so the - //drawings already open are told to draw it again when it changes - const bool label_split = ui->m_terminal_label_split_rb->isChecked(); - if (QetSettings::terminalLabelSplit() != label_split) { - QetSettings::setTerminalLabelSplit(label_split); - for (QETProject *project : QETApp::registeredProjects()) { - for (Diagram *diagram : project->diagrams()) { - for (Element *element : diagram->elements()) { - element->refreshLabelFields(); - } - } - } } settings.setValue("diagrameditor/autosave-interval", ui->m_autosave_sb->value()); settings.setValue("projectlock/enabled", ui->m_project_lock->isChecked()); diff --git a/sources/ui/configpage/generalconfigurationpage.ui b/sources/ui/configpage/generalconfigurationpage.ui index 40a87f188..5a91496c9 100644 --- a/sources/ui/configpage/generalconfigurationpage.ui +++ b/sources/ui/configpage/generalconfigurationpage.ui @@ -140,48 +140,6 @@ - - - - Display of the terminal labelling - - - - - - A terminal's label (X1:1) is drawn as a whole, the way it has always been. - - - Show the label and the terminal number in one field - - - true - - - - - - - The label (X1) is drawn in one field and the terminal number (1) in another, which a terminal symbol may place where it wants -- and hide when it must. A symbol without such a field shows the two, one under the other. - - - Split the label and the terminal number - - - - - - - Only the drawing changes: what is written in the element, the numbering, the sorting and the exports keep the whole label. - - - true - - - - - - diff --git a/sources/ui/configpage/projectconfigpages.cpp b/sources/ui/configpage/projectconfigpages.cpp index 50da7433a..29d8c0a74 100644 --- a/sources/ui/configpage/projectconfigpages.cpp +++ b/sources/ui/configpage/projectconfigpages.cpp @@ -191,6 +191,11 @@ void ProjectMainConfigPage::applyProjectConf() modified_project = true; } + if (m_project -> terminalLabelSplit() != terminal_label_split_rb_ -> isChecked()) { + m_project -> setTerminalLabelSplit(terminal_label_split_rb_ -> isChecked()); + modified_project = true; + } + //Following the application's rules stores nothing in the project WiringRules::Settings wiring_rules; if (!use_application_rules_cb_ -> isChecked()) { @@ -266,6 +271,27 @@ void ProjectMainConfigPage::initWidgets() "text. Uncheck to make them turn with the element, as before.", "tooltip")); + //How the terminals draw their label: a setting of this project, + //so the same file draws the same way on every machine which + //opens it, like every other choice of how the sheets are drawn + terminal_label_gb_ = new QGroupBox(tr("Display of the terminal labelling", "group box title")); + terminal_label_combined_rb_ = new QRadioButton( + tr("Show the label and the terminal number in one field", "radio button label")); + terminal_label_combined_rb_ -> setToolTip(tr( + "A terminal's label (X1:1) is drawn as a whole, the way it has always been.", + "tooltip")); + terminal_label_split_rb_ = new QRadioButton(tr("Split the label and the terminal number", + "radio button label")); + terminal_label_split_rb_ -> setToolTip(tr( + "The label (X1) is drawn in one field and the terminal number (1) in another, " + "which a terminal symbol may place where it wants -- and hide when it must. " + "A symbol without such a field shows the two, one under the other.", + "tooltip")); + terminal_label_help_ = new QLabel(tr("Only the drawing changes: what is written in the element, " + "the numbering, the sorting and the exports keep the whole label.", + "informative label")); + terminal_label_help_ -> setWordWrap(true); + //How many wires a terminal may take (discussion #1158) wiring_rules_gb_ = new QGroupBox(tr("Conductors per terminal", "group box title")); use_application_rules_cb_ = new QCheckBox(tr("Use the application settings", "checkbox label")); @@ -335,6 +361,13 @@ void ProjectMainConfigPage::initLayout() main_layout0 -> addWidget(upright_symbol_texts_cb_); main_layout0 -> addSpacing(10); + QVBoxLayout *terminal_label_layout = new QVBoxLayout(terminal_label_gb_); + terminal_label_layout -> addWidget(terminal_label_combined_rb_); + terminal_label_layout -> addWidget(terminal_label_split_rb_); + terminal_label_layout -> addWidget(terminal_label_help_); + main_layout0 -> addWidget(terminal_label_gb_); + main_layout0 -> addSpacing(10); + QVBoxLayout *wiring_rules_layout = new QVBoxLayout(wiring_rules_gb_); wiring_rules_layout -> addWidget(use_application_rules_cb_); QHBoxLayout *max_wires_layout = new QHBoxLayout(); @@ -369,6 +402,11 @@ void ProjectMainConfigPage::readValuesFromProject() const int wire_hops_index = wire_hops_cb_ -> findData(WireHops::toString(m_project -> wireHops())); wire_hops_cb_ -> setCurrentIndex(qMax(0, wire_hops_index)); upright_symbol_texts_cb_ -> setChecked(m_project -> uprightSymbolTexts()); + if (m_project -> terminalLabelSplit()) { + terminal_label_split_rb_ -> setChecked(true); + } else { + terminal_label_combined_rb_ -> setChecked(true); + } //The rules that apply: the project's own or the application's const WiringRules::Settings wiring_rules = m_project -> wiringRules(); @@ -425,6 +463,7 @@ void ProjectMainConfigPage::adjustReadOnly() usage_reset_pb_ -> setDisabled(is_read_only); wire_hops_cb_ -> setDisabled(is_read_only); upright_symbol_texts_cb_ -> setDisabled(is_read_only); + terminal_label_gb_ -> setDisabled(is_read_only); wiring_rules_gb_ -> setDisabled(is_read_only); } diff --git a/sources/ui/configpage/projectconfigpages.h b/sources/ui/configpage/projectconfigpages.h index 39df7702f..03cd6e5c5 100644 --- a/sources/ui/configpage/projectconfigpages.h +++ b/sources/ui/configpage/projectconfigpages.h @@ -26,6 +26,7 @@ class QLabel; class QComboBox; class QLineEdit; class QCheckBox; +class QRadioButton; class QPushButton; class QSpinBox; class QGroupBox; @@ -140,6 +141,10 @@ class ProjectMainConfigPage : public ProjectConfigPage { QLabel *wire_hops_label_; QComboBox *wire_hops_cb_; QCheckBox *upright_symbol_texts_cb_; + QGroupBox *terminal_label_gb_; + QRadioButton *terminal_label_combined_rb_; + QRadioButton *terminal_label_split_rb_; + QLabel *terminal_label_help_; QGroupBox *wiring_rules_gb_; QCheckBox *use_application_rules_cb_; QLabel *max_wires_label_; diff --git a/sources/utils/qetsettings.cpp b/sources/utils/qetsettings.cpp index 35ffe8559..632d30b52 100644 --- a/sources/utils/qetsettings.cpp +++ b/sources/utils/qetsettings.cpp @@ -290,28 +290,4 @@ namespace QetSettings QSettings settings; settings.setValue(QStringLiteral("diagrameditor/sheet_background_recent"), colors); } - - /** - * @brief terminalLabelSplit - * @return whether a terminal's label is drawn split, the label and - * the terminal number each in their own text field, instead of the - * whole label ("X1:1") in one field. Off unless the user turned it - * on, so an existing drawing keeps its look. @sa setTerminalLabelSplit - */ - bool terminalLabelSplit() - { - QSettings settings; - return settings.value(QStringLiteral("element/terminal_label_split"), false).toBool(); - } - - /** - * @brief setTerminalLabelSplit - * Store whether a terminal's label is drawn split. @sa terminalLabelSplit - * @param split - */ - void setTerminalLabelSplit(bool split) - { - QSettings settings; - settings.setValue(QStringLiteral("element/terminal_label_split"), split); - } } diff --git a/sources/utils/qetsettings.h b/sources/utils/qetsettings.h index 5e4e42c25..f291caf93 100644 --- a/sources/utils/qetsettings.h +++ b/sources/utils/qetsettings.h @@ -76,20 +76,6 @@ namespace QetSettings QStringList sheetBackgroundRecentColors(); void setSheetBackgroundRecentColors(const QStringList &colors); - - /** - @brief How a terminal's own label is drawn. - - The label is stored as it is written ("X1:1"). With the split on, - the drawing shows the label ("X1") and the terminal number ("1") - as two parts, so a terminal symbol can keep the number in its own - text field and place it where it wants. Only the drawing reacts: - what the element stores, the numbering, the sorting in the - terminal strip editor and every export keep the whole label. - Off by default, so a drawing keeps the look it was made with. - */ - bool terminalLabelSplit(); - void setTerminalLabelSplit(bool split); } #endif // QETSETTINGS_H diff --git a/tests/qttest/tst_terminallabeldisplay.cpp b/tests/qttest/tst_terminallabeldisplay.cpp index 8d7f4b4ee..c21105ffb 100644 --- a/tests/qttest/tst_terminallabeldisplay.cpp +++ b/tests/qttest/tst_terminallabeldisplay.cpp @@ -26,11 +26,10 @@ #include "qetgraphicsitem/terminal.h" #include "qetinformation.h" #include "qetproject.h" -#include "utils/qetsettings.h" /** - How a terminal's own label is drawn, the setting of the moment being - read (@sa QetSettings::terminalLabelSplit). + How a terminal's own label is drawn, the terminal labelling of the + project being read (@sa QETProject::terminalLabelSplit). The label stays whole wherever it is used as data: what the element stores, the numbering, the sorting in the terminal strip editor and @@ -149,19 +148,10 @@ class tst_terminallabeldisplay : public QObject } private slots: - void cleanup() - { - //Whatever a test left behind, the next one (and the rest of - //the suite) starts from the shipped default - QetSettings::setTerminalLabelSplit(false); - } - //The shipped default: one field with the whole label, the way it has //always been drawn void oneFieldKeepsTheWholeLabel() { - QetSettings::setTerminalLabelSplit(false); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); @@ -186,11 +176,10 @@ private slots: //can never make a number vanish void splitWithoutNumberFieldShowsTwoLines() { - QetSettings::setTerminalLabelSplit(true); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); + project.setTerminalLabelSplit(true); Element *element = terminalWithLabel(project, QStringLiteral("X1:1")); QVERIFY(element); @@ -216,11 +205,10 @@ private slots: //part in its field, the label no longer carrying the number void splitWithNumberFieldShowsEachInItsOwnField() { - QetSettings::setTerminalLabelSplit(true); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); + project.setTerminalLabelSplit(true); Element *element = terminalWithLabel(project, QStringLiteral("X1:1")); QVERIFY(element); @@ -240,11 +228,10 @@ private slots: //setting says void splitLeavesLabelsWithoutColonAlone() { - QetSettings::setTerminalLabelSplit(true); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); + project.setTerminalLabelSplit(true); Element *element = terminalWithLabel(project, QStringLiteral("S7")); QVERIFY(element); @@ -266,15 +253,16 @@ private slots: QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); - QetSettings::setTerminalLabelSplit(true); + project.setTerminalLabelSplit(true); Element *element = terminalWithLabel(project, QStringLiteral("X1:1")); QVERIFY(element); DynamicElementTextItem *label = fieldBoundTo(element, QETInformation::ELMT_LABEL); QVERIFY(label); QCOMPARE(label->toPlainText(), QStringLiteral("X1\n1")); - QetSettings::setTerminalLabelSplit(false); - element->refreshLabelFields(); + //The setter itself tells the labels of the drawings already + //open to draw again: nothing else to ask for + project.setTerminalLabelSplit(false); QCOMPARE(label->toPlainText(), QStringLiteral("X1:1")); QCOMPARE(element->actualLabel(), QStringLiteral("X1:1")); } @@ -284,8 +272,6 @@ private slots: //use of it as data -- only the drawing changes void hiddenNameKeepsEverythingStored() { - QetSettings::setTerminalLabelSplit(false); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); @@ -308,11 +294,10 @@ private slots: //hiding the name can never hide the number void hiddenNameKeepsTheNumberWithSplit() { - QetSettings::setTerminalLabelSplit(true); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); + project.setTerminalLabelSplit(true); Element *element = terminalWithLabel(project, QStringLiteral("X1:1")); QVERIFY(element); @@ -332,11 +317,10 @@ private slots: //draws nothing -- the number is never drawn twice void hiddenNameLeavesTheNumberToItsOwnField() { - QetSettings::setTerminalLabelSplit(true); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); + project.setTerminalLabelSplit(true); Element *element = terminalWithLabel(project, QStringLiteral("X1:1")); QVERIFY(element); @@ -355,8 +339,6 @@ private slots: //file says void nonTerminalAlwaysDrawsItsName() { - QetSettings::setTerminalLabelSplit(false); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); @@ -380,11 +362,10 @@ private slots: //part of the label, not a split waiting to happen void splitLeavesNonTerminalsWithColonAlone() { - QetSettings::setTerminalLabelSplit(true); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok); + project.setTerminalLabelSplit(true); Element *element = nonTerminalWithLabel(project, QStringLiteral("-K1:13")); QVERIFY2(element, @@ -404,8 +385,6 @@ private slots: //with it, both ways through the same signal void hiddenNameHidesTheLabelField() { - QetSettings::setTerminalLabelSplit(false); - const QString fixture = QFINDTESTDATA("fixtures/every_feature.qet"); QETProject project(fixture); QCOMPARE(project.state(), QETProject::Ok);