mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 20:50:34 +01:00
Terminal strip editor display the free terminal elements
This commit is contained in:
@@ -20,6 +20,8 @@
|
|||||||
#include "terminalstripcreatordialog.h"
|
#include "terminalstripcreatordialog.h"
|
||||||
#include "../../qetproject.h"
|
#include "../../qetproject.h"
|
||||||
#include "../terminalstrip.h"
|
#include "../terminalstrip.h"
|
||||||
|
#include "../elementprovider.h"
|
||||||
|
#include "../qetgraphicsitem/terminalelement.h"
|
||||||
|
|
||||||
#include <QTreeWidgetItem>
|
#include <QTreeWidgetItem>
|
||||||
|
|
||||||
@@ -54,16 +56,20 @@ void TerminalStripEditor::buildTree()
|
|||||||
|
|
||||||
auto title = m_project->title();
|
auto title = m_project->title();
|
||||||
if (title.isEmpty()) {
|
if (title.isEmpty()) {
|
||||||
title = tr("Projet : sans titre");
|
title = tr("Projet sans titre");
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList strl{title};
|
QStringList strl{title};
|
||||||
new QTreeWidgetItem(ui->m_terminal_strip_tw, strl, TerminalStripEditor::Root);
|
new QTreeWidgetItem(ui->m_terminal_strip_tw, strl, TerminalStripEditor::Root);
|
||||||
|
|
||||||
|
QStringList ftstrl(tr("Bornes indépendante"));
|
||||||
|
new QTreeWidgetItem(ui->m_terminal_strip_tw, ftstrl, TerminalStripEditor::FreeTerminal);
|
||||||
|
|
||||||
const auto ts_vector = m_project->terminalStrip();
|
const auto ts_vector = m_project->terminalStrip();
|
||||||
for (const auto ts : ts_vector) {
|
for (const auto ts : ts_vector) {
|
||||||
addTerminalStrip(ts);
|
addTerminalStrip(ts);
|
||||||
}
|
}
|
||||||
|
addFreeTerminal();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -114,6 +120,34 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
|
|||||||
return new QTreeWidgetItem(loc_qtwi, name, TerminalStripEditor::Strip);
|
return new QTreeWidgetItem(loc_qtwi, name, TerminalStripEditor::Strip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TerminalStripEditor::addFreeTerminal
|
||||||
|
* Add free terminal (aka terminal which not belong to a terminal strip)
|
||||||
|
* in the tree widget
|
||||||
|
*/
|
||||||
|
void TerminalStripEditor::addFreeTerminal()
|
||||||
|
{
|
||||||
|
ElementProvider ep(m_project);
|
||||||
|
auto vector_ = ep.freeTerminal();
|
||||||
|
|
||||||
|
if (vector_.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Sort the terminal element by label
|
||||||
|
std::sort(vector_.begin(), vector_.end(), [](TerminalElement *a, TerminalElement *b) {
|
||||||
|
return a->actualLabel() < b->actualLabel();
|
||||||
|
});
|
||||||
|
|
||||||
|
auto free_terminal_item = ui->m_terminal_strip_tw->topLevelItem(1);
|
||||||
|
|
||||||
|
for (const auto terminal : qAsConst(vector_))
|
||||||
|
{
|
||||||
|
QStringList strl{terminal->actualLabel()};
|
||||||
|
new QTreeWidgetItem(free_terminal_item, strl, TerminalStripEditor::FreeTerminal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief TerminalStripEditor::on_m_add_terminal_strip_pb_clicked
|
* @brief TerminalStripEditor::on_m_add_terminal_strip_pb_clicked
|
||||||
* Action when user click on add terminal strip button
|
* Action when user click on add terminal strip button
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace Ui {
|
|||||||
class QETProject;
|
class QETProject;
|
||||||
class TerminalStrip;
|
class TerminalStrip;
|
||||||
class QTreeWidgetItem;
|
class QTreeWidgetItem;
|
||||||
|
class TerminalElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The TerminalStripEditor class
|
* @brief The TerminalStripEditor class
|
||||||
@@ -39,6 +40,7 @@ class TerminalStripEditor : public QDialog
|
|||||||
|
|
||||||
enum TreeWidgetType{
|
enum TreeWidgetType{
|
||||||
Root,
|
Root,
|
||||||
|
FreeTerminal,
|
||||||
Inst,
|
Inst,
|
||||||
Loc,
|
Loc,
|
||||||
Strip
|
Strip
|
||||||
@@ -51,6 +53,7 @@ class TerminalStripEditor : public QDialog
|
|||||||
private:
|
private:
|
||||||
void buildTree();
|
void buildTree();
|
||||||
QTreeWidgetItem* addTerminalStrip(TerminalStrip *terminal_strip);
|
QTreeWidgetItem* addTerminalStrip(TerminalStrip *terminal_strip);
|
||||||
|
void addFreeTerminal();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_m_add_terminal_strip_pb_clicked();
|
void on_m_add_terminal_strip_pb_clicked();
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Gestionnaire de borniers</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include "diagram.h"
|
#include "diagram.h"
|
||||||
#include "qetgraphicsitem/ViewItem/qetgraphicstableitem.h"
|
#include "qetgraphicsitem/ViewItem/qetgraphicstableitem.h"
|
||||||
#include "qetgraphicsitem/element.h"
|
#include "qetgraphicsitem/element.h"
|
||||||
|
#include "qetgraphicsitem/terminalelement.h"
|
||||||
#include "qetproject.h"
|
#include "qetproject.h"
|
||||||
|
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
@@ -181,3 +182,28 @@ QetGraphicsTableItem *ElementProvider::tableFromUuid(const QUuid &uuid)
|
|||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ElementProvider::freeTerminal
|
||||||
|
* @return a vector of every terminals element who doesn't
|
||||||
|
* belong to a terminal strip.
|
||||||
|
*/
|
||||||
|
QVector<TerminalElement *> ElementProvider::freeTerminal() const
|
||||||
|
{
|
||||||
|
QVector<TerminalElement *> vector_;
|
||||||
|
|
||||||
|
for (const auto diagram : m_diagram_list) {
|
||||||
|
DiagramContent dc(diagram, false);
|
||||||
|
for (const auto element : qAsConst(dc.m_elements)) {
|
||||||
|
if (element->elementData().m_type == ElementData::Terminale)
|
||||||
|
{
|
||||||
|
auto te = static_cast<TerminalElement *>(element);
|
||||||
|
if (!te->parentTerminalStrip()) {
|
||||||
|
vector_.append(static_cast<TerminalElement *>(element));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return vector_;
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class QETProject;
|
|||||||
class Diagram;
|
class Diagram;
|
||||||
class Element;
|
class Element;
|
||||||
class QetGraphicsTableItem;
|
class QetGraphicsTableItem;
|
||||||
|
class TerminalElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
this class can search in the given diagram or project some kind of element
|
this class can search in the given diagram or project some kind of element
|
||||||
@@ -43,6 +44,7 @@ class ElementProvider
|
|||||||
QList <Element *> find(const int filter) const;
|
QList <Element *> find(const int filter) const;
|
||||||
QVector <QetGraphicsTableItem *> table(QetGraphicsTableItem *table = nullptr, QAbstractItemModel *model = nullptr);
|
QVector <QetGraphicsTableItem *> table(QetGraphicsTableItem *table = nullptr, QAbstractItemModel *model = nullptr);
|
||||||
QetGraphicsTableItem *tableFromUuid(const QUuid &uuid);
|
QetGraphicsTableItem *tableFromUuid(const QUuid &uuid);
|
||||||
|
QVector<TerminalElement *> freeTerminal() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList <Diagram *> m_diagram_list;
|
QList <Diagram *> m_diagram_list;
|
||||||
|
|||||||
Reference in New Issue
Block a user