Skip to content
Snippets Groups Projects
Commit 884a0b7f authored by anikhalder's avatar anikhalder
Browse files

Move RealSpaceWidget from Test View to Sample View

parent 88aaa0c8
No related branches found
No related tags found
No related merge requests found
......@@ -54,7 +54,7 @@ void RealSpacePanel::setModel(SampleModel* model)
m_treeView->expandAll();
connect(m_model, &SampleModel::rowsInserted, [=](){m_treeView->expandAll();});
connect(m_model, &SampleModel::rowsInserted, this, [=](){m_treeView->expandAll();});
connect(m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &RealSpacePanel::onSelectionChanged, Qt::UniqueConnection);
......
#include "RealSpaceViewerDialog.h"
#include "RealSpaceWidget.h"
#include "StyleUtils.h"
#include <QAction>
#include <QPushButton>
#include <QSettings>
#include <QVBoxLayout>
#include <QApplication>
namespace
{
const QSize minimum_dialog_size(600, 400);
const QSize default_dialog_size(950, 600);
}
RealSpaceViewerDialog::RealSpaceViewerDialog(SampleModel *sampleModel, QTreeView *treeView,
QWidget *parent)
: QDialog(parent)
, m_sampleModel(sampleModel)
, m_treeView(treeView)
{
setWindowTitle("Real Space Viewer");
setMinimumSize(minimum_dialog_size);
resize(default_dialog_size);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QVBoxLayout *layout = new QVBoxLayout;
layout->setMargin(0);
layout->setSpacing(0);
//layout->setContentsMargins(0, 0, 0, 0);
#ifdef BORNAGAIN_OPENGL
RealSpaceWidget* widget = new RealSpaceWidget(m_sampleModel, m_treeView);
widget->setModel(m_sampleModel, m_treeView);
layout->addWidget(widget);
#endif
setLayout(layout);
StyleUtils::setResizable(this);
}
void RealSpaceViewerDialog::closeEvent(QCloseEvent *event)
{
Q_UNUSED(event);
emit dialogClosed();
}
#ifndef REALSPACEVIEWERDIALOG_H
#define REALSPACEVIEWERDIALOG_H
#include "WinDllMacros.h"
#include <QDialog>
#include <memory>
#include <SampleModel.h>
#include <QTreeView>
#include <QCloseEvent>
class MaterialModel;
class MaterialEditor;
class ExternalProperty;
class QBoxLayout;
//! Dialog to hold RealSpaceViewer.
class BA_CORE_API_ RealSpaceViewerDialog : public QDialog
{
Q_OBJECT
public:
RealSpaceViewerDialog(SampleModel* sampleModel, QTreeView* treeView, QWidget *parent = nullptr);
void closeEvent(QCloseEvent* event);
signals:
void dialogClosed();
private:
SampleModel *m_sampleModel;
QTreeView *m_treeView;
};
#endif // REALSPACEVIEWERDIALOG_H
......@@ -21,13 +21,16 @@
#include <QLabel>
#include <QDebug>
RealSpaceWidget::RealSpaceWidget(QWidget* parent)
RealSpaceWidget::RealSpaceWidget(SampleModel *sampleModel, QTreeView *treeView, QWidget* parent)
: QWidget(parent)
, m_actions(new RealSpaceActions)
, m_toolBar(new RealSpaceToolBar)
, m_canvas(new RealSpaceCanvas)
, m_panel(new RealSpacePanel)
{
Q_UNUSED(sampleModel);
Q_UNUSED(treeView);
QHBoxLayout* hlayout = new QHBoxLayout;
hlayout->setMargin(0);
hlayout->setSpacing(0);
......@@ -61,8 +64,9 @@ RealSpaceWidget::RealSpaceWidget(QWidget* parent)
}
void RealSpaceWidget::setModel(SampleModel* model)
void RealSpaceWidget::setModel(SampleModel* model, QTreeView *treeView)
{
Q_UNUSED(treeView);
m_panel->setModel(model);
m_canvas->setModel(model);
}
......@@ -18,6 +18,8 @@
#include "WinDllMacros.h"
#include <QWidget>
#include <QTreeView>
class RealSpaceToolBar;
class RealSpaceCanvas;
class RealSpaceActions;
......@@ -31,9 +33,9 @@ class BA_CORE_API_ RealSpaceWidget : public QWidget
Q_OBJECT
public:
RealSpaceWidget(QWidget* parent = 0);
RealSpaceWidget(SampleModel* sampleModel, QTreeView* treeView, QWidget* parent = nullptr);
void setModel(SampleModel* model);
void setModel(SampleModel* model, QTreeView* treeView);
private:
RealSpaceActions* m_actions;
......
......@@ -24,9 +24,15 @@
#include <QPushButton>
#include <QToolButton>
#include <RealSpaceViewerDialog.h>
//! main tool bar on top of SampleView window
SampleToolBar::SampleToolBar(QWidget *parent)
SampleToolBar::SampleToolBar(SampleModel *sampleModel, QTreeView *treeView,
QWidget *parent)
: StyledToolBar(parent)
, m_sampleModel(sampleModel)
, m_treeView(treeView)
, m_dialog(nullptr)
{
// Select & Pan
QToolButton *selectionPointerButton = new QToolButton;
......@@ -121,7 +127,8 @@ SampleToolBar::SampleToolBar(QWidget *parent)
//m_RealSpaceViewerButton->setIcon(QIcon(":/SampleDesigner/images/toolbar_materialeditor.png"));
m_RealSpaceViewerButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
m_RealSpaceViewerButton->setToolTip("Open real space 3D viewer.");
//connect(m_RealSpaceViewerButton, SIGNAL(clicked()), this, SLOT(onRealSpaceViewerCall()));
m_RealSpaceViewerButton->setCheckable(true);
connect(m_RealSpaceViewerButton, SIGNAL(clicked()), this, SLOT(onRealSpaceViewerCall()));
addWidget(m_RealSpaceViewerButton);
// Additional actions
......@@ -136,7 +143,6 @@ SampleToolBar::SampleToolBar(QWidget *parent)
addAction(m_zoomInAction);
}
void SampleToolBar::onViewSelectionMode(int mode)
{
if(mode == DesignerView::RUBBER_SELECTION || mode == DesignerView::HAND_DRAG)
......@@ -156,5 +162,24 @@ void SampleToolBar::onMaterialEditorCall()
void SampleToolBar::onRealSpaceViewerCall()
{
// to be implemented
// on first click, the RSV button is checked and the dialog window is created
if(m_RealSpaceViewerButton->isChecked())
{
m_dialog = new RealSpaceViewerDialog(m_sampleModel, m_treeView, this);
//m_dialog->setWindowFlags(Qt::Window); // to have minimize, maximize and close buttons
m_dialog->show();
// on closing of dialog window, uncheck the RSV button
connect(m_dialog, &RealSpaceViewerDialog::dialogClosed,
this, &SampleToolBar::onDialogClosed);
}
// on subsequent clicks (uncheck or check) of RSV button, it is always set as checked
// so as to keep only one instance of the dialog window alive
else
m_RealSpaceViewerButton->setChecked(true);
}
void SampleToolBar::onDialogClosed()
{
m_RealSpaceViewerButton->setChecked(false);
}
......@@ -17,6 +17,10 @@
#include "StyledToolBar.h"
#include "SampleModel.h"
#include <QTreeView>
#include "RealSpaceViewerDialog.h"
class QAction;
class QToolButton;
class QToolBar;
......@@ -31,7 +35,8 @@ class BA_CORE_API_ SampleToolBar : public StyledToolBar
Q_OBJECT
public:
explicit SampleToolBar(QWidget *parent = 0);
explicit SampleToolBar(SampleModel* sampleModel, QTreeView* treeView,
QWidget *parent = 0);
signals:
void deleteItems();
......@@ -46,7 +51,9 @@ public slots:
void onViewSelectionMode(int);
void onScaleComboChanged(const QString &);
void onMaterialEditorCall();
void onRealSpaceViewerCall();
void onDialogClosed();
private:
QButtonGroup *m_pointerModeGroup;
......@@ -55,9 +62,13 @@ private:
QToolButton *m_alignItemsButton;
QComboBox *m_scaleCombo;
QToolButton *m_materialEditorButton;
QToolButton *m_RealSpaceViewerButton;
QAction *m_zoomInAction;
QAction *m_zoomOutAction;
QToolButton *m_RealSpaceViewerButton;
SampleModel *m_sampleModel;
QTreeView *m_treeView;
RealSpaceViewerDialog *m_dialog;
};
#endif // SAMPLETOOLBAR_H
......@@ -261,7 +261,7 @@ void SampleView::connectSignals()
connect(this, SIGNAL(resetLayout()), this, SLOT(resetToDefaultLayout()));
// toolBar should be initialized after MaterialBrowser
m_toolBar = new SampleToolBar(this);
m_toolBar = new SampleToolBar(getSampleModel(), getTreeView(), this);
connect(m_toolBar, SIGNAL(deleteItems()),
m_sampleDesigner->getView(), SLOT(deleteSelectedItems()));
connect(m_toolBar, SIGNAL(selectionMode(int)), m_sampleDesigner->getView(), SLOT(onSelectionMode(int)));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment