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
|
||||
crossRefItem + 1009
|
||||
DynamiqueElementTextItem + 1010
|
||||
TerminalStripItem +1011
|
||||
ElementPrimitiveDecorator + 2200
|
||||
|
||||
###ELEMENT EDITOR###
|
||||
|
@ -47,3 +47,11 @@ QRectF TerminalStripItem::boundingRect() const
|
||||
|
||||
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:
|
||||
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;
|
||||
QRectF boundingRect() const override;
|
||||
QString name() const override;
|
||||
|
||||
private:
|
||||
QPointer<TerminalStrip> m_strip;
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "addterminalstripitemdialog.h"
|
||||
#include "ui_addterminalstripitemdialog.h"
|
||||
|
||||
#include "../../undocommand/addgraphicsobjectcommand.h"
|
||||
#include "../terminalstrip.h"
|
||||
#include "../GraphicsItem/terminalstripitem.h"
|
||||
#include "../../diagram.h"
|
||||
@ -32,7 +33,9 @@ void AddTerminalStripItemDialog::openDialog(Diagram *diagram, QWidget *parent)
|
||||
{
|
||||
auto item_ = new TerminalStripItem(strip_);
|
||||
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)
|
||||
{
|
||||
QUuid uuid_{ui->m_terminal_strip_cb->currentData().toUuid()};
|
||||
for (const auto &strip_ : m_project->terminalStrip())
|
||||
const QUuid uuid_{ui->m_terminal_strip_cb->currentData().toUuid()};
|
||||
for (auto &&strip_ : m_project->terminalStrip())
|
||||
{
|
||||
if (strip_->uuid() == uuid_) {
|
||||
return strip_;
|
||||
@ -76,7 +79,7 @@ void AddTerminalStripItemDialog::fillComboBox()
|
||||
{
|
||||
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()};
|
||||
ui->m_terminal_strip_cb->addItem(text, strip_->uuid());
|
||||
|
@ -176,7 +176,8 @@ MoveElementsCommand::MoveElementsCommand(
|
||||
DiagramContent::ConductorsToMove |
|
||||
DiagramContent::Images |
|
||||
DiagramContent::Shapes |
|
||||
DiagramContent::ElementTextFields
|
||||
DiagramContent::ElementTextFields |
|
||||
DiagramContent::TerminalStrip
|
||||
);
|
||||
|
||||
setText(
|
||||
@ -236,13 +237,14 @@ void MoveElementsCommand::move(const QPointF &actual_movement)
|
||||
typedef DiagramContent dc;
|
||||
|
||||
//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::Images
|
||||
| dc::Shapes
|
||||
| dc::TextGroup
|
||||
| dc::ElementTextFields
|
||||
| dc::Tables))
|
||||
| dc::Tables
|
||||
| dc::TerminalStrip))
|
||||
{
|
||||
//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.
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "qetgraphicsitem/independenttextitem.h"
|
||||
#include "qetgraphicsitem/qetshapeitem.h"
|
||||
#include "qetgraphicsitem/terminal.h"
|
||||
#include "TerminalStrip/GraphicsItem/terminalstripitem.h"
|
||||
|
||||
#include <QGraphicsItem>
|
||||
|
||||
@ -54,7 +55,7 @@ DiagramContent::DiagramContent(Diagram *diagram, bool selected) :
|
||||
item_list = diagram->items();
|
||||
}
|
||||
|
||||
for (auto item : item_list)
|
||||
for (const auto &item : qAsConst(item_list))
|
||||
{
|
||||
switch (item->type())
|
||||
{
|
||||
@ -88,6 +89,7 @@ DiagramContent::DiagramContent(Diagram *diagram, bool selected) :
|
||||
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)
|
||||
{
|
||||
if (qgi->type() == Element::Type ||
|
||||
qgi->type() == Conductor::Type ||
|
||||
qgi->type() == IndependentTextItem::Type ||
|
||||
qgi->type() == QetShapeItem::Type ||
|
||||
qgi->type() == DiagramImageItem::Type ||
|
||||
qgi->type() == DynamicElementTextItem::Type ||
|
||||
qgi->type() == QetGraphicsTableItem::Type)
|
||||
if (qgi->type() == Element::Type
|
||||
|| qgi->type() == Conductor::Type
|
||||
|| qgi->type() == IndependentTextItem::Type
|
||||
|| qgi->type() == QetShapeItem::Type
|
||||
|| qgi->type() == DiagramImageItem::Type
|
||||
|| qgi->type() == DynamicElementTextItem::Type
|
||||
|| qgi->type() == QetGraphicsTableItem::Type
|
||||
|| qgi->type() == TerminalStripItem::Type)
|
||||
return true;
|
||||
if(qgi->type() == QGraphicsItemGroup::Type)
|
||||
if(dynamic_cast<ElementTextItemGroup *>(qgi))
|
||||
@ -240,6 +243,7 @@ void DiagramContent::clear()
|
||||
m_texts_groups.clear();
|
||||
m_selected_items.clear();
|
||||
m_tables.clear();
|
||||
m_terminal_strip.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -378,7 +382,7 @@ QList<QGraphicsItem *> DiagramContent::items(int filter) const
|
||||
{
|
||||
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 & 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 & TextGroup) for(auto qgi : m_texts_groups) 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) {
|
||||
for(QGraphicsItem *qgi : items_list) {
|
||||
for(const auto &qgi : qAsConst(items_list)) {
|
||||
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 & 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 & TerminalStrip) for(const auto &strip : qAsConst(m_terminal_strip)) {if (strip->isSelected()) ++ count;}
|
||||
}
|
||||
else {
|
||||
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 & TextGroup) count += m_texts_groups.count();
|
||||
if (filter & Tables) count += m_tables.count();
|
||||
if (filter & TerminalStrip) count += m_terminal_strip.count();
|
||||
}
|
||||
return(count);
|
||||
}
|
||||
@ -447,7 +454,7 @@ QString DiagramContent::sentence(int filter) const
|
||||
int shapes_count = (filter & Shapes) ? m_shapes.count() : 0;
|
||||
int elmt_text_count = (filter & ElementTextFields) ? m_element_texts.count() : 0;
|
||||
int tables_count = (filter & Tables) ? m_tables.count() : 0;
|
||||
|
||||
const int strip_count = (filter & TerminalStrip) ? m_terminal_strip.count() : 0;
|
||||
return(
|
||||
QET::ElementsAndConductorsSentence(
|
||||
elements_count,
|
||||
@ -456,7 +463,8 @@ QString DiagramContent::sentence(int filter) const
|
||||
images_count,
|
||||
shapes_count,
|
||||
elmt_text_count,
|
||||
tables_count
|
||||
tables_count,
|
||||
strip_count
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ class ElementTextItemGroup;
|
||||
class Diagram;
|
||||
class DiagramTextItem;
|
||||
class QetGraphicsTableItem;
|
||||
class TerminalStripItem;
|
||||
|
||||
/**
|
||||
This class provides a container that makes the transmission of diagram content
|
||||
@ -62,8 +63,9 @@ class DiagramContent
|
||||
Shapes = 128,
|
||||
TextGroup = 256,
|
||||
Tables = 512,
|
||||
All = 1023,
|
||||
SelectedOnly = 1024
|
||||
TerminalStrip = 1024,
|
||||
All = 2047,
|
||||
SelectedOnly = 2048
|
||||
};
|
||||
|
||||
QList<Element *> m_elements;
|
||||
@ -78,6 +80,7 @@ class DiagramContent
|
||||
QSet<ElementTextItemGroup *> m_texts_groups;
|
||||
QList<QGraphicsItem *> m_selected_items;
|
||||
QVector<QetGraphicsTableItem *> m_tables;
|
||||
QVector<TerminalStripItem *> m_terminal_strip;
|
||||
|
||||
|
||||
QList<DiagramTextItem *> selectedTexts() const;
|
||||
|
@ -171,7 +171,7 @@ void ElementsMover::endMovement()
|
||||
//There is only one element moved, and project authorize auto conductor,
|
||||
//we try auto connection of conductor;
|
||||
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 &&
|
||||
diagram_ -> project() -> autoConductor())
|
||||
{
|
||||
|
@ -266,7 +266,8 @@ QString QET::ElementsAndConductorsSentence(
|
||||
int images_count,
|
||||
int shapes_count,
|
||||
int element_text_count,
|
||||
int tables_count)
|
||||
int tables_count,
|
||||
int terminal_strip_count)
|
||||
{
|
||||
QString text;
|
||||
if (elements_count) {
|
||||
@ -329,6 +330,14 @@ QString QET::ElementsAndConductorsSentence(
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -162,7 +162,14 @@ namespace QET {
|
||||
bool orthogonalProjection(const QPointF &, const QLineF &, QPointF * = nullptr);
|
||||
bool attributeIsAnInteger(const QDomElement &, const QString& , int * = 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 &, const QString &);
|
||||
QList<QChar> forbiddenCharacters();
|
||||
|
Loading…
x
Reference in New Issue
Block a user