Skip to content
Snippets Groups Projects
Commit 713f252a authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Added ParameterizedItem and SessionModel

parent 82fa432a
No related branches found
No related tags found
No related merge requests found
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file ParameterizedItem.h
//! @brief Defines class ParameterizedItem.
//!
//! @homepage http://apps.jcns.fz-juelich.de/BornAgain
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2013
//! @authors Scientific Computing Group at MLZ Garching
//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
//
// ************************************************************************** //
#include "ParameterizedItem.h"
ParameterizedItem::ParameterizedItem(BA_MODEL_ID::Model_ID model_type,
const QString &name)
: QStandardItem(name)
, m_model_type(model_type)
{
populateWithParameters();
}
ParameterizedItem::~ParameterizedItem()
{
}
void ParameterizedItem::setParameter(QString name, double value)
{
if (m_parameters.contains(name)) {
m_parameters[name] = value;
}
}
void ParameterizedItem::populateWithParameters()
{
m_parameters[QString("firstparam")] = 5.0;
m_parameters[QString("anotherparam")] = 6.0;
m_parameters[QString("lastparam")] = 7.0;
}
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file ParameterizedItem.h
//! @brief Defines class ParameterizedItem.
//!
//! @homepage http://apps.jcns.fz-juelich.de/BornAgain
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2013
//! @authors Scientific Computing Group at MLZ Garching
//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
//
// ************************************************************************** //
#ifndef PARAMETERIZEDITEM_H_
#define PARAMETERIZEDITEM_H_
#include <QStandardItem>
#include <QMap>
namespace BA_MODEL_ID {
enum Model_ID {
MultiLayer,
Layer,
};
}
class ParameterizedItem : public QStandardItem
{
public:
explicit ParameterizedItem(BA_MODEL_ID::Model_ID model_type, const QString &name);
~ParameterizedItem();
void setParameter(QString name, double value);
QMap<QString, double> &getParameters() {
return m_parameters;
}
private:
void populateWithParameters();
BA_MODEL_ID::Model_ID m_model_type;
QMap<QString, double> m_parameters;
};
#endif /* PARAMETERIZEDITEM_H_ */
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file Models/SessionModel.cpp
//! @brief Implements class SessionModel.
//!
//! @homepage http://apps.jcns.fz-juelich.de/BornAgain
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2013
//! @authors Scientific Computing Group at MLZ Garching
//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
//
// ************************************************************************** //
#include "SessionModel.h"
SessionModel::SessionModel(QObject *parent)
: QStandardItemModel(parent)
{
initialize();
}
SessionModel::~SessionModel()
{
}
QStandardItem *SessionModel::insertNewItem(BA_MODEL_ID::Model_ID model_type, const QModelIndex &index)
{
QStandardItem *parent;
if (index.isValid()) {
parent = itemFromIndex(index);
if (!parent) {
return 0;
}
}
else {
parent = invisibleRootItem();
}
return createNewItem(parent, model_type);
}
void SessionModel::initialize()
{
m_default_names[BA_MODEL_ID::MultiLayer] = QString("MultiLayer");
m_default_names[BA_MODEL_ID::Layer] = QString("Layer");
}
QStandardItem *SessionModel::createNewItem(QStandardItem *parent, BA_MODEL_ID::Model_ID model_type)
{
QString name = m_default_names[model_type];
ParameterizedItem *new_item = new ParameterizedItem(model_type, name);
parent->appendRow(new_item);
return new_item;
}
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file Models/SessionModel.h
//! @brief Defines class SessionModel.
//!
//! @homepage http://apps.jcns.fz-juelich.de/BornAgain
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2013
//! @authors Scientific Computing Group at MLZ Garching
//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
//
// ************************************************************************** //
#ifndef SESSIONMODEL_H
#define SESSIONMODEL_H
#include <QStandardItemModel>
#include "ParameterizedItem.h"
class SessionModel : public QStandardItemModel
{
Q_OBJECT
public:
explicit SessionModel(QObject *parent=0);
~SessionModel();
QString filename() const { return m_filename; }
void setFilename(const QString &filename) {
m_filename = filename;
}
QStandardItem *insertNewItem(BA_MODEL_ID::Model_ID model_type,
const QModelIndex &index);
// void load(const QString &filename=QString());
// void save(const QString &filename=QString());
private:
void initialize();
QStandardItem *createNewItem(QStandardItem *parent,
BA_MODEL_ID::Model_ID model_type);
QString m_filename;
QMap<BA_MODEL_ID::Model_ID, QString> m_default_names;
};
#endif // SESSIONMODEL_H
......@@ -3,6 +3,7 @@
#include "SampleDesigner.h"
#include "SampleToolBar.h"
#include "MaterialBrowser.h"
#include "SessionModel.h"
#include <QDockWidget>
......@@ -75,7 +76,13 @@ void SampleView::initSubWindows()
m_subWindows[WidgetBoxSubWindow] = SampleViewComponents::createWidgetBox(m_sampleDesigner, this);
m_subWindows[SampleInspectorSubWindow] = SampleViewComponents::createTreeInspector(this);
SessionModel *session_model = new SessionModel();
// Temporary for testing
QStandardItem *multilayer = session_model->insertNewItem(BA_MODEL_ID::MultiLayer, QModelIndex());
QStandardItem *layer = session_model->insertNewItem(BA_MODEL_ID::Layer, QModelIndex());
session_model->insertNewItem(BA_MODEL_ID::Layer, multilayer->index());
// END temporary
m_subWindows[SampleTreeView] = SampleViewComponents::createTreeView(session_model, this);
m_subWindows[PropertyEditorSubWindow] = SampleViewComponents::createPropertyEditor(m_sampleDesigner, this);
......@@ -110,7 +117,7 @@ void SampleView::resetToDefaultLayout()
}
addDockWidget(Qt::LeftDockWidgetArea, m_dockWidgets[WidgetBoxSubWindow]);
addDockWidget(Qt::RightDockWidgetArea, m_dockWidgets[SampleInspectorSubWindow]);
addDockWidget(Qt::RightDockWidgetArea, m_dockWidgets[SampleTreeView]);
addDockWidget(Qt::RightDockWidgetArea, m_dockWidgets[PropertyEditorSubWindow]);
addDockWidget(Qt::BottomDockWidgetArea, m_dockWidgets[InfoSubWindow]);
......
......@@ -5,6 +5,7 @@
#include <QWidget>
#include <QMainWindow>
#include <QDockWidget>
#include <QTreeView>
class SampleDesignerInterface;
......@@ -22,7 +23,7 @@ public:
enum SubWindows
{
WidgetBoxSubWindow,
SampleInspectorSubWindow,
SampleTreeView,
PropertyEditorSubWindow,
InfoSubWindow,
NumberOfSubWindows
......
......@@ -39,10 +39,12 @@ SamplePropertyEditor *SampleViewComponents::createPropertyEditor(SampleDesignerI
// result->setObjectName(QLatin1String("PropertyEditor"));
return new SamplePropertyEditor(core, parent);
}
SampleTreeInspector *SampleViewComponents::createTreeInspector(QWidget *parent)
QTreeView *SampleViewComponents::createTreeView(SessionModel *session_model, QWidget *parent)
{
return new SampleTreeInspector(parent);
QTreeView *tree_view = new QTreeView(parent);
tree_view->setModel(session_model);
tree_view->setAllColumnsShowFocus(true);
return tree_view;
}
SampleInfoStreamInterface *SampleViewComponents::createInfoStream(QWidget *parent)
......
......@@ -2,11 +2,13 @@
#define SAMPLEVIEWCOMPONENTS_H
#include <QWidget>
#include <QTreeView>
#include "widgetbox.h"
#include "SamplePropertyEditor.h"
#include "SampleTreeInspector.h"
#include "SampleWidgetBox.h"
#include "SessionModel.h"
//class SampleWidgetBoxInterface : public QWidget
//{
......@@ -41,7 +43,7 @@ class SampleViewComponents
public:
static SampleWidgetBox *createWidgetBox(SampleDesignerInterface *core, QWidget *parent);
static SamplePropertyEditor *createPropertyEditor(SampleDesignerInterface *core,QWidget *parent);
static SampleTreeInspector *createTreeInspector(QWidget *parent);
static QTreeView *createTreeView(SessionModel *session_model, QWidget *parent);
static SampleInfoStreamInterface *createInfoStream(QWidget *parent);
};
......
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