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 "../../qetproject.h"
|
||||
#include "../terminalstrip.h"
|
||||
#include "../elementprovider.h"
|
||||
#include "../qetgraphicsitem/terminalelement.h"
|
||||
|
||||
#include <QTreeWidgetItem>
|
||||
|
||||
@@ -54,16 +56,20 @@ void TerminalStripEditor::buildTree()
|
||||
|
||||
auto title = m_project->title();
|
||||
if (title.isEmpty()) {
|
||||
title = tr("Projet : sans titre");
|
||||
title = tr("Projet sans titre");
|
||||
}
|
||||
|
||||
QStringList strl{title};
|
||||
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();
|
||||
for (const auto ts : ts_vector) {
|
||||
addTerminalStrip(ts);
|
||||
}
|
||||
addFreeTerminal();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,6 +120,34 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
|
||||
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
|
||||
* Action when user click on add terminal strip button
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace Ui {
|
||||
class QETProject;
|
||||
class TerminalStrip;
|
||||
class QTreeWidgetItem;
|
||||
class TerminalElement;
|
||||
|
||||
/**
|
||||
* @brief The TerminalStripEditor class
|
||||
@@ -39,6 +40,7 @@ class TerminalStripEditor : public QDialog
|
||||
|
||||
enum TreeWidgetType{
|
||||
Root,
|
||||
FreeTerminal,
|
||||
Inst,
|
||||
Loc,
|
||||
Strip
|
||||
@@ -51,6 +53,7 @@ class TerminalStripEditor : public QDialog
|
||||
private:
|
||||
void buildTree();
|
||||
QTreeWidgetItem* addTerminalStrip(TerminalStrip *terminal_strip);
|
||||
void addFreeTerminal();
|
||||
|
||||
private slots:
|
||||
void on_m_add_terminal_strip_pb_clicked();
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
<string>Gestionnaire de borniers</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="2">
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "diagram.h"
|
||||
#include "qetgraphicsitem/ViewItem/qetgraphicstableitem.h"
|
||||
#include "qetgraphicsitem/element.h"
|
||||
#include "qetgraphicsitem/terminalelement.h"
|
||||
#include "qetproject.h"
|
||||
|
||||
#include <QAbstractItemModel>
|
||||
@@ -181,3 +182,28 @@ QetGraphicsTableItem *ElementProvider::tableFromUuid(const QUuid &uuid)
|
||||
|
||||
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 Element;
|
||||
class QetGraphicsTableItem;
|
||||
class TerminalElement;
|
||||
|
||||
/**
|
||||
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;
|
||||
QVector <QetGraphicsTableItem *> table(QetGraphicsTableItem *table = nullptr, QAbstractItemModel *model = nullptr);
|
||||
QetGraphicsTableItem *tableFromUuid(const QUuid &uuid);
|
||||
QVector<TerminalElement *> freeTerminal() const;
|
||||
|
||||
private:
|
||||
QList <Diagram *> m_diagram_list;
|
||||
|
||||
Reference in New Issue
Block a user