forked from mirror/openmw-tes3mp
added dialogue sub view (editing of a single record; not functional yet); fixed a bug in Universal to string conversion
This commit is contained in:
parent
02184526e6
commit
3d4c8c5444
12 changed files with 92 additions and 4 deletions
|
@ -14,6 +14,7 @@ set (OPENCS_SRC
|
||||||
view/doc/subview.cpp
|
view/doc/subview.cpp
|
||||||
|
|
||||||
view/world/table.cpp view/world/tablesubview.cpp view/world/subviews.cpp view/world/util.cpp
|
view/world/table.cpp view/world/tablesubview.cpp view/world/subviews.cpp view/world/util.cpp
|
||||||
|
view/world/dialoguesubview.cpp
|
||||||
|
|
||||||
view/tools/reportsubview.cpp view/tools/subviews.cpp
|
view/tools/reportsubview.cpp view/tools/subviews.cpp
|
||||||
)
|
)
|
||||||
|
@ -34,6 +35,7 @@ set (OPENCS_HDR
|
||||||
view/doc/subview.hpp view/doc/subviewfactoryimp.hpp
|
view/doc/subview.hpp view/doc/subviewfactoryimp.hpp
|
||||||
|
|
||||||
view/world/table.hpp view/world/tablesubview.hpp view/world/subviews.hpp view/world/util.hpp
|
view/world/table.hpp view/world/tablesubview.hpp view/world/subviews.hpp view/world/util.hpp
|
||||||
|
view/world/dialoguesubview.hpp
|
||||||
|
|
||||||
view/tools/reportsubview.hpp view/tools/subviews.hpp
|
view/tools/reportsubview.hpp view/tools/subviews.hpp
|
||||||
)
|
)
|
||||||
|
|
|
@ -67,6 +67,24 @@ namespace CSMWorld
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename ESXRecordT>
|
||||||
|
struct FixedRecordTypeColumn : public Column<ESXRecordT>
|
||||||
|
{
|
||||||
|
int mType;
|
||||||
|
|
||||||
|
FixedRecordTypeColumn (int type) : Column<ESXRecordT> ("Type"), mType (type) {}
|
||||||
|
|
||||||
|
virtual QVariant get (const Record<ESXRecordT>& record) const
|
||||||
|
{
|
||||||
|
return mType;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual bool isEditable() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -14,6 +14,7 @@ CSMWorld::Data::Data()
|
||||||
{
|
{
|
||||||
mGlobals.addColumn (new StringIdColumn<ESM::Global>);
|
mGlobals.addColumn (new StringIdColumn<ESM::Global>);
|
||||||
mGlobals.addColumn (new RecordStateColumn<ESM::Global>);
|
mGlobals.addColumn (new RecordStateColumn<ESM::Global>);
|
||||||
|
mGlobals.addColumn (new FixedRecordTypeColumn<ESM::Global> (UniversalId::Type_Global));
|
||||||
mGlobals.addColumn (new FloatValueColumn<ESM::Global>);
|
mGlobals.addColumn (new FloatValueColumn<ESM::Global>);
|
||||||
|
|
||||||
mModels.insert (std::make_pair (
|
mModels.insert (std::make_pair (
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace
|
||||||
|
|
||||||
static const TypeData sIdArg[] =
|
static const TypeData sIdArg[] =
|
||||||
{
|
{
|
||||||
|
{ CSMWorld::UniversalId::Class_Record, CSMWorld::UniversalId::Type_Global, "Global Variable" },
|
||||||
|
|
||||||
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0 } // end marker
|
{ CSMWorld::UniversalId::Class_None, CSMWorld::UniversalId::Type_None, 0 } // end marker
|
||||||
};
|
};
|
||||||
|
@ -208,8 +209,8 @@ std::string CSMWorld::UniversalId::toString() const
|
||||||
switch (mArgumentType)
|
switch (mArgumentType)
|
||||||
{
|
{
|
||||||
case ArgumentType_None: break;
|
case ArgumentType_None: break;
|
||||||
case ArgumentType_Id: stream << ": " << mId;
|
case ArgumentType_Id: stream << ": " << mId; break;
|
||||||
case ArgumentType_Index: stream << ": " << mIndex;
|
case ArgumentType_Index: stream << ": " << mIndex; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return stream.str();
|
return stream.str();
|
||||||
|
|
|
@ -36,6 +36,8 @@ namespace CSMWorld
|
||||||
|
|
||||||
Type_Globals,
|
Type_Globals,
|
||||||
|
|
||||||
|
Type_Global,
|
||||||
|
|
||||||
Type_VerificationResults
|
Type_VerificationResults
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
14
apps/opencs/view/world/dialoguesubview.cpp
Normal file
14
apps/opencs/view/world/dialoguesubview.cpp
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
#include "dialoguesubview.hpp"
|
||||||
|
|
||||||
|
CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document,
|
||||||
|
bool createAndDelete)
|
||||||
|
: SubView (id)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVWorld::DialogueSubView::setEditLock (bool locked)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
24
apps/opencs/view/world/dialoguesubview.hpp
Normal file
24
apps/opencs/view/world/dialoguesubview.hpp
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef CSV_WORLD_DIALOGUESUBVIEW_H
|
||||||
|
#define CSV_WORLD_DIALOGUESUBVIEW_H
|
||||||
|
|
||||||
|
#include "../doc/subview.hpp"
|
||||||
|
|
||||||
|
namespace CSMDoc
|
||||||
|
{
|
||||||
|
class Document;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace CSVWorld
|
||||||
|
{
|
||||||
|
class DialogueSubView : public CSVDoc::SubView
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DialogueSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete);
|
||||||
|
|
||||||
|
virtual void setEditLock (bool locked);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -4,9 +4,13 @@
|
||||||
#include "../doc/subviewfactoryimp.hpp"
|
#include "../doc/subviewfactoryimp.hpp"
|
||||||
|
|
||||||
#include "tablesubview.hpp"
|
#include "tablesubview.hpp"
|
||||||
|
#include "dialoguesubview.hpp"
|
||||||
|
|
||||||
void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
|
void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
|
||||||
{
|
{
|
||||||
manager.add (CSMWorld::UniversalId::Type_Globals,
|
manager.add (CSMWorld::UniversalId::Type_Globals,
|
||||||
new CSVDoc::SubViewFactoryWithCreateFlag<TableSubView> (true));
|
new CSVDoc::SubViewFactoryWithCreateFlag<TableSubView> (true));
|
||||||
|
|
||||||
|
manager.add (CSMWorld::UniversalId::Type_Global,
|
||||||
|
new CSVDoc::SubViewFactoryWithCreateFlag<DialogueSubView> (true));
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
#include "table.hpp"
|
#include "table.hpp"
|
||||||
|
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QUndoStack>
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QContextMenuEvent>
|
#include <QContextMenuEvent>
|
||||||
|
@ -129,6 +129,13 @@ void CSVWorld::Table::setEditLock (bool locked)
|
||||||
mEditLock = locked;
|
mEditLock = locked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CSMWorld::UniversalId CSVWorld::Table::getUniversalId (int row) const
|
||||||
|
{
|
||||||
|
return CSMWorld::UniversalId (
|
||||||
|
static_cast<CSMWorld::UniversalId::Type> (mProxyModel->data (mProxyModel->index (row, 2)).toInt()),
|
||||||
|
mProxyModel->data (mProxyModel->index (row, 0)).toString().toStdString());
|
||||||
|
}
|
||||||
|
|
||||||
#include <sstream> /// \todo remove
|
#include <sstream> /// \todo remove
|
||||||
void CSVWorld::Table::createRecord()
|
void CSVWorld::Table::createRecord()
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,8 @@ namespace CSVWorld
|
||||||
|
|
||||||
void setEditLock (bool locked);
|
void setEditLock (bool locked);
|
||||||
|
|
||||||
|
CSMWorld::UniversalId getUniversalId (int row) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void createRecord();
|
void createRecord();
|
||||||
|
|
|
@ -10,9 +10,16 @@ CSVWorld::TableSubView::TableSubView (const CSMWorld::UniversalId& id, CSMDoc::D
|
||||||
: SubView (id)
|
: SubView (id)
|
||||||
{
|
{
|
||||||
setWidget (mTable = new Table (id, document.getData(), document.getUndoStack(), createAndDelete));
|
setWidget (mTable = new Table (id, document.getData(), document.getUndoStack(), createAndDelete));
|
||||||
|
|
||||||
|
connect (mTable, SIGNAL (doubleClicked (const QModelIndex&)), this, SLOT (rowActivated (const QModelIndex&)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSVWorld::TableSubView::setEditLock (bool locked)
|
void CSVWorld::TableSubView::setEditLock (bool locked)
|
||||||
{
|
{
|
||||||
mTable->setEditLock (locked);
|
mTable->setEditLock (locked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVWorld::TableSubView::rowActivated (const QModelIndex& index)
|
||||||
|
{
|
||||||
|
focusId (mTable->getUniversalId (index.row()));
|
||||||
|
}
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "../doc/subview.hpp"
|
#include "../doc/subview.hpp"
|
||||||
|
|
||||||
class QUndoStack;
|
class QModelIndex;
|
||||||
|
|
||||||
namespace CSMDoc
|
namespace CSMDoc
|
||||||
{
|
{
|
||||||
|
@ -16,6 +16,8 @@ namespace CSVWorld
|
||||||
|
|
||||||
class TableSubView : public CSVDoc::SubView
|
class TableSubView : public CSVDoc::SubView
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
Table *mTable;
|
Table *mTable;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -23,6 +25,10 @@ namespace CSVWorld
|
||||||
TableSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete);
|
TableSubView (const CSMWorld::UniversalId& id, CSMDoc::Document& document, bool createAndDelete);
|
||||||
|
|
||||||
virtual void setEditLock (bool locked);
|
virtual void setEditLock (bool locked);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
|
||||||
|
void rowActivated (const QModelIndex& index);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue