Double click on Xref cell show the terminal in the diagram

This commit is contained in:
joshua
2021-08-17 20:49:48 +02:00
parent cc6f66ad11
commit 80601a415a
3 changed files with 52 additions and 0 deletions

View File

@@ -29,6 +29,7 @@
#include "terminalstriptreewidget.h"
#include "../../qeticons.h"
#include "terminalstripmodel.h"
#include "../diagram.h"
#include <QTreeWidgetItem>
@@ -48,6 +49,29 @@ TerminalStripEditor::TerminalStripEditor(QETProject *project, QWidget *parent) :
buildTree();
ui->m_terminal_strip_tw->expandRecursively(ui->m_terminal_strip_tw->rootIndex());
setUpUndoConnections();
//Go the diagram of double clicked terminal
connect(ui->m_table_widget, &QAbstractItemView::doubleClicked, [this](auto index)
{
Element *elmt = nullptr;
if (this->m_model->isXrefCell(index, &elmt))
{
auto diagram = elmt->diagram();
if (diagram)
{
diagram->showMe();
if (diagram->views().size())
{
auto fit_view = elmt->sceneBoundingRect();
fit_view.adjust(-200,-200,200,200);
diagram->views().first()->fitInView(fit_view, Qt::KeepAspectRatioByExpanding);
}
}
}
});
connect(ui->m_table_widget, &QAbstractItemView::entered, [this](auto index) {
qDebug() <<"entered";
});
}
/**

View File

@@ -239,6 +239,32 @@ QHash<Element *, ElementData> TerminalStripModel::editedTerminalsData() const
return returned_hash;
}
/**
* @brief TerminalStripModel::isXrefCell
* @param index
* @param elmt : Pointer of a pointer element
* @return true if the index is the Xref cell, if true the pointer \p element
* will be set to the element associated to the cell.
*/
bool TerminalStripModel::isXrefCell(const QModelIndex &index, Element **element)
{
if (index.model() == this && index.isValid())
{
if (index.column() == XREF_CELL)
{
if (index.row() < m_real_terminal_data.size())
{
auto data = m_real_terminal_data.at(index.row());
*element = m_terminal_strip->elementForRealTerminal(data.m_real_terminal);
}
return true;
}
}
return false;
}
void TerminalStripModel::fillRealTerminalData()
{
if (m_terminal_strip) {

View File

@@ -42,6 +42,8 @@ class TerminalStripModel : public QAbstractTableModel
QHash<Element *, ElementData> editedTerminalsData() const;
bool isXrefCell(const QModelIndex &index, Element **element = nullptr);
private:
void fillRealTerminalData();
static ElementData modifiedData(const ElementData &original_data, const RealTerminalData &edited_data);