mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 20:50:34 +01:00
Double click a TerminalStripItem open the editor
This commit is contained in:
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
#include "terminalstripitem.h"
|
#include "terminalstripitem.h"
|
||||||
#include "../../qetgraphicsitem/qgraphicsitemutility.h"
|
#include "../../qetgraphicsitem/qgraphicsitemutility.h"
|
||||||
|
#include "../terminalstrip.h"
|
||||||
|
#include "../ui/terminalstripeditorwindow.h"
|
||||||
|
|
||||||
TerminalStripItem::TerminalStripItem(QPointer<TerminalStrip> strip, QGraphicsItem *parent) :
|
TerminalStripItem::TerminalStripItem(QPointer<TerminalStrip> strip, QGraphicsItem *parent) :
|
||||||
QetGraphicsItem{parent},
|
QetGraphicsItem{parent},
|
||||||
@@ -53,5 +55,12 @@ QRectF TerminalStripItem::boundingRect() const
|
|||||||
* @return usual name of this item
|
* @return usual name of this item
|
||||||
*/
|
*/
|
||||||
QString TerminalStripItem::name() const {
|
QString TerminalStripItem::name() const {
|
||||||
return tr("plan de bornes");
|
return tr("plan de bornes");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerminalStripItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
|
||||||
|
{
|
||||||
|
Q_UNUSED (event);
|
||||||
|
|
||||||
|
TerminalStripEditorWindow::edit(m_strip);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ class TerminalStripItem : public QetGraphicsItem
|
|||||||
QRectF boundingRect() const override;
|
QRectF boundingRect() const override;
|
||||||
QString name() const override;
|
QString name() const override;
|
||||||
|
|
||||||
|
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<TerminalStrip> m_strip;
|
QPointer<TerminalStrip> m_strip;
|
||||||
TerminalStripDrawer m_drawer;
|
TerminalStripDrawer m_drawer;
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
#include "../UndoCommand/addterminalstripcommand.h"
|
#include "../UndoCommand/addterminalstripcommand.h"
|
||||||
#include "freeterminaleditor.h"
|
#include "freeterminaleditor.h"
|
||||||
|
#include "../../qetapp.h"
|
||||||
|
#include "../../qetdiagrameditor.h"
|
||||||
#include "../../qetproject.h"
|
#include "../../qetproject.h"
|
||||||
#include "../realterminal.h"
|
#include "../realterminal.h"
|
||||||
#include "../terminalstrip.h"
|
#include "../terminalstrip.h"
|
||||||
@@ -27,6 +29,8 @@
|
|||||||
#include "terminalstripeditorwindow.h"
|
#include "terminalstripeditorwindow.h"
|
||||||
#include "terminalstriptreedockwidget.h"
|
#include "terminalstriptreedockwidget.h"
|
||||||
|
|
||||||
|
QPointer<TerminalStripEditorWindow> TerminalStripEditorWindow::window_;
|
||||||
|
|
||||||
static const int EMPTY_PAGE = 0;
|
static const int EMPTY_PAGE = 0;
|
||||||
static const int FREE_TERMINAL_PAGE = 1;
|
static const int FREE_TERMINAL_PAGE = 1;
|
||||||
static const int TERMINAL_STRIP_PAGE = 2;
|
static const int TERMINAL_STRIP_PAGE = 2;
|
||||||
@@ -35,6 +39,16 @@ static const int TERMINAL_STRIP_PAGE = 2;
|
|||||||
* @param project
|
* @param project
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
|
void TerminalStripEditorWindow::edit(TerminalStrip *strip)
|
||||||
|
{
|
||||||
|
if (const auto project_ = strip->project())
|
||||||
|
{
|
||||||
|
auto editor_ = TerminalStripEditorWindow::instance(project_, QETApp::diagramEditor(project_));
|
||||||
|
editor_->setCurrentStrip(strip);
|
||||||
|
editor_->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TerminalStripEditorWindow::TerminalStripEditorWindow(QETProject *project, QWidget *parent) :
|
TerminalStripEditorWindow::TerminalStripEditorWindow(QETProject *project, QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
ui(new Ui::TerminalStripEditorWindow),
|
ui(new Ui::TerminalStripEditorWindow),
|
||||||
@@ -59,7 +73,11 @@ TerminalStripEditorWindow::TerminalStripEditorWindow(QETProject *project, QWidge
|
|||||||
*/
|
*/
|
||||||
TerminalStripEditorWindow::~TerminalStripEditorWindow()
|
TerminalStripEditorWindow::~TerminalStripEditorWindow()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerminalStripEditorWindow::setCurrentStrip(TerminalStrip *strip) {
|
||||||
|
m_tree_dock->setSelectedStrip(strip);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
#define TERMINALSTRIPEDITORWINDOW_H
|
#define TERMINALSTRIPEDITORWINDOW_H
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QMutex>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
class QETProject;
|
class QETProject;
|
||||||
class TerminalStripTreeDockWidget;
|
class TerminalStripTreeDockWidget;
|
||||||
@@ -35,16 +37,47 @@ class TerminalStripEditorWindow : public QMainWindow
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
private:
|
||||||
|
//We need to use a QPointer instead of a raw pointer because when window_
|
||||||
|
//have got a parent widget, the parent widget can delete the window_
|
||||||
|
//instance in her destrucor and then window_ become a dangling pointer.
|
||||||
|
static QPointer<TerminalStripEditorWindow> window_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
static TerminalStripEditorWindow* instance(QETProject *project, QWidget *parent = nullptr) {
|
||||||
|
static QMutex mutex_;
|
||||||
|
if (!window_) {
|
||||||
|
mutex_.lock();
|
||||||
|
if (!window_)
|
||||||
|
window_ = new TerminalStripEditorWindow{project, parent};
|
||||||
|
mutex_.unlock();
|
||||||
|
}
|
||||||
|
return window_;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dropInstance () {
|
||||||
|
static QMutex mutex;
|
||||||
|
if (window_) {
|
||||||
|
mutex.lock();
|
||||||
|
window_->deleteLater();
|
||||||
|
window_.clear();
|
||||||
|
mutex.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void edit(TerminalStrip *strip);
|
||||||
|
|
||||||
|
public:
|
||||||
explicit TerminalStripEditorWindow(QETProject *project, QWidget *parent = nullptr);
|
explicit TerminalStripEditorWindow(QETProject *project, QWidget *parent = nullptr);
|
||||||
~TerminalStripEditorWindow();
|
~TerminalStripEditorWindow();
|
||||||
|
|
||||||
|
void setCurrentStrip(TerminalStrip *strip);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_m_add_terminal_strip_triggered();
|
void on_m_add_terminal_strip_triggered();
|
||||||
void on_m_remove_terminal_triggered();
|
void on_m_remove_terminal_triggered();
|
||||||
void on_m_reload_triggered();
|
void on_m_reload_triggered();
|
||||||
void on_m_button_box_clicked(QAbstractButton *button);
|
void on_m_button_box_clicked(QAbstractButton *button);
|
||||||
|
|
||||||
void on_m_stacked_widget_currentChanged(int arg1);
|
void on_m_stacked_widget_currentChanged(int arg1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
#include "ui/aboutqetdialog.h"
|
#include "ui/aboutqetdialog.h"
|
||||||
#include "ui/configpage/generalconfigurationpage.h"
|
#include "ui/configpage/generalconfigurationpage.h"
|
||||||
#include "machine_info.h"
|
#include "machine_info.h"
|
||||||
|
#include "TerminalStrip/ui/terminalstripeditorwindow.h"
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@@ -159,6 +160,7 @@ QETApp::~QETApp()
|
|||||||
ElementFactory::dropInstance();
|
ElementFactory::dropInstance();
|
||||||
ElementPictureFactory::dropInstance();
|
ElementPictureFactory::dropInstance();
|
||||||
MachineInfo::dropInstance();
|
MachineInfo::dropInstance();
|
||||||
|
TerminalStripEditorWindow::dropInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1128,7 +1130,28 @@ QFont QETApp::indiTextsItemFont(qreal size)
|
|||||||
*/
|
*/
|
||||||
QList<QETDiagramEditor *> QETApp::diagramEditors()
|
QList<QETDiagramEditor *> QETApp::diagramEditors()
|
||||||
{
|
{
|
||||||
return(QETApp::instance() -> detectWindows<QETDiagramEditor>());
|
return(QETApp::instance() -> detectWindows<QETDiagramEditor>());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief QETApp::diagramEditor
|
||||||
|
* @param project
|
||||||
|
* @return The diagram editor of @a project or nullptr.
|
||||||
|
*/
|
||||||
|
QETDiagramEditor *QETApp::diagramEditor(QETProject *project)
|
||||||
|
{
|
||||||
|
for (const auto &editor : QETApp::instance()->detectWindows<QETDiagramEditor>())
|
||||||
|
{
|
||||||
|
for (const auto &project_view : editor->openedProjects())
|
||||||
|
{
|
||||||
|
if (project_view->project() == project)
|
||||||
|
{
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -148,7 +148,8 @@ class QETApp : public QObject
|
|||||||
static QFont indiTextsItemFont (qreal = -1.0);
|
static QFont indiTextsItemFont (qreal = -1.0);
|
||||||
static QETDiagramEditor *diagramEditorForFile(const QString &);
|
static QETDiagramEditor *diagramEditorForFile(const QString &);
|
||||||
static QETDiagramEditor *diagramEditorAncestorOf (const QWidget *child);
|
static QETDiagramEditor *diagramEditorAncestorOf (const QWidget *child);
|
||||||
static QList<QETDiagramEditor *> diagramEditors();
|
static QList<QETDiagramEditor *> diagramEditors();
|
||||||
|
static QETDiagramEditor* diagramEditor(QETProject *project);
|
||||||
static QList<QETElementEditor *> elementEditors();
|
static QList<QETElementEditor *> elementEditors();
|
||||||
static QList<QETElementEditor *> elementEditors(QETProject *);
|
static QList<QETElementEditor *> elementEditors(QETProject *);
|
||||||
static QList<QETTitleBlockTemplateEditor *> titleBlockTemplateEditors();
|
static QList<QETTitleBlockTemplateEditor *> titleBlockTemplateEditors();
|
||||||
|
|||||||
@@ -447,8 +447,7 @@ void QETDiagramEditor::setUpActions()
|
|||||||
{
|
{
|
||||||
if (auto project = this->currentProject())
|
if (auto project = this->currentProject())
|
||||||
{
|
{
|
||||||
auto tsew {new TerminalStripEditorWindow{project, this}};
|
TerminalStripEditorWindow::instance(project, this)->show();
|
||||||
tsew->show();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user