mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-24 07:54:13 +02:00
dfec60a3a5
A terminal's label is written as it is read off the plan, "X1:1", and
the symbol draws it as one field. On a long strip that field is long
enough to reach into the next terminal, and a user who wants the number
next to the screw and the label out of the way has no way to say so.
Settings > General > Appearance now has a "Display of the terminal
labelling" group with two choices: the label and its terminal number in
one field, the way it has always been drawn, or the two split. The
first is what every drawing gets, so nothing moves until the user asks
for it, and choosing the other one redraws the drawings already open --
nothing needs to be closed and opened again.
A symbol made for the split carries a text field bound to the new
"Terminal number" information (in the element editor's list, next to
the label, and as the %{terminal_number} variable of a composite text):
the label field then shows "X1" and the number field "1", each placed
where the symbol wants it, and hideable when it must be. A symbol which
has no such field -- every symbol drawn until now -- gets the number on
its own line inside the label field, so switching the setting on can
never make a number vanish, and never needs a symbol to be touched
first. A field which becomes, or stops being, the number field tells
the label fields of its symbol to draw themselves again.
Only the drawing reacts. What the element stores, the numbering, the
sorting in the terminal strip editor, the automatic strip import and
every export keep the whole label: the split is read where the text is
drawn (Element::labelForDisplay() and friends), not where the label is
made.
The new test covers both choices, with and without the number field, a
label with no colon at all, and the way back to the whole label. The
full test suite passes (124/124).
96 lines
3.3 KiB
C++
96 lines
3.3 KiB
C++
/*
|
|
Copyright 2006-2026 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
QElectroTech is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef QETSETTINGS_H
|
|
#define QETSETTINGS_H
|
|
|
|
#include <Qt>
|
|
#include <QColor>
|
|
#include <QStringList>
|
|
|
|
/**
|
|
*Interface to use QSettings in QElectroTech
|
|
*Prefer use this namespace instead of directly QSettings
|
|
*It's notably useful when some QSettings value are used in
|
|
*different part of QElectroTech source code
|
|
*/
|
|
namespace QetSettings
|
|
{
|
|
void setHdpiScaleFactorRoundingPolicy(const QString &policy_str);
|
|
void setHdpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy policy);
|
|
Qt::HighDpiScaleFactorRoundingPolicy hdpiScaleFactorRoundingPolicy(
|
|
Qt::HighDpiScaleFactorRoundingPolicy default_policy = Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
|
|
|
bool scriptingEnabled();
|
|
void setScriptingEnabled(bool enabled);
|
|
bool scriptingForcedByEnvironment();
|
|
bool liveAssistantEnabled();
|
|
void setLiveAssistantEnabled(bool enabled);
|
|
bool liveSkipStartWarning();
|
|
void setLiveSkipStartWarning(bool skip);
|
|
bool liveAskFirst();
|
|
void setLiveAskFirst(bool ask);
|
|
|
|
/**
|
|
@brief Free-text drawing conventions for this installation (grid,
|
|
flow direction, routing, tagging, grouping, ...), written once by
|
|
the user and read by every AI assistant that connects -- live or
|
|
headless -- through qet-assistant.json and qet.houseStyle().
|
|
Empty when never set.
|
|
*/
|
|
QString houseStyle();
|
|
void setHouseStyle(const QString &text);
|
|
|
|
/**
|
|
@brief The sheet (folio) background the diagram editors draw.
|
|
|
|
Both halves are needed, not just the colour: with custom == false
|
|
the sheet follows the system ("Couleur systeme") and the views are
|
|
free to invert the lightness on a dark palette, while the very same
|
|
#ffffff with custom == true is an explicit "always white" that
|
|
must not be inverted. Storing only the colour would collapse the
|
|
two on the next start.
|
|
*/
|
|
struct SheetBackground
|
|
{
|
|
QColor color;
|
|
bool custom = false;
|
|
};
|
|
|
|
SheetBackground sheetBackground();
|
|
void setSheetBackground(const SheetBackground &background);
|
|
|
|
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
|