Terminal strip: add resistor, varistor, test socket and reversed diode types

Add ElementData::TTResistor, TTVaristor, TTTestSocket and TTDiodeReversed
(xml values "resistor", "varistor", "test_socket", "diode_reversed"),
selectable in the element editor, the terminal strip editor and the free
terminal editor, and drawn in the terminal strip plan.
This commit is contained in:
Laurent Trinques
2026-10-10 16:03:47 +02:00
parent b089c5b245
commit 0fe88758aa
10 changed files with 136 additions and 1 deletions
@@ -115,6 +115,41 @@ void drawAntiParallelDiodesSymbol(QPainter *painter)
painter->drawLine(QPointF{5, 2}, QPointF{5, 5});
}
void drawResistorSymbol(QPainter *painter)
{
painter->drawLine(QPointF{0, -7}, QPointF{0, -5});
painter->drawRect(QRectF{-3, -5, 6, 10});
painter->drawLine(QPointF{0, 5}, QPointF{0, 7});
}
//A resistor crossed by an oblique line ended by a short bar
void drawVaristorSymbol(QPainter *painter)
{
drawResistorSymbol(painter);
painter->drawLine(QPointF{-5, 5}, QPointF{5, -5});
painter->drawLine(QPointF{5, -5}, QPointF{8, -5});
}
//A measuring point : the line is interrupted by a small circle
void drawTestSocketSymbol(QPainter *painter)
{
const qreal r{2.5};
painter->drawLine(QPointF{0, -7}, QPointF{0, -r});
painter->drawEllipse(QPointF{0, 0}, r, r);
painter->drawLine(QPointF{0, r}, QPointF{0, 7});
}
//Same as the diode, the anode is at the bottom
void drawDiodeReversedSymbol(QPainter *painter)
{
const qreal t{symbol_height / 3};
const QPointF triangle[3] { {-t, t}, {t, t}, {0, -t} };
painter->drawLine(QPointF{0, -7}, QPointF{0, -t});
painter->drawLine(QPointF{-t, -t}, QPointF{t, -t});
painter->drawPolygon(triangle, 3);
painter->drawLine(QPointF{0, t}, QPointF{0, 7});
}
/**
* @brief drawScaled
* Call @a draw with the painter moved by @a dx and scaled by @a factor.
@@ -173,6 +208,10 @@ void drawTypeSymbol(QPainter *painter, const QRectF &box, ElementData::TerminalT
case ElementData::TTDiode : drawDiodeSymbol(p); break;
case ElementData::TTGround : drawGroundSymbol(p); break;
case ElementData::TTAntiParallelDiodes : drawAntiParallelDiodesSymbol(p); break;
case ElementData::TTResistor : drawResistorSymbol(p); break;
case ElementData::TTVaristor : drawVaristorSymbol(p); break;
case ElementData::TTTestSocket : drawTestSocketSymbol(p); break;
case ElementData::TTDiodeReversed : drawDiodeReversedSymbol(p); break;
default: break;
}
};
@@ -193,6 +193,14 @@ void FreeTerminalEditor::on_m_type_cb_activated(int index)
override_type = ElementData::TTGround; break;
case 5:
override_type = ElementData::TTAntiParallelDiodes; break;
case 6:
override_type = ElementData::TTResistor; break;
case 7:
override_type = ElementData::TTVaristor; break;
case 8:
override_type = ElementData::TTTestSocket; break;
case 9:
override_type = ElementData::TTDiodeReversed; break;
default:
override_type = ElementData::TTGeneric; break;
}
@@ -127,6 +127,26 @@
<string>Anti-parallel diodes</string>
</property>
</item>
<item>
<property name="text">
<string>Resistor</string>
</property>
</item>
<item>
<property name="text">
<string>Varistor</string>
</property>
</item>
<item>
<property name="text">
<string>Test socket</string>
</property>
</item>
<item>
<property name="text">
<string>Diode (reversed)</string>
</property>
</item>
</widget>
</item>
<item row="3" column="2" colspan="2">
@@ -430,6 +430,10 @@ QWidget *FreeTerminalModelDelegate::createEditor(QWidget *parent, const QStyleOp
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTDiode), ElementData::TTDiode);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTGround), ElementData::TTGround);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTAntiParallelDiodes), ElementData::TTAntiParallelDiodes);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTResistor), ElementData::TTResistor);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTVaristor), ElementData::TTVaristor);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTTestSocket), ElementData::TTTestSocket);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTDiodeReversed), ElementData::TTDiodeReversed);
return qcb;
}
@@ -571,6 +571,14 @@ void TerminalStripEditor::on_m_type_cb_activated(int index)
override_type = ElementData::TTGround; break;
case 5:
override_type = ElementData::TTAntiParallelDiodes; break;
case 6:
override_type = ElementData::TTResistor; break;
case 7:
override_type = ElementData::TTVaristor; break;
case 8:
override_type = ElementData::TTTestSocket; break;
case 9:
override_type = ElementData::TTDiodeReversed; break;
default:
override_type = ElementData::TTGeneric; break;
}
@@ -132,6 +132,26 @@
<string>Anti-parallel diodes</string>
</property>
</item>
<item>
<property name="text">
<string>Resistor</string>
</property>
</item>
<item>
<property name="text">
<string>Varistor</string>
</property>
</item>
<item>
<property name="text">
<string>Test socket</string>
</property>
</item>
<item>
<property name="text">
<string>Diode (reversed)</string>
</property>
</item>
</widget>
</item>
<item row="8" column="0">
@@ -834,6 +834,10 @@ QWidget *TerminalStripModelDelegate::createEditor(QWidget *parent, const QStyleO
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTDiode), ElementData::TTDiode);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTGround), ElementData::TTGround);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTAntiParallelDiodes), ElementData::TTAntiParallelDiodes);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTResistor), ElementData::TTResistor);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTVaristor), ElementData::TTVaristor);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTTestSocket), ElementData::TTTestSocket);
qcb->addItem(ElementData::translatedTerminalType(ElementData::TTDiodeReversed), ElementData::TTDiodeReversed);
return qcb;
}
@@ -226,6 +226,10 @@ void ElementPropertiesEditorWidget::setUpInterface()
ui->m_terminal_type_cb->addItem(tr("Diode"), ElementData::TTDiode);
ui->m_terminal_type_cb->addItem(tr("Ground"), ElementData::TTGround);
ui->m_terminal_type_cb->addItem(tr("Anti-parallel diodes"), ElementData::TTAntiParallelDiodes);
ui->m_terminal_type_cb->addItem(tr("Resistor"), ElementData::TTResistor);
ui->m_terminal_type_cb->addItem(tr("Varistor"), ElementData::TTVaristor);
ui->m_terminal_type_cb->addItem(tr("Test socket"), ElementData::TTTestSocket);
ui->m_terminal_type_cb->addItem(tr("Diode (reversed)"), ElementData::TTDiodeReversed);
ui->m_terminal_func_cb->addItem(tr("Generic"), ElementData::TFGeneric);
ui->m_terminal_func_cb->addItem(tr("Phase"), ElementData::TFPhase);
+24
View File
@@ -842,6 +842,14 @@ QString ElementData::terminalTypeToString(ElementData::TerminalType type)
return QStringLiteral("ground");
case ElementData::TTAntiParallelDiodes:
return QStringLiteral("antiparallel_diodes");
case ElementData::TTResistor:
return QStringLiteral("resistor");
case ElementData::TTVaristor:
return QStringLiteral("varistor");
case ElementData::TTTestSocket:
return QStringLiteral("test_socket");
case ElementData::TTDiodeReversed:
return QStringLiteral("diode_reversed");
}
return QStringLiteral("generic");
}
@@ -860,6 +868,14 @@ ElementData::TerminalType ElementData::terminalTypeFromString(const QString &str
return ElementData::TTGround;
} else if (string == QLatin1String("antiparallel_diodes")) {
return ElementData::TTAntiParallelDiodes;
} else if (string == QLatin1String("resistor")) {
return ElementData::TTResistor;
} else if (string == QLatin1String("varistor")) {
return ElementData::TTVaristor;
} else if (string == QLatin1String("test_socket")) {
return ElementData::TTTestSocket;
} else if (string == QLatin1String("diode_reversed")) {
return ElementData::TTDiodeReversed;
}
qDebug() << "ElementData::terminalTypeFromString : string : "
@@ -883,6 +899,14 @@ QString ElementData::translatedTerminalType(ElementData::TerminalType type)
return QObject::tr("Ground", "ground terminal element type");
case ElementData::TTAntiParallelDiodes:
return QObject::tr("Anti-parallel diodes", "anti-parallel diodes terminal element type");
case ElementData::TTResistor:
return QObject::tr("Resistor", "resistor terminal element type");
case ElementData::TTVaristor:
return QObject::tr("Varistor", "varistor terminal element type");
case ElementData::TTTestSocket:
return QObject::tr("Test socket", "test socket terminal element type");
case ElementData::TTDiodeReversed:
return QObject::tr("Diode (reversed)", "reversed diode terminal element type");
}
return QObject::tr("Generic", "generic terminal element type");
}
+5 -1
View File
@@ -176,7 +176,11 @@ class ElementData : public PropertiesInterface
TTSectional,
TTDiode,
TTGround,
TTAntiParallelDiodes
TTAntiParallelDiodes,
TTResistor,
TTVaristor,
TTTestSocket,
TTDiodeReversed
};
Q_ENUM(TerminalType)