mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Add and move terminal strip item are now managed by undo command
This commit is contained in:
parent
21de926367
commit
7fede2277f
@ -11,6 +11,7 @@ DiagramImageItem + 1007
|
|||||||
QetShapItem + 1008
|
QetShapItem + 1008
|
||||||
crossRefItem + 1009
|
crossRefItem + 1009
|
||||||
DynamiqueElementTextItem + 1010
|
DynamiqueElementTextItem + 1010
|
||||||
|
TerminalStripItem +1011
|
||||||
ElementPrimitiveDecorator + 2200
|
ElementPrimitiveDecorator + 2200
|
||||||
|
|
||||||
###ELEMENT EDITOR###
|
###ELEMENT EDITOR###
|
||||||
|
@ -47,3 +47,11 @@ QRectF TerminalStripItem::boundingRect() const
|
|||||||
|
|
||||||
return br_;
|
return br_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TerminalStripItem::name
|
||||||
|
* @return usual name of this item
|
||||||
|
*/
|
||||||
|
QString TerminalStripItem::name() const {
|
||||||
|
return tr("plan de bornes");
|
||||||
|
}
|
||||||
|
@ -32,8 +32,12 @@ class TerminalStripItem : public QetGraphicsItem
|
|||||||
public:
|
public:
|
||||||
TerminalStripItem(QPointer<TerminalStrip> strip, QGraphicsItem *parent = nullptr);
|
TerminalStripItem(QPointer<TerminalStrip> strip, QGraphicsItem *parent = nullptr);
|
||||||
|
|
||||||
|
enum {Type = UserType + 1011};
|
||||||
|
int type() const override {return Type;}
|
||||||
|
|
||||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||||
QRectF boundingRect() const override;
|
QRectF boundingRect() const override;
|
||||||
|
QString name() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<TerminalStrip> m_strip;
|
QPointer<TerminalStrip> m_strip;
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "addterminalstripitemdialog.h"
|
#include "addterminalstripitemdialog.h"
|
||||||
#include "ui_addterminalstripitemdialog.h"
|
#include "ui_addterminalstripitemdialog.h"
|
||||||
|
|
||||||
|
#include "../../undocommand/addgraphicsobjectcommand.h"
|
||||||
#include "../terminalstrip.h"
|
#include "../terminalstrip.h"
|
||||||
#include "../GraphicsItem/terminalstripitem.h"
|
#include "../GraphicsItem/terminalstripitem.h"
|
||||||
#include "../../diagram.h"
|
#include "../../diagram.h"
|
||||||
@ -32,7 +33,9 @@ void AddTerminalStripItemDialog::openDialog(Diagram *diagram, QWidget *parent)
|
|||||||
{
|
{
|
||||||
auto item_ = new TerminalStripItem(strip_);
|
auto item_ = new TerminalStripItem(strip_);
|
||||||
diagram->addItem(item_);
|
diagram->addItem(item_);
|
||||||
item_->setPos(20, 20);
|
item_->setPos(50, 50);
|
||||||
|
|
||||||
|
diagram->project()->undoStack()->push(new AddGraphicsObjectCommand(item_, diagram, QPointF{50, 50}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -60,8 +63,8 @@ TerminalStrip *AddTerminalStripItemDialog::selectedTerminalStrip() const
|
|||||||
{
|
{
|
||||||
if (m_project)
|
if (m_project)
|
||||||
{
|
{
|
||||||
QUuid uuid_{ui->m_terminal_strip_cb->currentData().toUuid()};
|
const QUuid uuid_{ui->m_terminal_strip_cb->currentData().toUuid()};
|
||||||
for (const auto &strip_ : m_project->terminalStrip())
|
for (auto &&strip_ : m_project->terminalStrip())
|
||||||
{
|
{
|
||||||
if (strip_->uuid() == uuid_) {
|
if (strip_->uuid() == uuid_) {
|
||||||
return strip_;
|
return strip_;
|
||||||
@ -76,7 +79,7 @@ void AddTerminalStripItemDialog::fillComboBox()
|
|||||||
{
|
{
|
||||||
if (m_project)
|
if (m_project)
|
||||||
{
|
{
|
||||||
for (const auto strip_ : m_project->terminalStrip())
|
for (auto &&strip_ : m_project->terminalStrip())
|
||||||
{
|
{
|
||||||
const auto text{strip_->installation() + " " + strip_->location() + " " + strip_->name()};
|
const auto text{strip_->installation() + " " + strip_->location() + " " + strip_->name()};
|
||||||
ui->m_terminal_strip_cb->addItem(text, strip_->uuid());
|
ui->m_terminal_strip_cb->addItem(text, strip_->uuid());
|
||||||
|
@ -176,7 +176,8 @@ MoveElementsCommand::MoveElementsCommand(
|
|||||||
DiagramContent::ConductorsToMove |
|
DiagramContent::ConductorsToMove |
|
||||||
DiagramContent::Images |
|
DiagramContent::Images |
|
||||||
DiagramContent::Shapes |
|
DiagramContent::Shapes |
|
||||||
DiagramContent::ElementTextFields
|
DiagramContent::ElementTextFields |
|
||||||
|
DiagramContent::TerminalStrip
|
||||||
);
|
);
|
||||||
|
|
||||||
setText(
|
setText(
|
||||||
@ -236,13 +237,14 @@ void MoveElementsCommand::move(const QPointF &actual_movement)
|
|||||||
typedef DiagramContent dc;
|
typedef DiagramContent dc;
|
||||||
|
|
||||||
//Move every movable items, except conductor
|
//Move every movable items, except conductor
|
||||||
for (QGraphicsItem *qgi : content_to_move.items(dc::Elements
|
for (auto &&qgi : content_to_move.items(dc::Elements
|
||||||
| dc::TextFields
|
| dc::TextFields
|
||||||
| dc::Images
|
| dc::Images
|
||||||
| dc::Shapes
|
| dc::Shapes
|
||||||
| dc::TextGroup
|
| dc::TextGroup
|
||||||
| dc::ElementTextFields
|
| dc::ElementTextFields
|
||||||
| dc::Tables))
|
| dc::Tables
|
||||||
|
| dc::TerminalStrip))
|
||||||
{
|
{
|
||||||
//If curent item have parent, and parent item is in content_to_move
|
//If curent item have parent, and parent item is in content_to_move
|
||||||
//we don't apply movement to this item, because this item will be moved by is parent.
|
//we don't apply movement to this item, because this item will be moved by is parent.
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "qetgraphicsitem/independenttextitem.h"
|
#include "qetgraphicsitem/independenttextitem.h"
|
||||||
#include "qetgraphicsitem/qetshapeitem.h"
|
#include "qetgraphicsitem/qetshapeitem.h"
|
||||||
#include "qetgraphicsitem/terminal.h"
|
#include "qetgraphicsitem/terminal.h"
|
||||||
|
#include "TerminalStrip/GraphicsItem/terminalstripitem.h"
|
||||||
|
|
||||||
#include <QGraphicsItem>
|
#include <QGraphicsItem>
|
||||||
|
|
||||||
@ -54,7 +55,7 @@ DiagramContent::DiagramContent(Diagram *diagram, bool selected) :
|
|||||||
item_list = diagram->items();
|
item_list = diagram->items();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto item : item_list)
|
for (const auto &item : qAsConst(item_list))
|
||||||
{
|
{
|
||||||
switch (item->type())
|
switch (item->type())
|
||||||
{
|
{
|
||||||
@ -88,6 +89,7 @@ DiagramContent::DiagramContent(Diagram *diagram, bool selected) :
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QetGraphicsTableItem::Type: { m_tables << qgraphicsitem_cast<QetGraphicsTableItem *>(item); break;}
|
case QetGraphicsTableItem::Type: { m_tables << qgraphicsitem_cast<QetGraphicsTableItem *>(item); break;}
|
||||||
|
case TerminalStripItem::Type : {m_terminal_strip << qgraphicsitem_cast<TerminalStripItem *>(item); break;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,13 +196,14 @@ bool DiagramContent::hasDeletableItems() const
|
|||||||
{
|
{
|
||||||
for(QGraphicsItem *qgi : m_selected_items)
|
for(QGraphicsItem *qgi : m_selected_items)
|
||||||
{
|
{
|
||||||
if (qgi->type() == Element::Type ||
|
if (qgi->type() == Element::Type
|
||||||
qgi->type() == Conductor::Type ||
|
|| qgi->type() == Conductor::Type
|
||||||
qgi->type() == IndependentTextItem::Type ||
|
|| qgi->type() == IndependentTextItem::Type
|
||||||
qgi->type() == QetShapeItem::Type ||
|
|| qgi->type() == QetShapeItem::Type
|
||||||
qgi->type() == DiagramImageItem::Type ||
|
|| qgi->type() == DiagramImageItem::Type
|
||||||
qgi->type() == DynamicElementTextItem::Type ||
|
|| qgi->type() == DynamicElementTextItem::Type
|
||||||
qgi->type() == QetGraphicsTableItem::Type)
|
|| qgi->type() == QetGraphicsTableItem::Type
|
||||||
|
|| qgi->type() == TerminalStripItem::Type)
|
||||||
return true;
|
return true;
|
||||||
if(qgi->type() == QGraphicsItemGroup::Type)
|
if(qgi->type() == QGraphicsItemGroup::Type)
|
||||||
if(dynamic_cast<ElementTextItemGroup *>(qgi))
|
if(dynamic_cast<ElementTextItemGroup *>(qgi))
|
||||||
@ -240,6 +243,7 @@ void DiagramContent::clear()
|
|||||||
m_texts_groups.clear();
|
m_texts_groups.clear();
|
||||||
m_selected_items.clear();
|
m_selected_items.clear();
|
||||||
m_tables.clear();
|
m_tables.clear();
|
||||||
|
m_terminal_strip.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -378,7 +382,7 @@ QList<QGraphicsItem *> DiagramContent::items(int filter) const
|
|||||||
{
|
{
|
||||||
QList<QGraphicsItem *> items_list;
|
QList<QGraphicsItem *> items_list;
|
||||||
|
|
||||||
for(QGraphicsItem *qgi : conductors(filter)) items_list << qgi;
|
for(auto &&qgi : conductors(filter)) items_list << qgi;
|
||||||
|
|
||||||
if (filter & Elements) for(auto qgi : m_elements) items_list << qgi;
|
if (filter & Elements) for(auto qgi : m_elements) items_list << qgi;
|
||||||
if (filter & TextFields) for(auto qgi : m_text_fields) items_list << qgi;
|
if (filter & TextFields) for(auto qgi : m_text_fields) items_list << qgi;
|
||||||
@ -387,9 +391,10 @@ QList<QGraphicsItem *> DiagramContent::items(int filter) const
|
|||||||
if (filter & ElementTextFields) for(auto qgi : m_element_texts) items_list << qgi;
|
if (filter & ElementTextFields) for(auto qgi : m_element_texts) items_list << qgi;
|
||||||
if (filter & TextGroup) for(auto qgi : m_texts_groups) items_list << qgi;
|
if (filter & TextGroup) for(auto qgi : m_texts_groups) items_list << qgi;
|
||||||
if (filter & Tables) for(auto qgi : m_tables) items_list << qgi;
|
if (filter & Tables) for(auto qgi : m_tables) items_list << qgi;
|
||||||
|
if (filter & TerminalStrip) for(const auto qgi : qAsConst(m_terminal_strip)) items_list << qgi;
|
||||||
|
|
||||||
if (filter & SelectedOnly) {
|
if (filter & SelectedOnly) {
|
||||||
for(QGraphicsItem *qgi : items_list) {
|
for(const auto &qgi : qAsConst(items_list)) {
|
||||||
if (!qgi -> isSelected()) items_list.removeOne(qgi);
|
if (!qgi -> isSelected()) items_list.removeOne(qgi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -415,6 +420,7 @@ int DiagramContent::count(int filter) const
|
|||||||
if (filter & ElementTextFields) for(auto deti : m_element_texts) { if (deti -> isSelected()) ++ count; }
|
if (filter & ElementTextFields) for(auto deti : m_element_texts) { if (deti -> isSelected()) ++ count; }
|
||||||
if (filter & TextGroup) for(auto etig : m_texts_groups) { if (etig -> isSelected()) ++ count; }
|
if (filter & TextGroup) for(auto etig : m_texts_groups) { if (etig -> isSelected()) ++ count; }
|
||||||
if (filter & Tables) for(auto table : m_tables) { if (table -> isSelected()) ++ count; }
|
if (filter & Tables) for(auto table : m_tables) { if (table -> isSelected()) ++ count; }
|
||||||
|
if (filter & TerminalStrip) for(const auto &strip : qAsConst(m_terminal_strip)) {if (strip->isSelected()) ++ count;}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (filter & Elements) count += m_elements.count();
|
if (filter & Elements) count += m_elements.count();
|
||||||
@ -427,6 +433,7 @@ int DiagramContent::count(int filter) const
|
|||||||
if (filter & ElementTextFields) count += m_element_texts.count();
|
if (filter & ElementTextFields) count += m_element_texts.count();
|
||||||
if (filter & TextGroup) count += m_texts_groups.count();
|
if (filter & TextGroup) count += m_texts_groups.count();
|
||||||
if (filter & Tables) count += m_tables.count();
|
if (filter & Tables) count += m_tables.count();
|
||||||
|
if (filter & TerminalStrip) count += m_terminal_strip.count();
|
||||||
}
|
}
|
||||||
return(count);
|
return(count);
|
||||||
}
|
}
|
||||||
@ -447,7 +454,7 @@ QString DiagramContent::sentence(int filter) const
|
|||||||
int shapes_count = (filter & Shapes) ? m_shapes.count() : 0;
|
int shapes_count = (filter & Shapes) ? m_shapes.count() : 0;
|
||||||
int elmt_text_count = (filter & ElementTextFields) ? m_element_texts.count() : 0;
|
int elmt_text_count = (filter & ElementTextFields) ? m_element_texts.count() : 0;
|
||||||
int tables_count = (filter & Tables) ? m_tables.count() : 0;
|
int tables_count = (filter & Tables) ? m_tables.count() : 0;
|
||||||
|
const int strip_count = (filter & TerminalStrip) ? m_terminal_strip.count() : 0;
|
||||||
return(
|
return(
|
||||||
QET::ElementsAndConductorsSentence(
|
QET::ElementsAndConductorsSentence(
|
||||||
elements_count,
|
elements_count,
|
||||||
@ -456,7 +463,8 @@ QString DiagramContent::sentence(int filter) const
|
|||||||
images_count,
|
images_count,
|
||||||
shapes_count,
|
shapes_count,
|
||||||
elmt_text_count,
|
elmt_text_count,
|
||||||
tables_count
|
tables_count,
|
||||||
|
strip_count
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ class ElementTextItemGroup;
|
|||||||
class Diagram;
|
class Diagram;
|
||||||
class DiagramTextItem;
|
class DiagramTextItem;
|
||||||
class QetGraphicsTableItem;
|
class QetGraphicsTableItem;
|
||||||
|
class TerminalStripItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This class provides a container that makes the transmission of diagram content
|
This class provides a container that makes the transmission of diagram content
|
||||||
@ -62,8 +63,9 @@ class DiagramContent
|
|||||||
Shapes = 128,
|
Shapes = 128,
|
||||||
TextGroup = 256,
|
TextGroup = 256,
|
||||||
Tables = 512,
|
Tables = 512,
|
||||||
All = 1023,
|
TerminalStrip = 1024,
|
||||||
SelectedOnly = 1024
|
All = 2047,
|
||||||
|
SelectedOnly = 2048
|
||||||
};
|
};
|
||||||
|
|
||||||
QList<Element *> m_elements;
|
QList<Element *> m_elements;
|
||||||
@ -78,6 +80,7 @@ class DiagramContent
|
|||||||
QSet<ElementTextItemGroup *> m_texts_groups;
|
QSet<ElementTextItemGroup *> m_texts_groups;
|
||||||
QList<QGraphicsItem *> m_selected_items;
|
QList<QGraphicsItem *> m_selected_items;
|
||||||
QVector<QetGraphicsTableItem *> m_tables;
|
QVector<QetGraphicsTableItem *> m_tables;
|
||||||
|
QVector<TerminalStripItem *> m_terminal_strip;
|
||||||
|
|
||||||
|
|
||||||
QList<DiagramTextItem *> selectedTexts() const;
|
QList<DiagramTextItem *> selectedTexts() const;
|
||||||
|
@ -171,7 +171,7 @@ void ElementsMover::endMovement()
|
|||||||
//There is only one element moved, and project authorize auto conductor,
|
//There is only one element moved, and project authorize auto conductor,
|
||||||
//we try auto connection of conductor;
|
//we try auto connection of conductor;
|
||||||
typedef DiagramContent dc;
|
typedef DiagramContent dc;
|
||||||
if (m_moved_content.items(dc::TextFields | dc::Images | dc::Shapes).size() == 0 &&
|
if (m_moved_content.items(dc::TextFields | dc::Images | dc::Shapes | dc::TerminalStrip).size() == 0 &&
|
||||||
m_moved_content.items(dc::Elements).size() == 1 &&
|
m_moved_content.items(dc::Elements).size() == 1 &&
|
||||||
diagram_ -> project() -> autoConductor())
|
diagram_ -> project() -> autoConductor())
|
||||||
{
|
{
|
||||||
|
@ -266,7 +266,8 @@ QString QET::ElementsAndConductorsSentence(
|
|||||||
int images_count,
|
int images_count,
|
||||||
int shapes_count,
|
int shapes_count,
|
||||||
int element_text_count,
|
int element_text_count,
|
||||||
int tables_count)
|
int tables_count,
|
||||||
|
int terminal_strip_count)
|
||||||
{
|
{
|
||||||
QString text;
|
QString text;
|
||||||
if (elements_count) {
|
if (elements_count) {
|
||||||
@ -329,6 +330,14 @@ QString QET::ElementsAndConductorsSentence(
|
|||||||
tables_count);
|
tables_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (terminal_strip_count) {
|
||||||
|
if (!text.isEmpty()) text += ", ";
|
||||||
|
text += QObject::tr(
|
||||||
|
"%n plan de bornes",
|
||||||
|
"part of a sentence listing the content of a diagram",
|
||||||
|
terminal_strip_count);
|
||||||
|
}
|
||||||
|
|
||||||
return(text);
|
return(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +162,14 @@ namespace QET {
|
|||||||
bool orthogonalProjection(const QPointF &, const QLineF &, QPointF * = nullptr);
|
bool orthogonalProjection(const QPointF &, const QLineF &, QPointF * = nullptr);
|
||||||
bool attributeIsAnInteger(const QDomElement &, const QString& , int * = nullptr);
|
bool attributeIsAnInteger(const QDomElement &, const QString& , int * = nullptr);
|
||||||
bool attributeIsAReal(const QDomElement &, const QString& , qreal * = nullptr);
|
bool attributeIsAReal(const QDomElement &, const QString& , qreal * = nullptr);
|
||||||
QString ElementsAndConductorsSentence(int elements=0, int conductors=0, int indi_texts=0, int images=0, int shapes=0, int element_text=0, int tables_count=0);
|
QString ElementsAndConductorsSentence(int elements=0,
|
||||||
|
int conductors=0,
|
||||||
|
int indi_texts=0,
|
||||||
|
int images=0,
|
||||||
|
int shapes=0,
|
||||||
|
int element_text=0,
|
||||||
|
int tables_count=0,
|
||||||
|
int terminal_strip_count=0);
|
||||||
QList<QDomElement> findInDomElement(const QDomElement &, const QString &);
|
QList<QDomElement> findInDomElement(const QDomElement &, const QString &);
|
||||||
QList<QDomElement> findInDomElement(const QDomElement &, const QString &, const QString &);
|
QList<QDomElement> findInDomElement(const QDomElement &, const QString &, const QString &);
|
||||||
QList<QChar> forbiddenCharacters();
|
QList<QChar> forbiddenCharacters();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user