##// END OF EJS Templates
Affects model to the Variable Widget
Alexandre Leroux -
r152:53848f21863d
parent child
Show More
@@ -1,39 +1,43
1 1 #ifndef SCIQLOP_VARIABLECONTROLLER_H
2 2 #define SCIQLOP_VARIABLECONTROLLER_H
3 3
4 4 #include <QLoggingCategory>
5 5 #include <QObject>
6 6
7 7 #include <Common/spimpl.h>
8 8
9 9 class Variable;
10 class VariableModel;
11
10 12 Q_DECLARE_LOGGING_CATEGORY(LOG_VariableController)
11 13
12 14 /**
13 15 * @brief The VariableController class aims to handle the variables in SciQlop.
14 16 */
15 17 class VariableController : public QObject {
16 18 Q_OBJECT
17 19 public:
18 20 explicit VariableController(QObject *parent = 0);
19 21 virtual ~VariableController();
20 22
21 23 /**
22 24 * Creates a new variable
23 25 * @param name the name of the new variable
24 26 * @return the variable if it was created successfully, nullptr otherwise
25 27 */
26 28 Variable *createVariable(const QString &name) noexcept;
27 29
30 VariableModel *variableModel() noexcept;
31
28 32 public slots:
29 33 void initialize();
30 34 void finalize();
31 35
32 36 private:
33 37 void waitForFinish();
34 38
35 39 class VariableControllerPrivate;
36 40 spimpl::unique_impl_ptr<VariableControllerPrivate> impl;
37 41 };
38 42
39 43 #endif // SCIQLOP_VARIABLECONTROLLER_H
@@ -1,53 +1,58
1 1 #include <Variable/VariableController.h>
2 2 #include <Variable/VariableModel.h>
3 3
4 4 #include <QMutex>
5 5 #include <QThread>
6 6
7 7 Q_LOGGING_CATEGORY(LOG_VariableController, "VariableController")
8 8
9 9 struct VariableController::VariableControllerPrivate {
10 10 explicit VariableControllerPrivate()
11 11 : m_WorkingMutex{}, m_VariableModel{std::make_unique<VariableModel>()}
12 12 {
13 13 }
14 14
15 15 QMutex m_WorkingMutex;
16 16 std::unique_ptr<VariableModel> m_VariableModel;
17 17 };
18 18
19 19 VariableController::VariableController(QObject *parent)
20 20 : QObject{parent}, impl{spimpl::make_unique_impl<VariableControllerPrivate>()}
21 21 {
22 22 qCDebug(LOG_VariableController()) << tr("VariableController construction")
23 23 << QThread::currentThread();
24 24 }
25 25
26 26 VariableController::~VariableController()
27 27 {
28 28 qCDebug(LOG_VariableController()) << tr("VariableController destruction")
29 29 << QThread::currentThread();
30 30 this->waitForFinish();
31 31 }
32 32
33 33 Variable *VariableController::createVariable(const QString &name) noexcept
34 34 {
35 35 return impl->m_VariableModel->createVariable(name);
36 36 }
37 37
38 VariableModel *VariableController::variableModel() noexcept
39 {
40 return impl->m_VariableModel.get();
41 }
42
38 43 void VariableController::initialize()
39 44 {
40 45 qCDebug(LOG_VariableController()) << tr("VariableController init") << QThread::currentThread();
41 46 impl->m_WorkingMutex.lock();
42 47 qCDebug(LOG_VariableController()) << tr("VariableController init END");
43 48 }
44 49
45 50 void VariableController::finalize()
46 51 {
47 52 impl->m_WorkingMutex.unlock();
48 53 }
49 54
50 55 void VariableController::waitForFinish()
51 56 {
52 57 QMutexLocker locker{&impl->m_WorkingMutex};
53 58 }
@@ -1,14 +1,26
1 #include <Variable/VariableController.h>
1 2 #include <Variable/VariableInspectorWidget.h>
3 #include <Variable/VariableModel.h>
2 4
3 5 #include <ui_VariableInspectorWidget.h>
4 6
7 #include <QSortFilterProxyModel>
8
9 #include <SqpApplication.h>
10
5 11 VariableInspectorWidget::VariableInspectorWidget(QWidget *parent)
6 12 : QWidget{parent}, ui{new Ui::VariableInspectorWidget}
7 13 {
8 14 ui->setupUi(this);
15
16 // Sets model for table
17 auto sortFilterModel = new QSortFilterProxyModel{this};
18 sortFilterModel->setSourceModel(sqpApp->variableController().variableModel());
19
20 ui->tableView->setModel(sortFilterModel);
9 21 }
10 22
11 23 VariableInspectorWidget::~VariableInspectorWidget()
12 24 {
13 25 delete ui;
14 26 }
General Comments 0
You need to be logged in to leave comments. Login now