mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 12:40:35 +01:00
Level of real terminal can be edited
The level of each real terminal who compose a physical terminal can be edited. Several real terminal can be edited in one shot.
This commit is contained in:
43
sources/TerminalStrip/UndoCommand/changeterminallevel.cpp
Normal file
43
sources/TerminalStrip/UndoCommand/changeterminallevel.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
Copyright 2006-2021 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
QElectroTech is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "changeterminallevel.h"
|
||||
|
||||
ChangeTerminalLevel::ChangeTerminalLevel(TerminalStrip *strip,
|
||||
const RealTerminalData &real_terminal,
|
||||
int level,
|
||||
QUndoCommand *parent) :
|
||||
QUndoCommand(parent),
|
||||
m_strip(strip),
|
||||
m_real_terminal(real_terminal),
|
||||
m_new_level(level),
|
||||
m_old_level(real_terminal.level_)
|
||||
{}
|
||||
|
||||
void ChangeTerminalLevel::undo()
|
||||
{
|
||||
if (m_strip) {
|
||||
m_strip->setLevel(m_real_terminal, m_old_level);
|
||||
}
|
||||
}
|
||||
|
||||
void ChangeTerminalLevel::redo()
|
||||
{
|
||||
if (m_strip) {
|
||||
m_strip->setLevel(m_real_terminal, m_new_level);
|
||||
}
|
||||
}
|
||||
42
sources/TerminalStrip/UndoCommand/changeterminallevel.h
Normal file
42
sources/TerminalStrip/UndoCommand/changeterminallevel.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
Copyright 2006-2021 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
QElectroTech is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
QElectroTech is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef CHANGETERMINALLEVEL_H
|
||||
#define CHANGETERMINALLEVEL_H
|
||||
|
||||
#include <QUndoCommand>
|
||||
#include <QPointer>
|
||||
#include "../terminalstrip.h"
|
||||
|
||||
class ChangeTerminalLevel : public QUndoCommand
|
||||
{
|
||||
public:
|
||||
ChangeTerminalLevel(TerminalStrip *strip,
|
||||
const RealTerminalData &real_terminal,
|
||||
int level,
|
||||
QUndoCommand *parent = nullptr);
|
||||
|
||||
void undo() override;
|
||||
void redo() override;
|
||||
|
||||
private:
|
||||
QPointer<TerminalStrip> m_strip;
|
||||
RealTerminalData m_real_terminal;
|
||||
int m_new_level, m_old_level;
|
||||
};
|
||||
|
||||
#endif // CHANGETERMINALLEVEL_H
|
||||
@@ -289,6 +289,23 @@ class PhysicalTerminal
|
||||
return m_real_terminal.indexOf(terminal);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief setLevelOf
|
||||
* Change the level of \p terminal
|
||||
* @param terminal
|
||||
* @param level
|
||||
*/
|
||||
bool setLevelOf(shared_real_terminal terminal, int level)
|
||||
{
|
||||
const int i = m_real_terminal.indexOf(terminal);
|
||||
if (i >= 0)
|
||||
{
|
||||
m_real_terminal.swapItemsAt(i, std::min(level, m_real_terminal.size()-1));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief terminals
|
||||
* @return A vector of real terminal who compose this physical terminal
|
||||
@@ -570,14 +587,14 @@ QVector<PhysicalTerminalData> TerminalStrip::physicalTerminalData() const
|
||||
* @param sorted_vector
|
||||
* @return true is successfully sorted.
|
||||
*/
|
||||
bool TerminalStrip::setOrderTo(QVector<PhysicalTerminalData> sorted_vector)
|
||||
bool TerminalStrip::setOrderTo(const QVector<PhysicalTerminalData> &sorted_vector)
|
||||
{
|
||||
if (sorted_vector.size() != m_physical_terminals.size()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
QVector<QSharedPointer<PhysicalTerminal>> new_order;
|
||||
for (auto ptd : sorted_vector)
|
||||
for (const auto &ptd : sorted_vector)
|
||||
{
|
||||
const auto physical_t = physicalTerminalForUuid(ptd.uuid_);
|
||||
if (physical_t.isNull()) {
|
||||
@@ -677,6 +694,32 @@ void TerminalStrip::unGroupTerminals(const QVector<RealTerminalData> &terminals_
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStrip::setLevel
|
||||
* @param real_terminal_data
|
||||
* @param level
|
||||
* @return
|
||||
*/
|
||||
bool TerminalStrip::setLevel(const RealTerminalData &real_terminal_data, int level)
|
||||
{
|
||||
auto real_terminal = realTerminalForUuid(real_terminal_data.real_terminal_uuid);
|
||||
if (real_terminal)
|
||||
{
|
||||
auto physical_terminal = physicalTerminal(real_terminal);
|
||||
if (physical_terminal)
|
||||
{
|
||||
if (physical_terminal->terminals().size() > 1 &&
|
||||
physical_terminal->setLevelOf(real_terminal, level))
|
||||
{
|
||||
emit orderChanged();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStrip::terminalElement
|
||||
* @return A vector of all terminal element owned by this strip
|
||||
|
||||
@@ -117,9 +117,10 @@ class TerminalStrip : public QObject
|
||||
PhysicalTerminalData physicalTerminalData(int index) const;
|
||||
PhysicalTerminalData physicalTerminalData (const RealTerminalData &real_data) const;
|
||||
QVector<PhysicalTerminalData> physicalTerminalData() const;
|
||||
bool setOrderTo(QVector<PhysicalTerminalData> sorted_vector);
|
||||
bool setOrderTo(const QVector<PhysicalTerminalData> &sorted_vector);
|
||||
bool groupTerminals(const PhysicalTerminalData &receiver_terminal, const QVector<RealTerminalData> &added_terminals);
|
||||
void unGroupTerminals(const QVector<RealTerminalData> &terminals_to_ungroup);
|
||||
bool setLevel(const RealTerminalData &real_terminal_data, int level);
|
||||
|
||||
QVector<QPointer<Element>> terminalElement() const;
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "../diagram.h"
|
||||
#include "../UndoCommand/sortterminalstripcommand.h"
|
||||
#include "../UndoCommand/groupterminalscommand.h"
|
||||
#include "../UndoCommand/changeterminallevel.h"
|
||||
|
||||
#include <QTreeWidgetItem>
|
||||
|
||||
@@ -352,10 +353,12 @@ void TerminalStripEditor::selectionChanged()
|
||||
|
||||
const auto index_list = ui->m_table_widget->selectionModel()->selectedIndexes();
|
||||
const auto terminal_vector = m_model->physicalTerminalDataForIndex(index_list);
|
||||
const auto real_terminal_vector = m_model->realTerminalDataForIndex(index_list);
|
||||
|
||||
//Enable/disable group button
|
||||
ui->m_group_terminals_pb->setEnabled(terminal_vector.size() > 1 ? true : false);
|
||||
|
||||
|
||||
//Enable/disable ungroup button
|
||||
auto it_= std::find_if(terminal_vector.constBegin(), terminal_vector.constEnd(), [](auto &data)
|
||||
{
|
||||
if (data.real_terminals_vector.size() >= 2) {
|
||||
@@ -500,17 +503,22 @@ void TerminalStripEditor::on_m_dialog_button_box_clicked(QAbstractButton *button
|
||||
|
||||
if (m_model)
|
||||
{
|
||||
for (auto modified_data : m_model->modifiedRealTerminalData())
|
||||
for (const auto &data_ : m_model->modifiedRealTerminalData())
|
||||
{
|
||||
auto element = modified_data.element_;
|
||||
auto original_ = data_.first;
|
||||
auto edited_ = data_.second;
|
||||
auto element = original_.element_;
|
||||
if (element) {
|
||||
auto current_data = element->elementData();
|
||||
current_data.setTerminalType(modified_data.type_);
|
||||
current_data.setTerminalFunction(modified_data.function_);
|
||||
current_data.setTerminalLED(modified_data.led_);
|
||||
current_data.m_informations.addValue(QStringLiteral("label"), modified_data.label_);
|
||||
current_data.setTerminalType(edited_.type_);
|
||||
current_data.setTerminalFunction(edited_.function_);
|
||||
current_data.setTerminalLED(edited_.led_);
|
||||
current_data.m_informations.addValue(QStringLiteral("label"), edited_.label_);
|
||||
|
||||
m_project->undoStack()->push(new ChangeElementDataCommand(element, current_data));
|
||||
if (element->elementData() != current_data)
|
||||
m_project->undoStack()->push(new ChangeElementDataCommand(element, current_data));
|
||||
if (edited_.level_)
|
||||
m_project->undoStack()->push(new ChangeTerminalLevel(m_current_strip, original_, edited_.level_));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -560,3 +568,24 @@ void TerminalStripEditor::on_m_ungroup_pb_clicked()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStripEditor::on_m_level_sb_valueChanged
|
||||
* @param arg1
|
||||
*/
|
||||
void TerminalStripEditor::on_m_level_sb_valueChanged(int arg1)
|
||||
{
|
||||
if (m_model)
|
||||
{
|
||||
const auto index_list = ui->m_table_widget->selectionModel()->selectedIndexes();
|
||||
|
||||
for (auto index : index_list)
|
||||
{
|
||||
auto level_index = m_model->index(index.row(), 1, index.parent());
|
||||
if (level_index.isValid())
|
||||
{
|
||||
m_model->setData(level_index, arg1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ class TerminalStripEditor : public QDialog
|
||||
void on_m_auto_ordering_pb_clicked();
|
||||
void on_m_group_terminals_pb_clicked();
|
||||
void on_m_ungroup_pb_clicked();
|
||||
void on_m_level_sb_valueChanged(int arg1);
|
||||
|
||||
private:
|
||||
Ui::TerminalStripEditor *ui;
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1260</width>
|
||||
<height>579</height>
|
||||
<width>1289</width>
|
||||
<height>645</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -179,6 +179,13 @@
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Étage :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@@ -191,24 +198,27 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="m_auto_ordering_pb">
|
||||
<item row="3" column="1">
|
||||
<widget class="QSpinBox" name="m_level_sb"/>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="m_ungroup_pb">
|
||||
<property name="text">
|
||||
<string>Position automatique</string>
|
||||
<string>Degrouper les bornes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="m_group_terminals_pb">
|
||||
<property name="text">
|
||||
<string>Grouper les bornes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QPushButton" name="m_ungroup_pb">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="m_auto_ordering_pb">
|
||||
<property name="text">
|
||||
<string>Degrouper les bornes</string>
|
||||
<string>Position automatique</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -289,13 +299,21 @@
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>m_add_terminal_strip_pb</tabstop>
|
||||
<tabstop>m_remove_terminal_strip_pb</tabstop>
|
||||
<tabstop>m_reload_pb</tabstop>
|
||||
<tabstop>m_auto_ordering_pb</tabstop>
|
||||
<tabstop>m_group_terminals_pb</tabstop>
|
||||
<tabstop>m_ungroup_pb</tabstop>
|
||||
<tabstop>m_level_sb</tabstop>
|
||||
<tabstop>m_terminal_strip_tw</tabstop>
|
||||
<tabstop>m_table_widget</tabstop>
|
||||
<tabstop>m_description_te</tabstop>
|
||||
<tabstop>m_comment_le</tabstop>
|
||||
<tabstop>m_name_le</tabstop>
|
||||
<tabstop>m_tab_widget</tabstop>
|
||||
<tabstop>m_installation_le</tabstop>
|
||||
<tabstop>m_location_le</tabstop>
|
||||
<tabstop>m_name_le</tabstop>
|
||||
<tabstop>m_comment_le</tabstop>
|
||||
<tabstop>m_description_te</tabstop>
|
||||
<tabstop>m_table_widget</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="../../../qelectrotech.qrc"/>
|
||||
|
||||
@@ -52,7 +52,7 @@ TerminalStripModel::TerminalStripModel(TerminalStrip *terminal_strip, QObject *p
|
||||
QAbstractTableModel(parent),
|
||||
m_terminal_strip(terminal_strip)
|
||||
{
|
||||
fillRealTerminalData();
|
||||
fillPhysicalTerminalData();
|
||||
}
|
||||
|
||||
int TerminalStripModel::rowCount(const QModelIndex &parent) const
|
||||
@@ -64,7 +64,7 @@ int TerminalStripModel::rowCount(const QModelIndex &parent) const
|
||||
}
|
||||
|
||||
auto count = 0;
|
||||
for (const auto &ptd : m_physical_terminal_data) {
|
||||
for (const auto &ptd : m_edited_terminal_data) {
|
||||
count += ptd.real_terminals_vector.size();
|
||||
}
|
||||
|
||||
@@ -133,7 +133,14 @@ bool TerminalStripModel::setData(const QModelIndex &index, const QVariant &value
|
||||
int modified_cell = -1;
|
||||
auto column_ = index.column();
|
||||
|
||||
if (column_ == LED_CELL &&
|
||||
if (column_ == LEVEL_CELL &&
|
||||
role == Qt::EditRole)
|
||||
{
|
||||
rtd.level_ = value.toInt();
|
||||
modified_ = true;
|
||||
modified_cell = LEVEL_CELL;
|
||||
}
|
||||
else if (column_ == LED_CELL &&
|
||||
role == Qt::CheckStateRole)
|
||||
{
|
||||
rtd.led_ = value.toBool();
|
||||
@@ -180,6 +187,7 @@ bool TerminalStripModel::setData(const QModelIndex &index, const QVariant &value
|
||||
vector_.replace(modified_cell, true);
|
||||
m_modified_cell.insert(rtd.element_, vector_);
|
||||
}
|
||||
emit dataChanged(index, index);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -226,18 +234,25 @@ Qt::ItemFlags TerminalStripModel::flags(const QModelIndex &index) const
|
||||
|
||||
/**
|
||||
* @brief TerminalStripModel::modifiedRealTerminalData
|
||||
* @return the modified real terminal data
|
||||
* @return a vector of QPair of modified terminal.
|
||||
* the first value of the QPair is the original data, the second value is the edited data
|
||||
*/
|
||||
QVector<RealTerminalData> TerminalStripModel::modifiedRealTerminalData() const
|
||||
QVector<QPair<RealTerminalData, RealTerminalData>> TerminalStripModel::modifiedRealTerminalData() const
|
||||
{
|
||||
QVector<RealTerminalData> returned_vector;
|
||||
QVector<QPair<RealTerminalData, RealTerminalData>> returned_vector;
|
||||
|
||||
const auto modified_real_terminal = m_modified_cell.keys();
|
||||
|
||||
for (const auto &ptd : m_physical_terminal_data) {
|
||||
for (const auto &rtd : ptd.real_terminals_vector) {
|
||||
if (modified_real_terminal.contains(rtd.element_)) {
|
||||
returned_vector.append(rtd);
|
||||
for (auto i = 0 ; i<m_edited_terminal_data.size() ; ++i)
|
||||
{
|
||||
auto ptd_ = m_edited_terminal_data.at(i);
|
||||
for (auto j = 0 ; j < ptd_.real_terminals_vector.size() ; ++j)
|
||||
{
|
||||
auto rtd_ = ptd_.real_terminals_vector.at(j);
|
||||
if (modified_real_terminal.contains(rtd_.element_))
|
||||
{
|
||||
returned_vector.append(qMakePair(m_original_terminal_data.at(i).real_terminals_vector.at(j),
|
||||
m_edited_terminal_data.at(i).real_terminals_vector.at(j)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -329,13 +344,14 @@ QVector<RealTerminalData> TerminalStripModel::realTerminalDataForIndex(QModelInd
|
||||
return vector_;
|
||||
}
|
||||
|
||||
void TerminalStripModel::fillRealTerminalData()
|
||||
void TerminalStripModel::fillPhysicalTerminalData()
|
||||
{
|
||||
//Get all physical terminal
|
||||
if (m_terminal_strip) {
|
||||
for (auto i=0 ; i < m_terminal_strip->physicalTerminalCount() ; ++i) {
|
||||
m_physical_terminal_data.append(m_terminal_strip->physicalTerminalData(i));
|
||||
m_original_terminal_data.append(m_terminal_strip->physicalTerminalData(i));
|
||||
}
|
||||
m_edited_terminal_data = m_original_terminal_data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,7 +363,7 @@ RealTerminalData TerminalStripModel::dataAtRow(int row) const
|
||||
else
|
||||
{
|
||||
auto current_row = 0;
|
||||
for (const auto &physical_data : m_physical_terminal_data)
|
||||
for (const auto &physical_data : m_edited_terminal_data)
|
||||
{
|
||||
for (const auto &real_data : physical_data.real_terminals_vector)
|
||||
{
|
||||
@@ -379,15 +395,15 @@ void TerminalStripModel::replaceDataAtRow(RealTerminalData data, int row)
|
||||
auto current_row = 0;
|
||||
auto current_physical = 0;
|
||||
|
||||
for (const auto &physical_data : qAsConst(m_physical_terminal_data))
|
||||
for (const auto &physical_data : qAsConst(m_edited_terminal_data))
|
||||
{
|
||||
auto current_real = 0;
|
||||
for (int i=0 ; i<physical_data.real_terminals_vector.count() ; ++i)
|
||||
{
|
||||
if (current_row == row) {
|
||||
auto physical_data = m_physical_terminal_data.at(current_physical);
|
||||
auto physical_data = m_edited_terminal_data.at(current_physical);
|
||||
physical_data.real_terminals_vector.replace(current_real, data);
|
||||
m_physical_terminal_data.replace(current_physical, physical_data);
|
||||
m_edited_terminal_data.replace(current_physical, physical_data);
|
||||
return;
|
||||
} else {
|
||||
++current_real;
|
||||
@@ -410,7 +426,7 @@ void TerminalStripModel::replaceDataAtRow(RealTerminalData data, int row)
|
||||
*/
|
||||
PhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) const
|
||||
{
|
||||
if (m_physical_terminal_data.isEmpty()) {
|
||||
if (m_edited_terminal_data.isEmpty()) {
|
||||
return PhysicalTerminalData();
|
||||
}
|
||||
|
||||
@@ -418,7 +434,7 @@ PhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) const
|
||||
int current_phy = -1;
|
||||
bool match_ = false;
|
||||
|
||||
for (const auto &ptd_ : qAsConst(m_physical_terminal_data))
|
||||
for (const auto &ptd_ : qAsConst(m_edited_terminal_data))
|
||||
{
|
||||
current_checked_index += ptd_.real_terminals_vector.size();
|
||||
++current_phy;
|
||||
@@ -430,7 +446,7 @@ PhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) const
|
||||
}
|
||||
|
||||
if (match_) {
|
||||
return m_physical_terminal_data.at(current_phy);
|
||||
return m_edited_terminal_data.at(current_phy);
|
||||
} else {
|
||||
return PhysicalTerminalData();
|
||||
}
|
||||
@@ -443,13 +459,13 @@ PhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) const
|
||||
*/
|
||||
RealTerminalData TerminalStripModel::realDataAtIndex(int index) const
|
||||
{
|
||||
if (m_physical_terminal_data.isEmpty()) {
|
||||
if (m_edited_terminal_data.isEmpty()) {
|
||||
return RealTerminalData();
|
||||
}
|
||||
|
||||
int current_checked_index = -1;
|
||||
|
||||
for (const auto & ptd_ : qAsConst(m_physical_terminal_data))
|
||||
for (const auto & ptd_ : qAsConst(m_edited_terminal_data))
|
||||
{
|
||||
for (const auto & rtd_ : qAsConst(ptd_.real_terminals_vector)) {
|
||||
++current_checked_index;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <QObject>
|
||||
#include <QPointer>
|
||||
#include <QStyledItemDelegate>
|
||||
#include <QPair>
|
||||
|
||||
#include "../terminalstrip.h"
|
||||
|
||||
@@ -40,14 +41,14 @@ class TerminalStripModel : public QAbstractTableModel
|
||||
virtual QVariant headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
||||
virtual Qt::ItemFlags flags (const QModelIndex &index) const override;
|
||||
|
||||
QVector<RealTerminalData> modifiedRealTerminalData() const;
|
||||
QVector<QPair<RealTerminalData, RealTerminalData>> modifiedRealTerminalData() const;
|
||||
|
||||
bool isXrefCell(const QModelIndex &index, Element **element = nullptr);
|
||||
QVector<PhysicalTerminalData> physicalTerminalDataForIndex(QModelIndexList index_list) const;
|
||||
QVector<RealTerminalData> realTerminalDataForIndex(QModelIndexList index_list) const;
|
||||
|
||||
private:
|
||||
void fillRealTerminalData();
|
||||
void fillPhysicalTerminalData();
|
||||
RealTerminalData dataAtRow(int row) const;
|
||||
void replaceDataAtRow(RealTerminalData data, int row);
|
||||
PhysicalTerminalData physicalDataAtIndex(int index) const;
|
||||
@@ -55,7 +56,7 @@ class TerminalStripModel : public QAbstractTableModel
|
||||
|
||||
private:
|
||||
QPointer<TerminalStrip> m_terminal_strip;
|
||||
QVector<PhysicalTerminalData> m_physical_terminal_data;
|
||||
QVector<PhysicalTerminalData> m_edited_terminal_data, m_original_terminal_data;
|
||||
QHash<Element *, QVector<bool>> m_modified_cell;
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
#include "changeelementdatacommand.h"
|
||||
#include "../qetgraphicsitem/element.h"
|
||||
|
||||
ChangeElementDataCommand::ChangeElementDataCommand(Element *element, ElementData new_data) :
|
||||
ChangeElementDataCommand::ChangeElementDataCommand(Element *element, ElementData new_data, QUndoCommand *parent) :
|
||||
QUndoCommand(parent),
|
||||
m_element(element),
|
||||
m_old_data(element->elementData()),
|
||||
m_new_data(new_data)
|
||||
|
||||
@@ -26,7 +26,7 @@ class Element;
|
||||
class ChangeElementDataCommand : public QUndoCommand
|
||||
{
|
||||
public:
|
||||
ChangeElementDataCommand(Element *element, ElementData new_data);
|
||||
ChangeElementDataCommand(Element *element, ElementData new_data, QUndoCommand *parent = nullptr);
|
||||
void undo() override;
|
||||
void redo() override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user