Skip to content
Snippets Groups Projects
Commit 7ab0ce34 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

rm obsolete code

parent 10ab8066
No related branches found
No related tags found
1 merge request!462simplify code; remove test code
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/PropertyEditor/ComponentEditor.cpp
//! @brief Implements ComponentEditor class
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#include "GUI/View/PropertyEditor/ComponentEditor.h"
ComponentEditor::ComponentEditor(EditorType editorType)
{
setShowHeader(editorType.testFlag(T_Header));
setShowRootItem(editorType.testFlag(T_Root));
}
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/PropertyEditor/ComponentEditor.h
//! @brief Defines ComponentEditor class
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTEDITOR_H
#define BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTEDITOR_H
#include "GUI/View/PropertyEditor/ComponentTreeView.h"
//! Component editor for SessionItem. Can have various appearance depending
//! on EditorFlags
class ComponentEditor : public ComponentTreeView {
Q_OBJECT
public:
enum EditorFlags {
T_Header = 0x0100, // to show QTreeView header (Tree mode only)
T_Root = 0x0200, // to show root item (Tree mode only)
FullTree = T_Header | T_Root,
HeaderTree = T_Header,
MiniTree = 0,
};
Q_DECLARE_FLAGS(EditorType, EditorFlags)
ComponentEditor(EditorType editorType = HeaderTree);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ComponentEditor::EditorType)
#endif // BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTEDITOR_H
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/PropertyEditor/ComponentFlatView.cpp
//! @brief Implements class ComponentFlatView
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#include "GUI/View/PropertyEditor/ComponentFlatView.h"
#include "GUI/Model/Component/ComponentUtils.h"
#include "GUI/Model/Group/GroupItem.h"
#include "GUI/Model/Session/SessionModel.h"
#include "GUI/View/PropertyEditor/PropertyEditorFactory.h"
#include "GUI/View/PropertyEditor/PropertyWidgetItem.h"
#include "GUI/View/Tool/LayoutUtils.h"
#include <QBoxLayout>
#include <QComboBox>
#include <QDataWidgetMapper>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QSpinBox>
#include <QVBoxLayout>
ComponentFlatView::ComponentFlatView(QWidget* parent)
: ComponentView(parent), m_mainLayout(nullptr), m_gridLayout(nullptr), m_model(nullptr)
{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_mainLayout = new QVBoxLayout(this);
m_mainLayout->setMargin(10);
m_mainLayout->setSpacing(0);
initGridLayout();
setLayout(m_mainLayout);
}
ComponentFlatView::~ComponentFlatView() = default;
void ComponentFlatView::setItem(SessionItem* item)
{
clearEditor();
m_topItems.push_back(item);
setModel(item->model());
updateItemProperties();
}
void ComponentFlatView::addItem(SessionItem* item)
{
if (m_topItems.isEmpty()) {
setItem(item);
return;
}
m_topItems.push_back(item);
updateItemProperties();
}
void ComponentFlatView::setModel(SessionModel* model)
{
if (m_model) {
disconnect(m_model, &SessionModel::dataChanged, this, &ComponentFlatView::onDataChanged);
}
m_model = model;
if (m_model) {
connect(m_model, &SessionModel::dataChanged, this, &ComponentFlatView::onDataChanged);
}
}
void ComponentFlatView::clearLayout()
{
ASSERT(m_gridLayout);
GUI::Util::Layout::clearGridLayout(m_gridLayout, false);
for (auto* widget : m_widgetItems)
widget->deleteLater();
m_widgetItems.clear();
}
void ComponentFlatView::onDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight,
const QVector<int>& roles)
{
Q_UNUSED(bottomRight);
SessionItem* item = m_model->itemForIndex(topLeft);
ASSERT(item);
if (item->hasModelType<GroupItem>())
updateItemProperties();
if (roles.contains(SessionFlags::FlagRole))
updateItemRoles(item);
}
void ComponentFlatView::clearEditor()
{
m_topItems.clear();
clearLayout();
}
void ComponentFlatView::updateItemProperties()
{
clearLayout();
QList<const SessionItem*> allitems;
for (const auto* item : m_topItems)
allitems += GUI::Model::ComponentUtils::componentItems(*item);
int nrow(0);
for (const auto* child : allitems) {
auto* widget = createWidget(child);
if (!widget)
continue;
widget->addToGrid(m_gridLayout, nrow++);
m_widgetItems.push_back(widget);
}
}
void ComponentFlatView::updateItemRoles(SessionItem* item)
{
for (auto* widget : m_widgetItems)
if (widget->item() == item)
widget->updateItemRoles();
}
void ComponentFlatView::initGridLayout()
{
delete m_gridLayout;
m_gridLayout = new QGridLayout;
m_gridLayout->setSpacing(6);
m_mainLayout->addLayout(m_gridLayout);
m_mainLayout->addStretch(1);
}
PropertyWidgetItem* ComponentFlatView::createWidget(const SessionItem* item)
{
auto* editor = GUI::View::PropertyEditorFactory::CreateEditor(*item);
if (!editor)
return nullptr;
auto* result = new PropertyWidgetItem(this);
result->setItemEditor(item, editor);
return result;
}
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/PropertyEditor/ComponentFlatView.h
//! @brief Defines class ComponentFlatView
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTFLATVIEW_H
#define BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTFLATVIEW_H
#include "GUI/View/PropertyEditor/ComponentView.h"
#include <memory>
class SessionItem;
class SessionModel;
class QGridLayout;
class QBoxLayout;
class PropertyWidgetItem;
//! Component property widget for SessionItems. On the contrary to ComponentTreeView
//! properties are presented as widgets in grid layout.
//! Shows only PropertyItems and current items of GroupProperties.
class ComponentFlatView : public ComponentView {
Q_OBJECT
public:
ComponentFlatView(QWidget* parent = nullptr);
~ComponentFlatView() override;
void setItem(SessionItem* item) override;
void addItem(SessionItem* item) override;
void setModel(SessionModel* model);
void clearEditor() override;
public slots:
void onDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight,
const QVector<int>& roles);
private:
void clearLayout();
void updateItemProperties();
void updateItemRoles(SessionItem* item);
void initGridLayout();
PropertyWidgetItem* createWidget(const SessionItem* item);
QBoxLayout* m_mainLayout;
QGridLayout* m_gridLayout;
QVector<PropertyWidgetItem*> m_widgetItems;
SessionModel* m_model;
QVector<const SessionItem*> m_topItems;
};
#endif // BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTFLATVIEW_H
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/PropertyEditor/ComponentView.h
//! @brief Defines class ComponentView
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTVIEW_H
#define BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTVIEW_H
#include <QWidget>
class SessionItem;
//! Base class for ComponentTreeView and ComponentFlatView.
class ComponentView : public QWidget {
Q_OBJECT
public:
ComponentView(QWidget* parent = nullptr) : QWidget(parent) {}
virtual void clearEditor() = 0;
virtual void setItem(SessionItem* item) = 0;
virtual void addItem(SessionItem*) {}
};
#endif // BORNAGAIN_GUI_VIEW_PROPERTYEDITOR_COMPONENTVIEW_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment