Double click a TerminalStripItem open the editor

This commit is contained in:
joshua
2022-12-02 18:12:47 +01:00
parent a18cd2461f
commit 81640015e5
7 changed files with 93 additions and 8 deletions

View File

@@ -17,6 +17,8 @@
*/
#include "terminalstripitem.h"
#include "../../qetgraphicsitem/qgraphicsitemutility.h"
#include "../terminalstrip.h"
#include "../ui/terminalstripeditorwindow.h"
TerminalStripItem::TerminalStripItem(QPointer<TerminalStrip> strip, QGraphicsItem *parent) :
QetGraphicsItem{parent},
@@ -53,5 +55,12 @@ QRectF TerminalStripItem::boundingRect() const
* @return usual name of this item
*/
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);
}

View File

@@ -39,6 +39,8 @@ class TerminalStripItem : public QetGraphicsItem
QRectF boundingRect() const override;
QString name() const override;
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override;
private:
QPointer<TerminalStrip> m_strip;
TerminalStripDrawer m_drawer;

View File

@@ -19,6 +19,8 @@
#include "../UndoCommand/addterminalstripcommand.h"
#include "freeterminaleditor.h"
#include "../../qetapp.h"
#include "../../qetdiagrameditor.h"
#include "../../qetproject.h"
#include "../realterminal.h"
#include "../terminalstrip.h"
@@ -27,6 +29,8 @@
#include "terminalstripeditorwindow.h"
#include "terminalstriptreedockwidget.h"
QPointer<TerminalStripEditorWindow> TerminalStripEditorWindow::window_;
static const int EMPTY_PAGE = 0;
static const int FREE_TERMINAL_PAGE = 1;
static const int TERMINAL_STRIP_PAGE = 2;
@@ -35,6 +39,16 @@ static const int TERMINAL_STRIP_PAGE = 2;
* @param project
* @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) :
QMainWindow(parent),
ui(new Ui::TerminalStripEditorWindow),
@@ -59,7 +73,11 @@ TerminalStripEditorWindow::TerminalStripEditorWindow(QETProject *project, QWidge
*/
TerminalStripEditorWindow::~TerminalStripEditorWindow()
{
delete ui;
delete ui;
}
void TerminalStripEditorWindow::setCurrentStrip(TerminalStrip *strip) {
m_tree_dock->setSelectedStrip(strip);
}
/**

View File

@@ -19,6 +19,8 @@
#define TERMINALSTRIPEDITORWINDOW_H
#include <QMainWindow>
#include <QMutex>
#include <QPointer>
class QETProject;
class TerminalStripTreeDockWidget;
@@ -35,16 +37,47 @@ class TerminalStripEditorWindow : public QMainWindow
{
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);
~TerminalStripEditorWindow();
void setCurrentStrip(TerminalStrip *strip);
private slots:
void on_m_add_terminal_strip_triggered();
void on_m_remove_terminal_triggered();
void on_m_reload_triggered();
void on_m_button_box_clicked(QAbstractButton *button);
void on_m_stacked_widget_currentChanged(int arg1);
private: