BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
defaulteditorfactory.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // qt-mvvm: Model-view-view-model framework for large GUI applications
4 //
5 //! @file mvvm/viewmodel/mvvm/editors/defaulteditorfactory.h
6 //! @brief Defines class CLASS?
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2020
11 //! @authors Gennady Pospelov et al, Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_MVVM_VIEWMODEL_MVVM_EDITORS_DEFAULTEDITORFACTORY_H
16 #define BORNAGAIN_MVVM_VIEWMODEL_MVVM_EDITORS_DEFAULTEDITORFACTORY_H
17 
18 //! @file mvvm/viewmodel/mvvm/editors/defaulteditorfactory.h
19 //! Defines DefaultEditorFactory and auxiliary classes for custom view model delegates.
20 
23 #include <map>
24 #include <memory>
25 
26 namespace ModelView {
27 
28 //! Abstract editor factory for ViewModelDelegate.
29 //! Creates cell editors for Qt trees and tables from model index. Cell editor is
30 //! Qt widget intended for editing DATA role of some SessionItem.
31 
32 class MVVM_VIEWMODEL_EXPORT AbstractEditorFactory : public EditorFactoryInterface {
33 protected:
34  void registerBuilder(const std::string& name, EditorBuilders::builder_t builder);
35  EditorBuilders::builder_t findBuilder(const std::string& name) const;
36 
37  std::map<std::string, EditorBuilders::builder_t> m_nameToBuilderMap;
38 };
39 
40 //! Editor factory for cell editors in Qt trees and tables, relies on EDITORTYPE role stored
41 //! on board of SessionItem.
42 
43 class MVVM_VIEWMODEL_EXPORT RoleDependentEditorFactory : public AbstractEditorFactory {
44 public:
46 
47  std::unique_ptr<CustomEditor> createEditor(const QModelIndex& index) const override;
48 
49 protected:
50  std::unique_ptr<CustomEditor> createItemEditor(const SessionItem* item) const;
51 };
52 
53 //! Editor factory for cell editors in Qt trees and tables, relies on variant type stored as
54 //! DATA role on board of SessionItem.
55 
56 class MVVM_VIEWMODEL_EXPORT VariantDependentEditorFactory : public AbstractEditorFactory {
57 public:
59 
60  std::unique_ptr<CustomEditor> createEditor(const QModelIndex& index) const override;
61 };
62 
63 //! Default editor factory for cell editors in Qt trees and tables.
64 //! Internaly it uses two factories
65 
66 class MVVM_VIEWMODEL_EXPORT DefaultEditorFactory : public EditorFactoryInterface {
67 public:
69 
70  std::unique_ptr<CustomEditor> createEditor(const QModelIndex& index) const override;
71 
72 private:
73  std::unique_ptr<RoleDependentEditorFactory> m_roleDependentFactory;
74  std::unique_ptr<VariantDependentEditorFactory> m_variantDependentFactory;
75 };
76 
77 } // namespace ModelView
78 
79 #endif // BORNAGAIN_MVVM_VIEWMODEL_MVVM_EDITORS_DEFAULTEDITORFACTORY_H
Abstract editor factory for ViewModelDelegate.
std::map< std::string, EditorBuilders::builder_t > m_nameToBuilderMap
Default editor factory for cell editors in Qt trees and tables.
std::unique_ptr< RoleDependentEditorFactory > m_roleDependentFactory
std::unique_ptr< VariantDependentEditorFactory > m_variantDependentFactory
Interface for custom editor factory.
Editor factory for cell editors in Qt trees and tables, relies on EDITORTYPE role stored on board of ...
The main object representing an editable/displayable/serializable entity.
Definition: sessionitem.h:38
Editor factory for cell editors in Qt trees and tables, relies on variant type stored as DATA role on...
Defines class CLASS?
Defines class CLASS?
std::function< editor_t(const SessionItem *)> builder_t
materialitems.h Collection of materials to populate MaterialModel.
QString const & name(EShape k)
Definition: particles.cpp:21