mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-21 06:23:53 +00:00
Merge branch 'report'
This commit is contained in:
commit
0649373d2e
48 changed files with 450 additions and 176 deletions
|
@ -11,7 +11,7 @@ opencs_units (model/doc
|
||||||
)
|
)
|
||||||
|
|
||||||
opencs_units_noqt (model/doc
|
opencs_units_noqt (model/doc
|
||||||
stage savingstate savingstages blacklist
|
stage savingstate savingstages blacklist messages
|
||||||
)
|
)
|
||||||
|
|
||||||
opencs_hdrs_noqt (model/doc
|
opencs_hdrs_noqt (model/doc
|
||||||
|
@ -92,7 +92,7 @@ opencs_hdrs_noqt (view/render
|
||||||
|
|
||||||
|
|
||||||
opencs_units (view/tools
|
opencs_units (view/tools
|
||||||
reportsubview
|
reportsubview reporttable
|
||||||
)
|
)
|
||||||
|
|
||||||
opencs_units_noqt (view/tools
|
opencs_units_noqt (view/tools
|
||||||
|
|
|
@ -2301,8 +2301,8 @@ CSMDoc::Document::Document (const Files::ConfigurationManager& configuration,
|
||||||
connect (&mSaving, SIGNAL (done (int, bool)), this, SLOT (operationDone (int, bool)));
|
connect (&mSaving, SIGNAL (done (int, bool)), this, SLOT (operationDone (int, bool)));
|
||||||
|
|
||||||
connect (
|
connect (
|
||||||
&mSaving, SIGNAL (reportMessage (const CSMWorld::UniversalId&, const std::string&, int)),
|
&mSaving, SIGNAL (reportMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)),
|
||||||
this, SLOT (reportMessage (const CSMWorld::UniversalId&, const std::string&, int)));
|
this, SLOT (reportMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)));
|
||||||
|
|
||||||
connect (&mRunner, SIGNAL (runStateChanged()), this, SLOT (runStateChanged()));
|
connect (&mRunner, SIGNAL (runStateChanged()), this, SLOT (runStateChanged()));
|
||||||
}
|
}
|
||||||
|
@ -2387,7 +2387,7 @@ void CSMDoc::Document::modificationStateChanged (bool clean)
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMDoc::Document::reportMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
void CSMDoc::Document::reportMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
int type)
|
const std::string& hint, int type)
|
||||||
{
|
{
|
||||||
/// \todo find a better way to get these messages to the user.
|
/// \todo find a better way to get these messages to the user.
|
||||||
std::cout << message << std::endl;
|
std::cout << message << std::endl;
|
||||||
|
|
|
@ -149,7 +149,7 @@ namespace CSMDoc
|
||||||
void modificationStateChanged (bool clean);
|
void modificationStateChanged (bool clean);
|
||||||
|
|
||||||
void reportMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
void reportMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
int type);
|
const std::string& hint, int type);
|
||||||
|
|
||||||
void operationDone (int type, bool failed);
|
void operationDone (int type, bool failed);
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ void CSMDoc::Loader::load()
|
||||||
{
|
{
|
||||||
if (iter->second.mRecordsLeft)
|
if (iter->second.mRecordsLeft)
|
||||||
{
|
{
|
||||||
CSMDoc::Stage::Messages messages;
|
CSMDoc::Messages messages;
|
||||||
for (int i=0; i<batchingSize; ++i) // do not flood the system with update signals
|
for (int i=0; i<batchingSize; ++i) // do not flood the system with update signals
|
||||||
if (document->getData().continueLoading (messages))
|
if (document->getData().continueLoading (messages))
|
||||||
{
|
{
|
||||||
|
@ -65,11 +65,11 @@ void CSMDoc::Loader::load()
|
||||||
CSMWorld::UniversalId log (CSMWorld::UniversalId::Type_LoadErrorLog, 0);
|
CSMWorld::UniversalId log (CSMWorld::UniversalId::Type_LoadErrorLog, 0);
|
||||||
|
|
||||||
{ // silence a g++ warning
|
{ // silence a g++ warning
|
||||||
for (CSMDoc::Stage::Messages::const_iterator iter (messages.begin());
|
for (CSMDoc::Messages::Iterator iter (messages.begin());
|
||||||
iter!=messages.end(); ++iter)
|
iter!=messages.end(); ++iter)
|
||||||
{
|
{
|
||||||
document->getReport (log)->add (iter->first, iter->second);
|
document->getReport (log)->add (iter->mId, iter->mMessage);
|
||||||
emit loadMessage (document, iter->second);
|
emit loadMessage (document, iter->mMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
28
apps/opencs/model/doc/messages.cpp
Normal file
28
apps/opencs/model/doc/messages.cpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
#include "messages.hpp"
|
||||||
|
|
||||||
|
void CSMDoc::Messages::add (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
|
const std::string& hint)
|
||||||
|
{
|
||||||
|
Message data;
|
||||||
|
data.mId = id;
|
||||||
|
data.mMessage = message;
|
||||||
|
data.mHint = hint;
|
||||||
|
|
||||||
|
mMessages.push_back (data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSMDoc::Messages::push_back (const std::pair<CSMWorld::UniversalId, std::string>& data)
|
||||||
|
{
|
||||||
|
add (data.first, data.second);
|
||||||
|
}
|
||||||
|
|
||||||
|
CSMDoc::Messages::Iterator CSMDoc::Messages::begin() const
|
||||||
|
{
|
||||||
|
return mMessages.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
CSMDoc::Messages::Iterator CSMDoc::Messages::end() const
|
||||||
|
{
|
||||||
|
return mMessages.end();
|
||||||
|
}
|
44
apps/opencs/model/doc/messages.hpp
Normal file
44
apps/opencs/model/doc/messages.hpp
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#ifndef CSM_DOC_MESSAGES_H
|
||||||
|
#define CSM_DOC_MESSAGES_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "../world/universalid.hpp"
|
||||||
|
|
||||||
|
namespace CSMDoc
|
||||||
|
{
|
||||||
|
class Messages
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
struct Message
|
||||||
|
{
|
||||||
|
CSMWorld::UniversalId mId;
|
||||||
|
std::string mMessage;
|
||||||
|
std::string mHint;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef std::vector<Message> Collection;
|
||||||
|
|
||||||
|
typedef Collection::const_iterator Iterator;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
Collection mMessages;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
void add (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
|
const std::string& hint = "");
|
||||||
|
|
||||||
|
/// \deprecated Use add instead.
|
||||||
|
void push_back (const std::pair<CSMWorld::UniversalId, std::string>& data);
|
||||||
|
|
||||||
|
Iterator begin() const;
|
||||||
|
|
||||||
|
Iterator end() const;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -84,7 +84,7 @@ void CSMDoc::Operation::abort()
|
||||||
|
|
||||||
void CSMDoc::Operation::executeStage()
|
void CSMDoc::Operation::executeStage()
|
||||||
{
|
{
|
||||||
Stage::Messages messages;
|
Messages messages;
|
||||||
|
|
||||||
while (mCurrentStage!=mStages.end())
|
while (mCurrentStage!=mStages.end())
|
||||||
{
|
{
|
||||||
|
@ -101,7 +101,7 @@ void CSMDoc::Operation::executeStage()
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
emit reportMessage (CSMWorld::UniversalId(), e.what(), mType);
|
emit reportMessage (CSMWorld::UniversalId(), e.what(), "", mType);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,8 +112,8 @@ void CSMDoc::Operation::executeStage()
|
||||||
|
|
||||||
emit progress (mCurrentStepTotal, mTotalSteps ? mTotalSteps : 1, mType);
|
emit progress (mCurrentStepTotal, mTotalSteps ? mTotalSteps : 1, mType);
|
||||||
|
|
||||||
for (Stage::Messages::const_iterator iter (messages.begin()); iter!=messages.end(); ++iter)
|
for (Messages::Iterator iter (messages.begin()); iter!=messages.end(); ++iter)
|
||||||
emit reportMessage (iter->first, iter->second, mType);
|
emit reportMessage (iter->mId, iter->mMessage, iter->mHint, mType);
|
||||||
|
|
||||||
if (mCurrentStage==mStages.end())
|
if (mCurrentStage==mStages.end())
|
||||||
exit();
|
exit();
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace CSMDoc
|
||||||
void progress (int current, int max, int type);
|
void progress (int current, int max, int type);
|
||||||
|
|
||||||
void reportMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
void reportMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
int type);
|
const std::string& hint, int type);
|
||||||
|
|
||||||
void done (int type, bool failed);
|
void done (int type, bool failed);
|
||||||
|
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
|
|
||||||
#include "../world/universalid.hpp"
|
#include "../world/universalid.hpp"
|
||||||
|
|
||||||
|
#include "messages.hpp"
|
||||||
|
|
||||||
namespace CSMDoc
|
namespace CSMDoc
|
||||||
{
|
{
|
||||||
class Stage
|
class Stage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef std::vector<std::pair<CSMWorld::UniversalId, std::string> > Messages;
|
|
||||||
|
|
||||||
virtual ~Stage();
|
virtual ~Stage();
|
||||||
|
|
||||||
virtual int setup() = 0;
|
virtual int setup() = 0;
|
||||||
|
|
|
@ -17,7 +17,7 @@ int CSMTools::BirthsignCheckStage::setup()
|
||||||
return mBirthsigns.getSize();
|
return mBirthsigns.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::BirthsignCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::BirthsignCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::BirthSign>& record = mBirthsigns.getRecord (stage);
|
const CSMWorld::Record<ESM::BirthSign>& record = mBirthsigns.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ int CSMTools::BodyPartCheckStage::setup()
|
||||||
return mBodyParts.getSize();
|
return mBodyParts.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::BodyPartCheckStage::perform ( int stage, Messages &messages )
|
void CSMTools::BodyPartCheckStage::perform (int stage, CSMDoc::Messages &messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::BodyPart> &record = mBodyParts.getRecord(stage);
|
const CSMWorld::Record<ESM::BodyPart> &record = mBodyParts.getRecord(stage);
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform( int stage, Messages &messages );
|
virtual void perform( int stage, CSMDoc::Messages &messages );
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ int CSMTools::ClassCheckStage::setup()
|
||||||
return mClasses.getSize();
|
return mClasses.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ClassCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::ClassCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Class>& record = mClasses.getRecord (stage);
|
const CSMWorld::Record<ESM::Class>& record = mClasses.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ int CSMTools::FactionCheckStage::setup()
|
||||||
return mFactions.getSize();
|
return mFactions.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::FactionCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::FactionCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Faction>& record = mFactions.getRecord (stage);
|
const CSMWorld::Record<ESM::Faction>& record = mFactions.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,10 +15,9 @@ int CSMTools::MandatoryIdStage::setup()
|
||||||
return mIds.size();
|
return mIds.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::MandatoryIdStage::perform (int stage, Messages& messages)
|
void CSMTools::MandatoryIdStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
if (mIdCollection.searchId (mIds.at (stage))==-1 ||
|
if (mIdCollection.searchId (mIds.at (stage))==-1 ||
|
||||||
mIdCollection.getRecord (mIds.at (stage)).isDeleted())
|
mIdCollection.getRecord (mIds.at (stage)).isDeleted())
|
||||||
messages.push_back (std::make_pair (mCollectionId,
|
messages.add (mCollectionId, "Missing mandatory record: " + mIds.at (stage));
|
||||||
"Missing mandatory record: " + mIds.at (stage)));
|
|
||||||
}
|
}
|
|
@ -30,7 +30,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "../world/universalid.hpp"
|
#include "../world/universalid.hpp"
|
||||||
|
|
||||||
void CSMTools::RaceCheckStage::performPerRecord (int stage, Messages& messages)
|
void CSMTools::RaceCheckStage::performPerRecord (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Race>& record = mRaces.getRecord (stage);
|
const CSMWorld::Record<ESM::Race>& record = mRaces.getRecord (stage);
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ void CSMTools::RaceCheckStage::performPerRecord (int stage, Messages& messages)
|
||||||
/// \todo check data members that can't be edited in the table view
|
/// \todo check data members that can't be edited in the table view
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::RaceCheckStage::performFinal (Messages& messages)
|
void CSMTools::RaceCheckStage::performFinal (CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
CSMWorld::UniversalId id (CSMWorld::UniversalId::Type_Races);
|
CSMWorld::UniversalId id (CSMWorld::UniversalId::Type_Races);
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ int CSMTools::RaceCheckStage::setup()
|
||||||
return mRaces.getSize()+1;
|
return mRaces.getSize()+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::RaceCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::RaceCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
if (stage==mRaces.getSize())
|
if (stage==mRaces.getSize())
|
||||||
performFinal (messages);
|
performFinal (messages);
|
||||||
|
|
|
@ -15,9 +15,9 @@ namespace CSMTools
|
||||||
const CSMWorld::IdCollection<ESM::Race>& mRaces;
|
const CSMWorld::IdCollection<ESM::Race>& mRaces;
|
||||||
bool mPlayable;
|
bool mPlayable;
|
||||||
|
|
||||||
void performPerRecord (int stage, Messages& messages);
|
void performPerRecord (int stage, CSMDoc::Messages& messages);
|
||||||
|
|
||||||
void performFinal (Messages& messages);
|
void performFinal (CSMDoc::Messages& messages);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ CSMTools::ReferenceableCheckStage::ReferenceableCheckStage(
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::ReferenceableCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
//Checks for books, than, when stage is above mBooksSize goes to other checks, with (stage - PrevSum) as stage.
|
//Checks for books, than, when stage is above mBooksSize goes to other checks, with (stage - PrevSum) as stage.
|
||||||
const int bookSize(mReferencables.getBooks().getSize());
|
const int bookSize(mReferencables.getBooks().getSize());
|
||||||
|
@ -232,7 +232,7 @@ int CSMTools::ReferenceableCheckStage::setup()
|
||||||
void CSMTools::ReferenceableCheckStage::bookCheck(
|
void CSMTools::ReferenceableCheckStage::bookCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Book >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Book >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ void CSMTools::ReferenceableCheckStage::bookCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::activatorCheck(
|
void CSMTools::ReferenceableCheckStage::activatorCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Activator >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Activator >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@ void CSMTools::ReferenceableCheckStage::activatorCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::potionCheck(
|
void CSMTools::ReferenceableCheckStage::potionCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Potion >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Potion >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -290,7 +290,7 @@ void CSMTools::ReferenceableCheckStage::potionCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::apparatusCheck(
|
void CSMTools::ReferenceableCheckStage::apparatusCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Apparatus >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Apparatus >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ void CSMTools::ReferenceableCheckStage::apparatusCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::armorCheck(
|
void CSMTools::ReferenceableCheckStage::armorCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Armor >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Armor >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ void CSMTools::ReferenceableCheckStage::armorCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::clothingCheck(
|
void CSMTools::ReferenceableCheckStage::clothingCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Clothing >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Clothing >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -353,7 +353,7 @@ void CSMTools::ReferenceableCheckStage::clothingCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::containerCheck(
|
void CSMTools::ReferenceableCheckStage::containerCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Container >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Container >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ void CSMTools::ReferenceableCheckStage::containerCheck(
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::creatureCheck (
|
void CSMTools::ReferenceableCheckStage::creatureCheck (
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::Creature >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::Creature >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -448,7 +448,7 @@ void CSMTools::ReferenceableCheckStage::creatureCheck (
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::doorCheck(
|
void CSMTools::ReferenceableCheckStage::doorCheck(
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::Door >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::Door >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -469,7 +469,7 @@ void CSMTools::ReferenceableCheckStage::doorCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::ingredientCheck(
|
void CSMTools::ReferenceableCheckStage::ingredientCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Ingredient >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Ingredient >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -487,7 +487,7 @@ void CSMTools::ReferenceableCheckStage::ingredientCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::creaturesLevListCheck(
|
void CSMTools::ReferenceableCheckStage::creaturesLevListCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::CreatureLevList >& records,
|
const CSMWorld::RefIdDataContainer< ESM::CreatureLevList >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -505,7 +505,7 @@ void CSMTools::ReferenceableCheckStage::creaturesLevListCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::itemLevelledListCheck(
|
void CSMTools::ReferenceableCheckStage::itemLevelledListCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::ItemLevList >& records,
|
const CSMWorld::RefIdDataContainer< ESM::ItemLevList >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -522,7 +522,7 @@ void CSMTools::ReferenceableCheckStage::itemLevelledListCheck(
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::lightCheck(
|
void CSMTools::ReferenceableCheckStage::lightCheck(
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::Light >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::Light >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -547,7 +547,7 @@ void CSMTools::ReferenceableCheckStage::lightCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::lockpickCheck(
|
void CSMTools::ReferenceableCheckStage::lockpickCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Lockpick >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Lockpick >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -567,7 +567,7 @@ void CSMTools::ReferenceableCheckStage::lockpickCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::miscCheck(
|
void CSMTools::ReferenceableCheckStage::miscCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Miscellaneous >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Miscellaneous >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -584,7 +584,7 @@ void CSMTools::ReferenceableCheckStage::miscCheck(
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::npcCheck (
|
void CSMTools::ReferenceableCheckStage::npcCheck (
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::NPC >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::NPC >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -701,7 +701,7 @@ void CSMTools::ReferenceableCheckStage::npcCheck (
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::weaponCheck(
|
void CSMTools::ReferenceableCheckStage::weaponCheck(
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::Weapon >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::Weapon >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord (stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord (stage);
|
||||||
|
|
||||||
|
@ -778,7 +778,7 @@ void CSMTools::ReferenceableCheckStage::weaponCheck(
|
||||||
void CSMTools::ReferenceableCheckStage::probeCheck(
|
void CSMTools::ReferenceableCheckStage::probeCheck(
|
||||||
int stage,
|
int stage,
|
||||||
const CSMWorld::RefIdDataContainer< ESM::Probe >& records,
|
const CSMWorld::RefIdDataContainer< ESM::Probe >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord(stage);
|
||||||
|
|
||||||
|
@ -796,7 +796,7 @@ void CSMTools::ReferenceableCheckStage::probeCheck(
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::repairCheck (
|
void CSMTools::ReferenceableCheckStage::repairCheck (
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::Repair >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::Repair >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord (stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord (stage);
|
||||||
|
|
||||||
|
@ -812,7 +812,7 @@ void CSMTools::ReferenceableCheckStage::repairCheck (
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::staticCheck (
|
void CSMTools::ReferenceableCheckStage::staticCheck (
|
||||||
int stage, const CSMWorld::RefIdDataContainer< ESM::Static >& records,
|
int stage, const CSMWorld::RefIdDataContainer< ESM::Static >& records,
|
||||||
Messages& messages)
|
CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::RecordBase& baseRecord = records.getRecord (stage);
|
const CSMWorld::RecordBase& baseRecord = records.getRecord (stage);
|
||||||
|
|
||||||
|
@ -828,7 +828,7 @@ void CSMTools::ReferenceableCheckStage::staticCheck (
|
||||||
|
|
||||||
//final check
|
//final check
|
||||||
|
|
||||||
void CSMTools::ReferenceableCheckStage::finalCheck (Messages& messages)
|
void CSMTools::ReferenceableCheckStage::finalCheck (CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
if (!mPlayerPresent)
|
if (!mPlayerPresent)
|
||||||
messages.push_back (std::make_pair (CSMWorld::UniversalId::Type_Referenceables,
|
messages.push_back (std::make_pair (CSMWorld::UniversalId::Type_Referenceables,
|
||||||
|
@ -839,7 +839,7 @@ void CSMTools::ReferenceableCheckStage::finalCheck (Messages& messages)
|
||||||
//Templates begins here
|
//Templates begins here
|
||||||
|
|
||||||
template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemCheck (
|
template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemCheck (
|
||||||
const Item& someItem, Messages& messages, const std::string& someID, bool enchantable)
|
const Item& someItem, CSMDoc::Messages& messages, const std::string& someID, bool enchantable)
|
||||||
{
|
{
|
||||||
if (someItem.mName.empty())
|
if (someItem.mName.empty())
|
||||||
messages.push_back (std::make_pair (someID, someItem.mId + " has an empty name"));
|
messages.push_back (std::make_pair (someID, someItem.mId + " has an empty name"));
|
||||||
|
@ -865,7 +865,7 @@ template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemChe
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemCheck (
|
template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemCheck (
|
||||||
const Item& someItem, Messages& messages, const std::string& someID)
|
const Item& someItem, CSMDoc::Messages& messages, const std::string& someID)
|
||||||
{
|
{
|
||||||
if (someItem.mName.empty())
|
if (someItem.mName.empty())
|
||||||
messages.push_back (std::make_pair (someID, someItem.mId + " has an empty name"));
|
messages.push_back (std::make_pair (someID, someItem.mId + " has an empty name"));
|
||||||
|
@ -888,7 +888,7 @@ template<typename Item> void CSMTools::ReferenceableCheckStage::inventoryItemChe
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck (
|
template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck (
|
||||||
const Tool& someTool, Messages& messages, const std::string& someID, bool canBeBroken)
|
const Tool& someTool, CSMDoc::Messages& messages, const std::string& someID, bool canBeBroken)
|
||||||
{
|
{
|
||||||
if (someTool.mData.mQuality <= 0)
|
if (someTool.mData.mQuality <= 0)
|
||||||
messages.push_back (std::make_pair (someID, someTool.mId + " has non-positive quality"));
|
messages.push_back (std::make_pair (someID, someTool.mId + " has non-positive quality"));
|
||||||
|
@ -899,14 +899,14 @@ template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck (
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck (
|
template<typename Tool> void CSMTools::ReferenceableCheckStage::toolCheck (
|
||||||
const Tool& someTool, Messages& messages, const std::string& someID)
|
const Tool& someTool, CSMDoc::Messages& messages, const std::string& someID)
|
||||||
{
|
{
|
||||||
if (someTool.mData.mQuality <= 0)
|
if (someTool.mData.mQuality <= 0)
|
||||||
messages.push_back (std::make_pair (someID, someTool.mId + " has non-positive quality"));
|
messages.push_back (std::make_pair (someID, someTool.mId + " has non-positive quality"));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename List> void CSMTools::ReferenceableCheckStage::listCheck (
|
template<typename List> void CSMTools::ReferenceableCheckStage::listCheck (
|
||||||
const List& someList, Messages& messages, const std::string& someID)
|
const List& someList, CSMDoc::Messages& messages, const std::string& someID)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < someList.mList.size(); ++i)
|
for (unsigned i = 0; i < someList.mList.size(); ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,56 +17,56 @@ namespace CSMTools
|
||||||
const CSMWorld::IdCollection<ESM::Class>& classes,
|
const CSMWorld::IdCollection<ESM::Class>& classes,
|
||||||
const CSMWorld::IdCollection<ESM::Faction>& factions);
|
const CSMWorld::IdCollection<ESM::Faction>& factions);
|
||||||
|
|
||||||
virtual void perform(int stage, Messages& messages);
|
virtual void perform(int stage, CSMDoc::Messages& messages);
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//CONCRETE CHECKS
|
//CONCRETE CHECKS
|
||||||
void bookCheck(int stage, const CSMWorld::RefIdDataContainer< ESM::Book >& records, Messages& messages);
|
void bookCheck(int stage, const CSMWorld::RefIdDataContainer< ESM::Book >& records, CSMDoc::Messages& messages);
|
||||||
void activatorCheck(int stage, const CSMWorld::RefIdDataContainer< ESM::Activator >& records, Messages& messages);
|
void activatorCheck(int stage, const CSMWorld::RefIdDataContainer< ESM::Activator >& records, CSMDoc::Messages& messages);
|
||||||
void potionCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Potion>& records, Messages& messages);
|
void potionCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Potion>& records, CSMDoc::Messages& messages);
|
||||||
void apparatusCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Apparatus>& records, Messages& messages);
|
void apparatusCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Apparatus>& records, CSMDoc::Messages& messages);
|
||||||
void armorCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Armor>& records, Messages& messages);
|
void armorCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Armor>& records, CSMDoc::Messages& messages);
|
||||||
void clothingCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Clothing>& records, Messages& messages);
|
void clothingCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Clothing>& records, CSMDoc::Messages& messages);
|
||||||
void containerCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Container>& records, Messages& messages);
|
void containerCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Container>& records, CSMDoc::Messages& messages);
|
||||||
void creatureCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Creature>& records, Messages& messages);
|
void creatureCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Creature>& records, CSMDoc::Messages& messages);
|
||||||
void doorCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Door>& records, Messages& messages);
|
void doorCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Door>& records, CSMDoc::Messages& messages);
|
||||||
void ingredientCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Ingredient>& records, Messages& messages);
|
void ingredientCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Ingredient>& records, CSMDoc::Messages& messages);
|
||||||
void creaturesLevListCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::CreatureLevList>& records, Messages& messages);
|
void creaturesLevListCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::CreatureLevList>& records, CSMDoc::Messages& messages);
|
||||||
void itemLevelledListCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::ItemLevList>& records, Messages& messages);
|
void itemLevelledListCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::ItemLevList>& records, CSMDoc::Messages& messages);
|
||||||
void lightCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Light>& records, Messages& messages);
|
void lightCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Light>& records, CSMDoc::Messages& messages);
|
||||||
void lockpickCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Lockpick>& records, Messages& messages);
|
void lockpickCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Lockpick>& records, CSMDoc::Messages& messages);
|
||||||
void miscCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Miscellaneous>& records, Messages& messages);
|
void miscCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Miscellaneous>& records, CSMDoc::Messages& messages);
|
||||||
void npcCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::NPC>& records, Messages& messages);
|
void npcCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::NPC>& records, CSMDoc::Messages& messages);
|
||||||
void weaponCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Weapon>& records, Messages& messages);
|
void weaponCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Weapon>& records, CSMDoc::Messages& messages);
|
||||||
void probeCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Probe>& records, Messages& messages);
|
void probeCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Probe>& records, CSMDoc::Messages& messages);
|
||||||
void repairCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Repair>& records, Messages& messages);
|
void repairCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Repair>& records, CSMDoc::Messages& messages);
|
||||||
void staticCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Static>& records, Messages& messages);
|
void staticCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::Static>& records, CSMDoc::Messages& messages);
|
||||||
|
|
||||||
//FINAL CHECK
|
//FINAL CHECK
|
||||||
void finalCheck (Messages& messages);
|
void finalCheck (CSMDoc::Messages& messages);
|
||||||
|
|
||||||
//TEMPLATE CHECKS
|
//TEMPLATE CHECKS
|
||||||
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
||||||
Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID,
|
const std::string& someID,
|
||||||
bool enchantable); //for all enchantable items.
|
bool enchantable); //for all enchantable items.
|
||||||
|
|
||||||
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
template<typename ITEM> void inventoryItemCheck(const ITEM& someItem,
|
||||||
Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID); //for non-enchantable items.
|
const std::string& someID); //for non-enchantable items.
|
||||||
|
|
||||||
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
||||||
Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID,
|
const std::string& someID,
|
||||||
bool canbebroken); //for tools with uses.
|
bool canbebroken); //for tools with uses.
|
||||||
|
|
||||||
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
template<typename TOOL> void toolCheck(const TOOL& someTool,
|
||||||
Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID); //for tools without uses.
|
const std::string& someID); //for tools without uses.
|
||||||
|
|
||||||
template<typename LIST> void listCheck(const LIST& someList,
|
template<typename LIST> void listCheck(const LIST& someList,
|
||||||
Messages& messages,
|
CSMDoc::Messages& messages,
|
||||||
const std::string& someID);
|
const std::string& someID);
|
||||||
|
|
||||||
const CSMWorld::RefIdData& mReferencables;
|
const CSMWorld::RefIdData& mReferencables;
|
||||||
|
|
|
@ -17,7 +17,7 @@ int CSMTools::RegionCheckStage::setup()
|
||||||
return mRegions.getSize();
|
return mRegions.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::RegionCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::RegionCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Region>& record = mRegions.getRecord (stage);
|
const CSMWorld::Record<ESM::Region>& record = mRegions.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ int CSMTools::ReportModel::columnCount (const QModelIndex & parent) const
|
||||||
if (parent.isValid())
|
if (parent.isValid())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 2;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant CSMTools::ReportModel::data (const QModelIndex & index, int role) const
|
QVariant CSMTools::ReportModel::data (const QModelIndex & index, int role) const
|
||||||
|
@ -26,8 +26,11 @@ QVariant CSMTools::ReportModel::data (const QModelIndex & index, int role) const
|
||||||
|
|
||||||
if (index.column()==0)
|
if (index.column()==0)
|
||||||
return static_cast<int> (mRows.at (index.row()).first.getType());
|
return static_cast<int> (mRows.at (index.row()).first.getType());
|
||||||
else
|
|
||||||
return mRows.at (index.row()).second.c_str();
|
if (index.column()==1)
|
||||||
|
return QString::fromUtf8 (mRows.at (index.row()).second.first.c_str());
|
||||||
|
|
||||||
|
return QString::fromUtf8 (mRows.at (index.row()).second.second.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant CSMTools::ReportModel::headerData (int section, Qt::Orientation orientation, int role) const
|
QVariant CSMTools::ReportModel::headerData (int section, Qt::Orientation orientation, int role) const
|
||||||
|
@ -38,7 +41,13 @@ QVariant CSMTools::ReportModel::headerData (int section, Qt::Orientation orienta
|
||||||
if (orientation==Qt::Vertical)
|
if (orientation==Qt::Vertical)
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
return tr (section==0 ? "Type" : "Description");
|
if (section==0)
|
||||||
|
return "Type";
|
||||||
|
|
||||||
|
if (section==1)
|
||||||
|
return "Description";
|
||||||
|
|
||||||
|
return "Hint";
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CSMTools::ReportModel::removeRows (int row, int count, const QModelIndex& parent)
|
bool CSMTools::ReportModel::removeRows (int row, int count, const QModelIndex& parent)
|
||||||
|
@ -51,11 +60,12 @@ bool CSMTools::ReportModel::removeRows (int row, int count, const QModelIndex& p
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ReportModel::add (const CSMWorld::UniversalId& id, const std::string& message)
|
void CSMTools::ReportModel::add (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
|
const std::string& hint)
|
||||||
{
|
{
|
||||||
beginInsertRows (QModelIndex(), mRows.size(), mRows.size());
|
beginInsertRows (QModelIndex(), mRows.size(), mRows.size());
|
||||||
|
|
||||||
mRows.push_back (std::make_pair (id, message));
|
mRows.push_back (std::make_pair (id, std::make_pair (message, hint)));
|
||||||
|
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
|
@ -64,3 +74,8 @@ const CSMWorld::UniversalId& CSMTools::ReportModel::getUniversalId (int row) con
|
||||||
{
|
{
|
||||||
return mRows.at (row).first;
|
return mRows.at (row).first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CSMTools::ReportModel::getHint (int row) const
|
||||||
|
{
|
||||||
|
return mRows.at (row).second.second;
|
||||||
|
}
|
|
@ -14,7 +14,7 @@ namespace CSMTools
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
std::vector<std::pair<CSMWorld::UniversalId, std::string> > mRows;
|
std::vector<std::pair<CSMWorld::UniversalId, std::pair<std::string, std::string> > > mRows;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -28,9 +28,12 @@ namespace CSMTools
|
||||||
|
|
||||||
virtual bool removeRows (int row, int count, const QModelIndex& parent = QModelIndex());
|
virtual bool removeRows (int row, int count, const QModelIndex& parent = QModelIndex());
|
||||||
|
|
||||||
void add (const CSMWorld::UniversalId& id, const std::string& message);
|
void add (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
|
const std::string& hint = "");
|
||||||
|
|
||||||
const CSMWorld::UniversalId& getUniversalId (int row) const;
|
const CSMWorld::UniversalId& getUniversalId (int row) const;
|
||||||
|
|
||||||
|
std::string getHint (int row) const;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,11 @@ void CSMTools::ScriptCheckStage::report (const std::string& message, const Compi
|
||||||
<< ", line " << loc.mLine << ", column " << loc.mColumn
|
<< ", line " << loc.mLine << ", column " << loc.mColumn
|
||||||
<< " (" << loc.mLiteral << "): " << message;
|
<< " (" << loc.mLiteral << "): " << message;
|
||||||
|
|
||||||
mMessages->push_back (std::make_pair (id, stream.str()));
|
std::ostringstream hintStream;
|
||||||
|
|
||||||
|
hintStream << "l:" << loc.mLine << " " << loc.mColumn;
|
||||||
|
|
||||||
|
mMessages->add (id, stream.str(), hintStream.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ScriptCheckStage::report (const std::string& message, Type type)
|
void CSMTools::ScriptCheckStage::report (const std::string& message, Type type)
|
||||||
|
@ -58,7 +62,7 @@ int CSMTools::ScriptCheckStage::setup()
|
||||||
return mDocument.getData().getScripts().getSize();
|
return mDocument.getData().getScripts().getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::ScriptCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::ScriptCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
mId = mDocument.getData().getScripts().getId (stage);
|
mId = mDocument.getData().getScripts().getId (stage);
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace CSMTools
|
||||||
CSMWorld::ScriptContext mContext;
|
CSMWorld::ScriptContext mContext;
|
||||||
std::string mId;
|
std::string mId;
|
||||||
std::string mFile;
|
std::string mFile;
|
||||||
Messages *mMessages;
|
CSMDoc::Messages *mMessages;
|
||||||
|
|
||||||
virtual void report (const std::string& message, const Compiler::TokenLoc& loc, Type type);
|
virtual void report (const std::string& message, const Compiler::TokenLoc& loc, Type type);
|
||||||
///< Report error to the user.
|
///< Report error to the user.
|
||||||
|
@ -38,7 +38,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ int CSMTools::SkillCheckStage::setup()
|
||||||
return mSkills.getSize();
|
return mSkills.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::SkillCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::SkillCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Skill>& record = mSkills.getRecord (stage);
|
const CSMWorld::Record<ESM::Skill>& record = mSkills.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ int CSMTools::SoundCheckStage::setup()
|
||||||
return mSounds.getSize();
|
return mSounds.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::SoundCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::SoundCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Sound>& record = mSounds.getRecord (stage);
|
const CSMWorld::Record<ESM::Sound>& record = mSounds.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ int CSMTools::SpellCheckStage::setup()
|
||||||
return mSpells.getSize();
|
return mSpells.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::SpellCheckStage::perform (int stage, Messages& messages)
|
void CSMTools::SpellCheckStage::perform (int stage, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
const CSMWorld::Record<ESM::Spell>& record = mSpells.getRecord (stage);
|
const CSMWorld::Record<ESM::Spell>& record = mSpells.getRecord (stage);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace CSMTools
|
||||||
virtual int setup();
|
virtual int setup();
|
||||||
///< \return number of steps
|
///< \return number of steps
|
||||||
|
|
||||||
virtual void perform (int stage, Messages& messages);
|
virtual void perform (int stage, CSMDoc::Messages& messages);
|
||||||
///< Messages resulting from this tage will be appended to \a messages.
|
///< Messages resulting from this tage will be appended to \a messages.
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,8 +48,8 @@ CSMDoc::Operation *CSMTools::Tools::getVerifier()
|
||||||
connect (mVerifier, SIGNAL (progress (int, int, int)), this, SIGNAL (progress (int, int, int)));
|
connect (mVerifier, SIGNAL (progress (int, int, int)), this, SIGNAL (progress (int, int, int)));
|
||||||
connect (mVerifier, SIGNAL (done (int, bool)), this, SIGNAL (done (int, bool)));
|
connect (mVerifier, SIGNAL (done (int, bool)), this, SIGNAL (done (int, bool)));
|
||||||
connect (mVerifier,
|
connect (mVerifier,
|
||||||
SIGNAL (reportMessage (const CSMWorld::UniversalId&, const std::string&, int)),
|
SIGNAL (reportMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)),
|
||||||
this, SLOT (verifierMessage (const CSMWorld::UniversalId&, const std::string&, int)));
|
this, SLOT (verifierMessage (const CSMWorld::UniversalId&, const std::string&, const std::string&, int)));
|
||||||
|
|
||||||
std::vector<std::string> mandatoryIds; // I want C++11, damn it!
|
std::vector<std::string> mandatoryIds; // I want C++11, damn it!
|
||||||
mandatoryIds.push_back ("Day");
|
mandatoryIds.push_back ("Day");
|
||||||
|
@ -155,11 +155,11 @@ CSMTools::ReportModel *CSMTools::Tools::getReport (const CSMWorld::UniversalId&
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMTools::Tools::verifierMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
void CSMTools::Tools::verifierMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
int type)
|
const std::string& hint, int type)
|
||||||
{
|
{
|
||||||
std::map<int, int>::iterator iter = mActiveReports.find (type);
|
std::map<int, int>::iterator iter = mActiveReports.find (type);
|
||||||
|
|
||||||
if (iter!=mActiveReports.end())
|
if (iter!=mActiveReports.end())
|
||||||
mReports[iter->second]->add (id, message);
|
mReports[iter->second]->add (id, message, hint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace CSMTools
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void verifierMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
void verifierMessage (const CSMWorld::UniversalId& id, const std::string& message,
|
||||||
int type);
|
const std::string& hint, int type);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
|
|
|
@ -671,7 +671,7 @@ int CSMWorld::Data::startLoading (const boost::filesystem::path& path, bool base
|
||||||
return mReader->getRecordCount();
|
return mReader->getRecordCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CSMWorld::Data::continueLoading (CSMDoc::Stage::Messages& messages)
|
bool CSMWorld::Data::continueLoading (CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
if (!mReader)
|
if (!mReader)
|
||||||
throw std::logic_error ("can't continue loading, because no load has been started");
|
throw std::logic_error ("can't continue loading, because no load has been started");
|
||||||
|
@ -794,8 +794,8 @@ bool CSMWorld::Data::continueLoading (CSMDoc::Stage::Messages& messages)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
messages.push_back (std::make_pair (UniversalId::Type_None,
|
messages.add (UniversalId::Type_None,
|
||||||
"Trying to delete dialogue record " + id + " which does not exist"));
|
"Trying to delete dialogue record " + id + " which does not exist");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -811,8 +811,8 @@ bool CSMWorld::Data::continueLoading (CSMDoc::Stage::Messages& messages)
|
||||||
{
|
{
|
||||||
if (!mDialogue)
|
if (!mDialogue)
|
||||||
{
|
{
|
||||||
messages.push_back (std::make_pair (UniversalId::Type_None,
|
messages.add (UniversalId::Type_None,
|
||||||
"Found info record not following a dialogue record"));
|
"Found info record not following a dialogue record");
|
||||||
|
|
||||||
mReader->skipRecord();
|
mReader->skipRecord();
|
||||||
break;
|
break;
|
||||||
|
@ -855,8 +855,7 @@ bool CSMWorld::Data::continueLoading (CSMDoc::Stage::Messages& messages)
|
||||||
|
|
||||||
if (unhandledRecord)
|
if (unhandledRecord)
|
||||||
{
|
{
|
||||||
messages.push_back (std::make_pair (UniversalId::Type_None,
|
messages.add (UniversalId::Type_None, "Unsupported record type: " + n.toString());
|
||||||
"Unsupported record type: " + n.toString()));
|
|
||||||
|
|
||||||
mReader->skipRecord();
|
mReader->skipRecord();
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,7 +244,7 @@ namespace CSMWorld
|
||||||
///
|
///
|
||||||
///< \return estimated number of records
|
///< \return estimated number of records
|
||||||
|
|
||||||
bool continueLoading (CSMDoc::Stage::Messages& messages);
|
bool continueLoading (CSMDoc::Messages& messages);
|
||||||
///< \return Finished?
|
///< \return Finished?
|
||||||
|
|
||||||
bool hasId (const std::string& id) const;
|
bool hasId (const std::string& id) const;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#include "record.hpp"
|
#include "record.hpp"
|
||||||
|
|
||||||
void CSMWorld::RefCollection::load (ESM::ESMReader& reader, int cellIndex, bool base,
|
void CSMWorld::RefCollection::load (ESM::ESMReader& reader, int cellIndex, bool base,
|
||||||
std::map<ESM::RefNum, std::string>& cache, CSMDoc::Stage::Messages& messages)
|
std::map<ESM::RefNum, std::string>& cache, CSMDoc::Messages& messages)
|
||||||
{
|
{
|
||||||
Record<Cell> cell = mCells.getRecord (cellIndex);
|
Record<Cell> cell = mCells.getRecord (cellIndex);
|
||||||
|
|
||||||
|
@ -36,8 +36,7 @@ void CSMWorld::RefCollection::load (ESM::ESMReader& reader, int cellIndex, bool
|
||||||
CSMWorld::UniversalId id (CSMWorld::UniversalId::Type_Cell,
|
CSMWorld::UniversalId id (CSMWorld::UniversalId::Type_Cell,
|
||||||
mCells.getId (cellIndex));
|
mCells.getId (cellIndex));
|
||||||
|
|
||||||
messages.push_back (std::make_pair (id,
|
messages.add (id, "Attempt to delete a non-existing reference");
|
||||||
"Attempt to delete a non-existing reference"));
|
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace CSMWorld
|
||||||
|
|
||||||
void load (ESM::ESMReader& reader, int cellIndex, bool base,
|
void load (ESM::ESMReader& reader, int cellIndex, bool base,
|
||||||
std::map<ESM::RefNum, std::string>& cache,
|
std::map<ESM::RefNum, std::string>& cache,
|
||||||
CSMDoc::Stage::Messages& messages);
|
CSMDoc::Messages& messages);
|
||||||
///< Load a sequence of references.
|
///< Load a sequence of references.
|
||||||
|
|
||||||
std::string getNewId();
|
std::string getNewId();
|
||||||
|
|
|
@ -1,31 +1,15 @@
|
||||||
|
|
||||||
#include "reportsubview.hpp"
|
#include "reportsubview.hpp"
|
||||||
|
|
||||||
#include <QTableView>
|
#include "reporttable.hpp"
|
||||||
#include <QHeaderView>
|
|
||||||
|
|
||||||
#include "../../model/tools/reportmodel.hpp"
|
|
||||||
|
|
||||||
#include "../../view/world/idtypedelegate.hpp"
|
|
||||||
|
|
||||||
CSVTools::ReportSubView::ReportSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document)
|
CSVTools::ReportSubView::ReportSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document)
|
||||||
: CSVDoc::SubView (id), mModel (document.getReport (id))
|
: CSVDoc::SubView (id)
|
||||||
{
|
{
|
||||||
setWidget (mTable = new QTableView (this));
|
setWidget (mTable = new ReportTable (document, id, this));
|
||||||
mTable->setModel (mModel);
|
|
||||||
|
|
||||||
mTable->horizontalHeader()->setResizeMode (QHeaderView::Interactive);
|
connect (mTable, SIGNAL (editRequest (const CSMWorld::UniversalId&, const std::string&)),
|
||||||
mTable->verticalHeader()->hide();
|
SIGNAL (focusId (const CSMWorld::UniversalId&, const std::string&)));
|
||||||
mTable->setSortingEnabled (true);
|
|
||||||
mTable->setSelectionBehavior (QAbstractItemView::SelectRows);
|
|
||||||
mTable->setSelectionMode (QAbstractItemView::ExtendedSelection);
|
|
||||||
|
|
||||||
mIdTypeDelegate = CSVWorld::IdTypeDelegateFactory().makeDelegate (
|
|
||||||
document, this);
|
|
||||||
|
|
||||||
mTable->setItemDelegateForColumn (0, mIdTypeDelegate);
|
|
||||||
|
|
||||||
connect (mTable, SIGNAL (doubleClicked (const QModelIndex&)), this, SLOT (show (const QModelIndex&)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVTools::ReportSubView::setEditLock (bool locked)
|
void CSVTools::ReportSubView::setEditLock (bool locked)
|
||||||
|
@ -33,13 +17,7 @@ void CSVTools::ReportSubView::setEditLock (bool locked)
|
||||||
// ignored. We don't change document state anyway.
|
// ignored. We don't change document state anyway.
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVTools::ReportSubView::updateUserSetting
|
void CSVTools::ReportSubView::updateUserSetting (const QString &name, const QStringList &list)
|
||||||
(const QString &name, const QStringList &list)
|
|
||||||
{
|
{
|
||||||
mIdTypeDelegate->updateUserSetting (name, list);
|
mTable->updateUserSetting (name, list);
|
||||||
}
|
|
||||||
|
|
||||||
void CSVTools::ReportSubView::show (const QModelIndex& index)
|
|
||||||
{
|
|
||||||
focusId (mModel->getUniversalId (index.row()), "");
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,27 +11,15 @@ namespace CSMDoc
|
||||||
class Document;
|
class Document;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace CSMTools
|
|
||||||
{
|
|
||||||
class ReportModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace CSVWorld
|
|
||||||
{
|
|
||||||
class CommandDelegate;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace CSVTools
|
namespace CSVTools
|
||||||
{
|
{
|
||||||
class Table;
|
class ReportTable;
|
||||||
|
|
||||||
class ReportSubView : public CSVDoc::SubView
|
class ReportSubView : public CSVDoc::SubView
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
CSMTools::ReportModel *mModel;
|
ReportTable *mTable;
|
||||||
QTableView *mTable;
|
|
||||||
CSVWorld::CommandDelegate *mIdTypeDelegate;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -39,12 +27,7 @@ namespace CSVTools
|
||||||
|
|
||||||
virtual void setEditLock (bool locked);
|
virtual void setEditLock (bool locked);
|
||||||
|
|
||||||
virtual void updateUserSetting
|
virtual void updateUserSetting (const QString &, const QStringList &);
|
||||||
(const QString &, const QStringList &);
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
|
|
||||||
void show (const QModelIndex& index);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
136
apps/opencs/view/tools/reporttable.cpp
Normal file
136
apps/opencs/view/tools/reporttable.cpp
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
|
||||||
|
#include "reporttable.hpp"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
|
#include "../../model/tools/reportmodel.hpp"
|
||||||
|
|
||||||
|
#include "../../view/world/idtypedelegate.hpp"
|
||||||
|
|
||||||
|
void CSVTools::ReportTable::contextMenuEvent (QContextMenuEvent *event)
|
||||||
|
{
|
||||||
|
QModelIndexList selectedRows = selectionModel()->selectedRows();
|
||||||
|
|
||||||
|
// create context menu
|
||||||
|
QMenu menu (this);
|
||||||
|
|
||||||
|
if (!selectedRows.empty())
|
||||||
|
{
|
||||||
|
menu.addAction (mShowAction);
|
||||||
|
menu.addAction (mRemoveAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.exec (event->globalPos());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVTools::ReportTable::mouseMoveEvent (QMouseEvent *event)
|
||||||
|
{
|
||||||
|
if (event->buttons() & Qt::LeftButton)
|
||||||
|
startDrag (*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVTools::ReportTable::mouseDoubleClickEvent (QMouseEvent *event)
|
||||||
|
{
|
||||||
|
Qt::KeyboardModifiers modifiers =
|
||||||
|
event->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier);
|
||||||
|
|
||||||
|
QModelIndex index = currentIndex();
|
||||||
|
|
||||||
|
selectionModel()->select (index,
|
||||||
|
QItemSelectionModel::Clear | QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||||
|
|
||||||
|
switch (modifiers)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
|
||||||
|
event->accept();
|
||||||
|
showSelection();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::ShiftModifier:
|
||||||
|
|
||||||
|
event->accept();
|
||||||
|
removeSelection();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Qt::ControlModifier:
|
||||||
|
|
||||||
|
event->accept();
|
||||||
|
showSelection();
|
||||||
|
removeSelection();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CSVTools::ReportTable::ReportTable (CSMDoc::Document& document,
|
||||||
|
const CSMWorld::UniversalId& id, QWidget *parent)
|
||||||
|
: CSVWorld::DragRecordTable (document, parent), mModel (document.getReport (id))
|
||||||
|
{
|
||||||
|
horizontalHeader()->setResizeMode (QHeaderView::Interactive);
|
||||||
|
verticalHeader()->hide();
|
||||||
|
setSortingEnabled (true);
|
||||||
|
setSelectionBehavior (QAbstractItemView::SelectRows);
|
||||||
|
setSelectionMode (QAbstractItemView::ExtendedSelection);
|
||||||
|
|
||||||
|
setModel (mModel);
|
||||||
|
setColumnHidden (2, true);
|
||||||
|
|
||||||
|
mIdTypeDelegate = CSVWorld::IdTypeDelegateFactory().makeDelegate (
|
||||||
|
document, this);
|
||||||
|
|
||||||
|
setItemDelegateForColumn (0, mIdTypeDelegate);
|
||||||
|
|
||||||
|
mShowAction = new QAction (tr ("Show"), this);
|
||||||
|
connect (mShowAction, SIGNAL (triggered()), this, SLOT (showSelection()));
|
||||||
|
addAction (mShowAction);
|
||||||
|
|
||||||
|
mRemoveAction = new QAction (tr ("Remove from list"), this);
|
||||||
|
connect (mRemoveAction, SIGNAL (triggered()), this, SLOT (removeSelection()));
|
||||||
|
addAction (mRemoveAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<CSMWorld::UniversalId> CSVTools::ReportTable::getDraggedRecords() const
|
||||||
|
{
|
||||||
|
std::vector<CSMWorld::UniversalId> ids;
|
||||||
|
|
||||||
|
QModelIndexList selectedRows = selectionModel()->selectedRows();
|
||||||
|
|
||||||
|
for (QModelIndexList::const_iterator iter (selectedRows.begin()); iter!=selectedRows.end();
|
||||||
|
++iter)
|
||||||
|
{
|
||||||
|
ids.push_back (mModel->getUniversalId (iter->row()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVTools::ReportTable::updateUserSetting (const QString& name, const QStringList& list)
|
||||||
|
{
|
||||||
|
mIdTypeDelegate->updateUserSetting (name, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVTools::ReportTable::showSelection()
|
||||||
|
{
|
||||||
|
QModelIndexList selectedRows = selectionModel()->selectedRows();
|
||||||
|
|
||||||
|
for (QModelIndexList::const_iterator iter (selectedRows.begin()); iter!=selectedRows.end();
|
||||||
|
++iter)
|
||||||
|
emit editRequest (mModel->getUniversalId (iter->row()), mModel->getHint (iter->row()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVTools::ReportTable::removeSelection()
|
||||||
|
{
|
||||||
|
QModelIndexList selectedRows = selectionModel()->selectedRows();
|
||||||
|
|
||||||
|
std::reverse (selectedRows.begin(), selectedRows.end());
|
||||||
|
|
||||||
|
for (QModelIndexList::const_iterator iter (selectedRows.begin()); iter!=selectedRows.end();
|
||||||
|
++iter)
|
||||||
|
mModel->removeRows (iter->row(), 1);
|
||||||
|
|
||||||
|
selectionModel()->clear();
|
||||||
|
}
|
58
apps/opencs/view/tools/reporttable.hpp
Normal file
58
apps/opencs/view/tools/reporttable.hpp
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#ifndef CSV_TOOLS_REPORTTABLE_H
|
||||||
|
#define CSV_TOOLS_REPORTTABLE_H
|
||||||
|
|
||||||
|
#include "../world/dragrecordtable.hpp"
|
||||||
|
|
||||||
|
class QAction;
|
||||||
|
|
||||||
|
namespace CSMTools
|
||||||
|
{
|
||||||
|
class ReportModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace CSVWorld
|
||||||
|
{
|
||||||
|
class CommandDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace CSVTools
|
||||||
|
{
|
||||||
|
class ReportTable : public CSVWorld::DragRecordTable
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
CSMTools::ReportModel *mModel;
|
||||||
|
CSVWorld::CommandDelegate *mIdTypeDelegate;
|
||||||
|
QAction *mShowAction;
|
||||||
|
QAction *mRemoveAction;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void contextMenuEvent (QContextMenuEvent *event);
|
||||||
|
|
||||||
|
void mouseMoveEvent (QMouseEvent *event);
|
||||||
|
|
||||||
|
virtual void mouseDoubleClickEvent (QMouseEvent *event);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
ReportTable (CSMDoc::Document& document, const CSMWorld::UniversalId& id,
|
||||||
|
QWidget *parent = 0);
|
||||||
|
|
||||||
|
virtual std::vector<CSMWorld::UniversalId> getDraggedRecords() const;
|
||||||
|
|
||||||
|
void updateUserSetting (const QString& name, const QStringList& list);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
|
||||||
|
void showSelection();
|
||||||
|
|
||||||
|
void removeSelection();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
|
||||||
|
void editRequest (const CSMWorld::UniversalId& id, const std::string& hint);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -47,6 +47,32 @@ void CSVWorld::ScriptSubView::setEditLock (bool locked)
|
||||||
mEditor->setReadOnly (locked);
|
mEditor->setReadOnly (locked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVWorld::ScriptSubView::useHint (const std::string& hint)
|
||||||
|
{
|
||||||
|
if (hint.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (hint[0]=='l')
|
||||||
|
{
|
||||||
|
std::istringstream stream (hint.c_str()+1);
|
||||||
|
|
||||||
|
char ignore;
|
||||||
|
int line;
|
||||||
|
int column;
|
||||||
|
|
||||||
|
if (stream >> ignore >> line >> column)
|
||||||
|
{
|
||||||
|
QTextCursor cursor = mEditor->textCursor();
|
||||||
|
|
||||||
|
cursor.movePosition (QTextCursor::Start);
|
||||||
|
if (cursor.movePosition (QTextCursor::Down, QTextCursor::MoveAnchor, line))
|
||||||
|
cursor.movePosition (QTextCursor::Right, QTextCursor::MoveAnchor, column);
|
||||||
|
|
||||||
|
mEditor->setTextCursor (cursor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CSVWorld::ScriptSubView::textChanged()
|
void CSVWorld::ScriptSubView::textChanged()
|
||||||
{
|
{
|
||||||
if (mEditor->isChangeLocked())
|
if (mEditor->isChangeLocked())
|
||||||
|
|
|
@ -34,6 +34,8 @@ namespace CSVWorld
|
||||||
|
|
||||||
virtual void setEditLock (bool locked);
|
virtual void setEditLock (bool locked);
|
||||||
|
|
||||||
|
virtual void useHint (const std::string& hint);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void textChanged();
|
void textChanged();
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Compiler
|
||||||
mStream << "warning ";
|
mStream << "warning ";
|
||||||
|
|
||||||
mStream
|
mStream
|
||||||
<< "line " << loc.mLine << ", column " << loc.mColumn
|
<< "line " << loc.mLine+1 << ", column " << loc.mColumn+1
|
||||||
<< " (" << loc.mLiteral << ")" << std::endl
|
<< " (" << loc.mLiteral << ")" << std::endl
|
||||||
<< " " << message << std::endl;
|
<< " " << message << std::endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue