OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
document.hpp
Go to the documentation of this file.
1 #ifndef CSM_DOC_DOCUMENT_H
2 #define CSM_DOC_DOCUMENT_H
3 
4 #include <string>
5 
6 #include <boost/filesystem/path.hpp>
7 
8 #include <QUndoStack>
9 #include <QObject>
10 #include <QTimer>
11 
14 
15 #include "../world/data.hpp"
16 #include "../world/idcompletionmanager.hpp"
17 
18 #include "../tools/tools.hpp"
19 
20 #include "state.hpp"
21 #include "saving.hpp"
22 #include "blacklist.hpp"
23 #include "runner.hpp"
24 #include "operationholder.hpp"
25 
26 class QAbstractItemModel;
27 
28 namespace Fallback
29 {
30  class Map;
31 }
32 
33 namespace VFS
34 {
35  class Manager;
36 }
37 
38 namespace ESM
39 {
40  struct GameSetting;
41  struct Global;
42  struct MagicEffect;
43 }
44 
45 namespace Files
46 {
47  struct ConfigurationManager;
48 }
49 
50 namespace CSMWorld
51 {
52  class ResourcesManager;
53 }
54 
55 namespace CSMDoc
56 {
57  class Document : public QObject
58  {
59  Q_OBJECT
60 
61  private:
62 
63  boost::filesystem::path mSavePath;
64  std::vector<boost::filesystem::path> mContentFiles;
65  bool mNew;
68  boost::filesystem::path mProjectPath;
71  boost::filesystem::path mResDir;
75  bool mDirty;
76 
78 
79  // It is important that the undo stack is declared last, because on desctruction it fires a signal, that is connected to a slot, that is
80  // using other member variables. Unfortunately this connection is cut only in the QObject destructor, which is way too late.
81  QUndoStack mUndoStack;
82 
83  // not implemented
84  Document (const Document&);
85  Document& operator= (const Document&);
86 
87  void createBase();
88 
89  void addGmsts();
90 
91  void addOptionalGmsts();
92 
93  void addOptionalGlobals();
94 
96 
97  void addOptionalGmst (const ESM::GameSetting& gmst);
98 
99  void addOptionalGlobal (const ESM::Global& global);
100 
101  void addOptionalMagicEffect (const ESM::MagicEffect& effect);
102 
103  public:
104 
105  Document (const Files::ConfigurationManager& configuration,
106  const std::vector< boost::filesystem::path >& files, bool new_,
107  const boost::filesystem::path& savePath, const boost::filesystem::path& resDir,
108  const Fallback::Map* fallback, ToUTF8::FromType encoding,
109  const std::vector<std::string>& blacklistedScripts,
110  bool fsStrict, const Files::PathContainer& dataPaths, const std::vector<std::string>& archives);
111 
112  ~Document();
113 
114  QUndoStack& getUndoStack();
115 
116  int getState() const;
117 
118  const boost::filesystem::path& getSavePath() const;
119 
120  const boost::filesystem::path& getProjectPath() const;
121 
122  const std::vector<boost::filesystem::path>& getContentFiles() const;
125 
126  bool isNew() const;
128 
129  void save();
130 
132 
134 
135  void runSearch (const CSMWorld::UniversalId& searchId, const CSMTools::Search& search);
136 
137  void runMerge (std::unique_ptr<CSMDoc::Document> target);
138 
139  void abortOperation (int type);
140 
141  const CSMWorld::Data& getData() const;
142 
144 
147 
148  bool isBlacklisted (const CSMWorld::UniversalId& id) const;
149 
150  void startRunning (const std::string& profile,
151  const std::string& startupInstruction = "");
152 
153  void stopRunning();
154 
155  QTextDocument *getRunLog();
156 
158 
159  void flagAsDirty();
160 
161  signals:
162 
163  void stateChanged (int state, CSMDoc::Document *document);
164 
165  void progress (int current, int max, int type, int threads, CSMDoc::Document *document);
166 
169  void mergeDone (CSMDoc::Document *document);
170 
171  void operationDone (int type, bool failed);
172 
173  private slots:
174 
175  void modificationStateChanged (bool clean);
176 
177  void reportMessage (const CSMDoc::Message& message, int type);
178 
179  void operationDone2 (int type, bool failed);
180 
181  void runStateChanged();
182 
183  public slots:
184 
185  void progress (int current, int max, int type);
186  };
187 }
188 
189 #endif
const std::vector< boost::filesystem::path > & getContentFiles() const
Definition: document.cpp:377
void message(CodeContainer &code, Literals &literals, const std::string &message, int buttons)
Definition: generator.cpp:537
CSMWorld::Data mData
Definition: document.hpp:66
ID blacklist sorted by UniversalId type.
Definition: blacklist.hpp:13
CSMWorld::UniversalId verify(const CSMWorld::UniversalId &reportId=CSMWorld::UniversalId())
Definition: document.cpp:398
void mergeDone(CSMDoc::Document *document)
QUndoStack mUndoStack
Definition: document.hpp:81
std::vector< boost::filesystem::path > mContentFiles
Definition: document.hpp:64
void abortOperation(int type)
Definition: document.cpp:423
bool mDirty
Definition: document.hpp:75
Creates and stores all ID completers.
Definition: idcompletionmanager.hpp:18
static const struct @8 signals[]
contains settings imported from the Morrowind INI file.
Definition: fallback.hpp:12
Definition: resourcesmanager.hpp:16
const boost::filesystem::path & getProjectPath() const
Definition: document.cpp:372
Definition: saving.hpp:15
Definition: messages.hpp:13
Definition: configurationmanager.hpp:20
boost::filesystem::path mResDir
Definition: document.hpp:71
Definition: loadgmst.hpp:19
void addOptionalGlobals()
Definition: document.cpp:78
void runMerge(std::unique_ptr< CSMDoc::Document > target)
Definition: document.cpp:417
Definition: reportmodel.hpp:15
Definition: loadglob.hpp:18
void addOptionalGmst(const ESM::GameSetting &gmst)
Definition: document.cpp:115
~Document()
Definition: document.cpp:339
void addOptionalGmsts()
Definition: document.cpp:47
MWWorld::Ptr searchId(MWWorld::CellRefList< T > &list, const std::string &id, MWWorld::ContainerStore *store)
Definition: containerstore.cpp:43
void operationDone(int type, bool failed)
Blacklist mBlacklist
Definition: document.hpp:73
void flagAsDirty()
Definition: document.cpp:524
CSMWorld::UniversalId newSearch()
Definition: document.cpp:406
Saving mSavingOperation
Definition: document.hpp:69
CSMTools::ReportModel * getReport(const CSMWorld::UniversalId &id)
The ownership of the returned report is not transferred.
Definition: document.cpp:460
void progress(int current, int max, int type, int threads, CSMDoc::Document *document)
Document & operator=(const Document &)
boost::filesystem::path mSavePath
Definition: document.hpp:63
bool mNew
Definition: document.hpp:65
Definition: data.hpp:80
Document(const Document &)
void startRunning(const std::string &profile, const std::string &startupInstruction="")
Definition: document.cpp:471
void createBase()
Definition: document.cpp:148
FromType
Definition: to_utf8.hpp:11
bool isNew() const
Is this a newly created content file?
Definition: document.cpp:382
Definition: loadmgef.hpp:13
int getState() const
Definition: document.cpp:348
void addGmsts()
Definition: document.cpp:17
void reportMessage(const CSMDoc::Message &message, int type)
Definition: document.cpp:436
Definition: document.hpp:57
QTextDocument * getRunLog()
Definition: document.cpp:504
void addOptionalGlobal(const ESM::Global &global)
Definition: document.cpp:126
void operationDone2(int type, bool failed)
Definition: document.cpp:442
CSMWorld::IdCompletionManager & getIdCompletionManager()
Definition: document.cpp:519
const CSMWorld::Data & getData() const
Definition: document.cpp:450
CSMTools::Tools mTools
Definition: document.hpp:67
void stateChanged(int state, CSMDoc::Document *document)
void runSearch(const CSMWorld::UniversalId &searchId, const CSMTools::Search &search)
Definition: document.cpp:411
const Fallback::Map * mFallbackMap
Definition: document.hpp:72
Runner mRunner
Definition: document.hpp:74
CSMWorld::IdCompletionManager mIdCompletionManager
Definition: document.hpp:77
Definition: tools.hpp:34
QUndoStack & getUndoStack()
Definition: document.cpp:343
Definition: runner.hpp:21
OperationHolder mSaving
Definition: document.hpp:70
The main class responsible for loading files from a virtual file system.
Definition: manager.hpp:20
bool isBlacklisted(const CSMWorld::UniversalId &id) const
Definition: document.cpp:465
void stopRunning()
Definition: document.cpp:499
void modificationStateChanged(bool clean)
Definition: document.cpp:431
void runStateChanged()
Definition: document.cpp:509
Definition: operationholder.hpp:18
Definition: search.hpp:26
std::vector< boost::filesystem::path > PathContainer
Definition: gamesettings.hpp:14
const boost::filesystem::path & getSavePath() const
Definition: document.cpp:367
void addOptionalMagicEffect(const ESM::MagicEffect &effect)
Definition: document.cpp:137
void addOptionalMagicEffects()
Definition: document.cpp:102
boost::filesystem::path mProjectPath
Definition: document.hpp:68
void save()
Definition: document.cpp:387
Definition: universalid.hpp:12