OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
creator.hpp
Go to the documentation of this file.
1 #ifndef CSV_WORLD_CREATOR_H
2 #define CSV_WORLD_CREATOR_H
3 
4 #include <memory>
5 
6 #include <QWidget>
7 
8 #include "../../model/doc/document.hpp"
9 
10 #include "../../model/world/scope.hpp"
11 #include "../../model/world/universalid.hpp"
12 
13 namespace CSMDoc
14 {
15  class Document;
16 }
17 
18 namespace CSVWorld
19 {
21  class Creator : public QWidget
22  {
23  Q_OBJECT
24 
25  public:
26 
27  virtual ~Creator();
28 
29  virtual void reset() = 0;
30 
31  virtual void cloneMode(const std::string& originId,
32  const CSMWorld::UniversalId::Type type) = 0;
33 
35  virtual void touch(const std::vector<CSMWorld::UniversalId>& ids) = 0;
36 
37  virtual void setEditLock (bool locked) = 0;
38 
39  virtual void toggleWidgets(bool active = true) = 0;
40 
42  virtual void setScope (unsigned int scope);
43 
45  virtual void focus() = 0;
46 
47  signals:
48 
49  void done();
50 
51  void requestFocus (const std::string& id);
54  };
55 
58  {
59  public:
60 
61  virtual ~CreatorFactoryBase();
62 
63  virtual Creator *makeCreator (CSMDoc::Document& document, const CSMWorld::UniversalId& id) const = 0;
68  };
69 
72  {
73  public:
74 
75  virtual Creator *makeCreator (CSMDoc::Document& document, const CSMWorld::UniversalId& id) const;
79  };
80 
81  template<class CreatorT, unsigned int scope = CSMWorld::Scope_Content>
83  {
84  public:
85 
86  virtual Creator *makeCreator (CSMDoc::Document& document, const CSMWorld::UniversalId& id) const;
91  };
92 
93  template<class CreatorT, unsigned int scope>
95  const CSMWorld::UniversalId& id) const
96  {
97  std::unique_ptr<CreatorT> creator (new CreatorT (document.getData(), document.getUndoStack(), id));
98 
99  creator->setScope (scope);
100 
101  return creator.release();
102  }
103 }
104 
105 #endif
Record creator UI base class.
Definition: creator.hpp:21
virtual Creator * makeCreator(CSMDoc::Document &document, const CSMWorld::UniversalId &id) const =0
virtual Creator * makeCreator(CSMDoc::Document &document, const CSMWorld::UniversalId &id) const
Definition: creator.cpp:17
virtual void reset()=0
static const struct @8 signals[]
Type
Definition: universalid.hpp:40
virtual void touch(const std::vector< CSMWorld::UniversalId > &ids)=0
Touches a record, if the creator supports it.
virtual ~Creator()
Definition: creator.cpp:5
void requestFocus(const std::string &id)
virtual ~CreatorFactoryBase()
Definition: creator.cpp:14
virtual void cloneMode(const std::string &originId, const CSMWorld::UniversalId::Type type)=0
Base class for Creator factory.
Definition: creator.hpp:57
virtual void setScope(unsigned int scope)
Default implementation: Throw an exception if scope!=Scope_Content.
Definition: creator.cpp:7
Definition: creator.hpp:82
Definition: document.hpp:57
const CSMWorld::Data & getData() const
Definition: document.cpp:450
QUndoStack & getUndoStack()
Definition: document.cpp:343
virtual Creator * makeCreator(CSMDoc::Document &document, const CSMWorld::UniversalId &id) const
Definition: creator.hpp:94
virtual void focus()=0
Focus main input widget.
virtual void toggleWidgets(bool active=true)=0
virtual void setEditLock(bool locked)=0
Creator factory that does not produces any creator.
Definition: creator.hpp:71
Definition: universalid.hpp:12