Merge pull request #267 from qelectrotech/terminal_strip

Merge Terminal strip to master
This commit is contained in:
Laurent Trinques
2023-09-20 08:29:23 +02:00
committed by GitHub
6 changed files with 282 additions and 235 deletions

View File

@@ -97,6 +97,7 @@ namespace TerminalStripDrawer
QUuid lvl_1 = QUuid::createUuid(); QUuid lvl_1 = QUuid::createUuid();
QUuid lvl_2 = QUuid::createUuid(); QUuid lvl_2 = QUuid::createUuid();
QUuid lvl_3 = QUuid::createUuid(); QUuid lvl_3 = QUuid::createUuid();
QUuid lvl_4 = QUuid::createUuid();
QVector <QSharedPointer<AbstractRealTerminalInterface>> real_terminals_vector; QVector <QSharedPointer<AbstractRealTerminalInterface>> real_terminals_vector;
@@ -109,6 +110,9 @@ namespace TerminalStripDrawer
real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> { real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> {
new DemoRealTerminal( QStringLiteral("signal"), new DemoRealTerminal( QStringLiteral("signal"),
lvl_3)}; lvl_3)};
real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> {
new DemoRealTerminal( QStringLiteral("teach"),
lvl_4)};
m_physical_terminal << QSharedPointer<AbstractPhysicalTerminalInterface> { m_physical_terminal << QSharedPointer<AbstractPhysicalTerminalInterface> {
new DemoPhysicalTerminal {real_terminals_vector}}; new DemoPhysicalTerminal {real_terminals_vector}};
@@ -122,6 +126,9 @@ namespace TerminalStripDrawer
real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> { real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> {
new DemoRealTerminal( QStringLiteral("signal"), new DemoRealTerminal( QStringLiteral("signal"),
lvl_3)}; lvl_3)};
real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> {
new DemoRealTerminal( QStringLiteral("teach"),
lvl_4)};
m_physical_terminal << QSharedPointer<AbstractPhysicalTerminalInterface> { m_physical_terminal << QSharedPointer<AbstractPhysicalTerminalInterface> {
new DemoPhysicalTerminal {real_terminals_vector}}; new DemoPhysicalTerminal {real_terminals_vector}};
@@ -135,6 +142,9 @@ namespace TerminalStripDrawer
real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> { real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> {
new DemoRealTerminal( QStringLiteral("signal"), new DemoRealTerminal( QStringLiteral("signal"),
lvl_3)}; lvl_3)};
real_terminals_vector << QSharedPointer<AbstractRealTerminalInterface> {
new DemoRealTerminal( QStringLiteral("teach"),
lvl_4)};
m_physical_terminal << QSharedPointer<AbstractPhysicalTerminalInterface> { m_physical_terminal << QSharedPointer<AbstractPhysicalTerminalInterface> {
new DemoPhysicalTerminal {real_terminals_vector}}; new DemoPhysicalTerminal {real_terminals_vector}};
} }

View File

@@ -59,7 +59,7 @@ void TerminalStripDrawer::paint(QPainter *painter)
painter->setPen(pen_); painter->setPen(pen_);
painter->setBrush(brush_); painter->setBrush(brush_);
if (m_debug_draw) if (m_preview_draw)
{ {
painter->save(); painter->save();
painter->setPen(Qt::blue); painter->setPen(Qt::blue);
@@ -156,7 +156,7 @@ void TerminalStripDrawer::paint(QPainter *painter)
const auto rect_{terminals_text_rect[index_]}; const auto rect_{terminals_text_rect[index_]};
painter->translate(rect_.bottomLeft()); painter->translate(rect_.bottomLeft());
painter->rotate(270); painter->rotate(270);
text_rect.setRect(0, 0, rect_.height(), rect_.width()); text_rect.setRect(0, 0, rect_.height(), terminal_rect.width());
} }
const auto shared_real_terminal{real_terminal_vector[i]}; const auto shared_real_terminal{real_terminal_vector[i]};
@@ -164,7 +164,7 @@ void TerminalStripDrawer::paint(QPainter *painter)
shared_real_terminal ? shared_real_terminal->label() : QLatin1String(), shared_real_terminal ? shared_real_terminal->label() : QLatin1String(),
terminals_text_option[index_]); terminals_text_option[index_]);
if (m_debug_draw) if (m_preview_draw)
{ {
painter->setPen(Qt::blue); painter->setPen(Qt::blue);
painter->drawRect(text_rect); painter->drawRect(text_rect);
@@ -229,6 +229,10 @@ bool TerminalStripDrawer::haveLayout() const
return !m_pattern.isNull(); return !m_pattern.isNull();
} }
void TerminalStripDrawer::setPreviewDraw(bool draw) {
m_preview_draw = draw;
}
int TerminalStripDrawer::height() const int TerminalStripDrawer::height() const
{ {
if (m_pattern) if (m_pattern)

View File

@@ -77,6 +77,8 @@ namespace TerminalStripDrawer
void setLayout(QSharedPointer<TerminalStripLayoutPattern> layout); void setLayout(QSharedPointer<TerminalStripLayoutPattern> layout);
bool haveLayout() const; bool haveLayout() const;
void setPreviewDraw(bool draw = true);
private: private:
int height() const; int height() const;
int width() const; int width() const;
@@ -84,7 +86,7 @@ namespace TerminalStripDrawer
private: private:
QSharedPointer <AbstractTerminalStripInterface> m_strip; QSharedPointer <AbstractTerminalStripInterface> m_strip;
QSharedPointer<TerminalStripLayoutPattern> m_pattern; QSharedPointer<TerminalStripLayoutPattern> m_pattern;
bool m_debug_draw { false }; bool m_preview_draw { false };
}; };
} }

View File

@@ -219,3 +219,10 @@ void TerminalStripLayoutEditor::updatePreview()
ui->m_graphics_view->fitInView(m_preview_strip_item.boundingRect().adjusted(-5,-5,5,5), ui->m_graphics_view->fitInView(m_preview_strip_item.boundingRect().adjusted(-5,-5,5,5),
Qt::KeepAspectRatio); Qt::KeepAspectRatio);
} }
void TerminalStripLayoutEditor::on_m_display_preview_help_clicked(bool checked)
{
m_preview_strip_item.m_drawer.setPreviewDraw(checked);
m_preview_strip_item.update();
}

View File

@@ -32,6 +32,8 @@ namespace Ui {
class PreviewStripItem : public QGraphicsItem class PreviewStripItem : public QGraphicsItem
{ {
friend class TerminalStripLayoutEditor;
public: public:
PreviewStripItem (QSharedPointer<TerminalStripLayoutPattern> layout) : PreviewStripItem (QSharedPointer<TerminalStripLayoutPattern> layout) :
m_drawer {QSharedPointer<TerminalStripDrawer::DemoTerminalStrip>{new TerminalStripDrawer::DemoTerminalStrip}, m_drawer {QSharedPointer<TerminalStripDrawer::DemoTerminalStrip>{new TerminalStripDrawer::DemoTerminalStrip},
@@ -53,7 +55,6 @@ class PreviewStripItem : public QGraphicsItem
private: private:
TerminalStripDrawer::TerminalStripDrawer m_drawer; TerminalStripDrawer::TerminalStripDrawer m_drawer;
}; };
/** /**
@@ -76,6 +77,8 @@ class TerminalStripLayoutEditor : public QWidget
private slots: private slots:
void valueEdited(); void valueEdited();
void on_m_display_preview_help_clicked(bool checked);
private: private:
void updateUi(); void updateUi();
void updatePreview(); void updatePreview();

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>553</width> <width>767</width>
<height>387</height> <height>544</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -17,22 +17,130 @@
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum> <enum>QLayout::SetMaximumSize</enum>
</property> </property>
<item row="2" column="0"> <item row="4" column="0">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_7">
<property name="text"> <property name="text">
<string>Espace :</string> <string>Borne niveau 0 :</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="0">
<widget class="QSpinBox" name="m_y_header_sb"> <widget class="QLabel" name="label">
<property name="text">
<string>En tête :</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="4">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="12" column="0" colspan="5">
<widget class="QGraphicsView" name="m_graphics_view"/>
</item>
<item row="3" column="4">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Point de pont</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="m_y_terminal_1_sb">
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="2"> <item row="8" column="0" colspan="5">
<widget class="QSpinBox" name="m_width_terminal_0_sb"> <widget class="Line" name="line_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="m_height_spacer_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Décalage vertical</string>
</property>
</widget>
</item>
<item row="11" column="4">
<widget class="QCheckBox" name="m_display_preview_help">
<property name="text">
<string>Afficher l'aide</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="m_width_header_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="7" column="3">
<widget class="QSpinBox" name="m_height_terminal_3_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="5" column="4">
<widget class="QSpinBox" name="m_bridge_point_1_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Largeur</string>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QSpinBox" name="m_height_terminal_2_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="m_y_spacer_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Hauteur</string>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Prévisualisation :</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="m_y_header_sb">
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
@@ -45,69 +153,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Borne niveau 1 :</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="m_height_spacer_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>En tête :</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="m_y_terminal_2_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Borne niveau 0 :</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Hauteur</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Point de pont</string>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QSpinBox" name="m_height_terminal_2_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QSpinBox" name="m_height_terminal_0_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="4" column="1"> <item row="4" column="1">
<widget class="QSpinBox" name="m_y_terminal_0_sb"> <widget class="QSpinBox" name="m_y_terminal_0_sb">
<property name="maximum"> <property name="maximum">
@@ -115,29 +160,15 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" colspan="4"> <item row="2" column="2">
<widget class="Line" name="line"> <widget class="QSpinBox" name="m_width_spacer_sb">
<property name="orientation"> <property name="maximum">
<enum>Qt::Horizontal</enum> <number>1000</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0" colspan="5"> <item row="6" column="2">
<widget class="Line" name="line_5"> <widget class="QSpinBox" name="m_width_terminal_2_sb">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Largeur</string>
</property>
</widget>
</item>
<item row="7" column="3">
<widget class="QSpinBox" name="m_height_terminal_3_sb">
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
@@ -158,32 +189,23 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="0" column="1"> <item row="1" column="3">
<widget class="QComboBox" name="m_header_text_orientation_cb"> <widget class="QComboBox" name="m_terminal_text_alignment_cb">
<item> <item>
<property name="text"> <property name="text">
<string>Horizontal</string> <string>Gauche</string>
</property> </property>
</item> </item>
<item> <item>
<property name="text"> <property name="text">
<string>Vertical</string> <string>Centre</string>
</property> </property>
</item> </item>
</widget> <item>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_15">
<property name="text"> <property name="text">
<string>Alignement du texte d'en tête :</string> <string>Droite</string>
</property> </property>
</widget>
</item> </item>
<item row="0" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Orientation du texte d'en tête :</string>
</property>
</widget> </widget>
</item> </item>
<item row="0" column="3"> <item row="0" column="3">
@@ -205,10 +227,17 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="0" column="2">
<widget class="QLabel" name="label_16"> <widget class="QLabel" name="label_15">
<property name="text"> <property name="text">
<string>Orientation du texte de borne :</string> <string>Alignement du texte d'en tête :</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Alignement du texte de borne :</string>
</property> </property>
</widget> </widget>
</item> </item>
@@ -226,51 +255,39 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="1" column="2"> <item row="0" column="1">
<widget class="QLabel" name="label_17"> <widget class="QComboBox" name="m_header_text_orientation_cb">
<item>
<property name="text"> <property name="text">
<string>Alignement du texte de borne :</string> <string>Horizontal</string>
</property>
</item>
<item>
<property name="text">
<string>Vertical</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Orientation du texte de borne :</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="3"> <item row="0" column="0">
<widget class="QComboBox" name="m_terminal_text_alignment_cb"> <widget class="QLabel" name="label_14">
<item>
<property name="text"> <property name="text">
<string>Gauche</string> <string>Orientation du texte d'en tête :</string>
</property> </property>
</item>
<item>
<property name="text">
<string>Centre</string>
</property>
</item>
<item>
<property name="text">
<string>Droite</string>
</property>
</item>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="1" column="3">
<widget class="QLabel" name="label_3"> <widget class="QSpinBox" name="m_height_header_sb">
<property name="text">
<string>Décalage vertical</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QSpinBox" name="m_width_terminal_1_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSpinBox" name="m_y_terminal_1_sb">
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
@@ -283,73 +300,17 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="4"> <item row="4" column="2">
<widget class="QSpinBox" name="m_bridge_point_1_sb"> <widget class="QSpinBox" name="m_width_terminal_0_sb">
<property name="maximum"> <property name="maximum">
<number>1000</number> <number>1000</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="3"> <item row="2" column="0">
<widget class="QSpinBox" name="m_height_header_sb"> <widget class="QLabel" name="label_6">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QSpinBox" name="m_bridge_point_0_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QSpinBox" name="m_width_terminal_2_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="m_y_spacer_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSpinBox" name="m_width_spacer_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="m_width_header_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="7" column="4">
<widget class="QSpinBox" name="m_bridge_point_3_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_10">
<property name="text"> <property name="text">
<string>Borne niveau 3 :</string> <string>Espace :</string>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QSpinBox" name="m_height_terminal_1_sb">
<property name="maximum">
<number>1000</number>
</property> </property>
</widget> </widget>
</item> </item>
@@ -360,6 +321,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1">
<widget class="QSpinBox" name="m_y_terminal_2_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="6" column="4"> <item row="6" column="4">
<widget class="QSpinBox" name="m_bridge_point_2_sb"> <widget class="QSpinBox" name="m_bridge_point_2_sb">
<property name="maximum"> <property name="maximum">
@@ -367,8 +335,61 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="4">
<widget class="QSpinBox" name="m_bridge_point_3_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QSpinBox" name="m_width_terminal_1_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QSpinBox" name="m_height_terminal_0_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QSpinBox" name="m_height_terminal_1_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Borne niveau 3 :</string>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QSpinBox" name="m_bridge_point_0_sb">
<property name="maximum">
<number>1000</number>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Borne niveau 1 :</string>
</property>
</widget>
</item>
<item row="10" column="0" colspan="5"> <item row="10" column="0" colspan="5">
<widget class="QGraphicsView" name="m_graphics_view"/> <widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>