mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-13 21:40:11 +00:00
record IDs are no longer handled as a special case
This commit is contained in:
parent
4086b556d2
commit
fd55c0cae2
@ -28,6 +28,22 @@ namespace CSMWorld
|
||||
}
|
||||
};
|
||||
|
||||
template<typename ESXRecordT>
|
||||
struct StringIdColumn : public Column<ESXRecordT>
|
||||
{
|
||||
StringIdColumn() : Column<ESXRecordT> ("ID") {}
|
||||
|
||||
virtual QVariant get (const Record<ESXRecordT>& record) const
|
||||
{
|
||||
return record.get().mId.c_str();
|
||||
}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -12,6 +12,7 @@
|
||||
|
||||
CSMWorld::Data::Data()
|
||||
{
|
||||
mGlobals.addColumn (new StringIdColumn<ESM::Global>);
|
||||
mGlobals.addColumn (new FloatValueColumn<ESM::Global>);
|
||||
|
||||
mModels.insert (std::make_pair (
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
#include <stdexcept>
|
||||
|
||||
#include <QVariant>
|
||||
|
||||
@ -24,7 +25,10 @@ namespace CSMWorld
|
||||
|
||||
virtual QVariant get (const Record<ESXRecordT>& record) const = 0;
|
||||
|
||||
virtual void set (Record<ESXRecordT>& record, const QVariant& data) = 0;
|
||||
virtual void set (Record<ESXRecordT>& record, const QVariant& data)
|
||||
{
|
||||
throw std::logic_error ("Column " + mTitle + " is not editable");
|
||||
}
|
||||
|
||||
virtual bool isEditable() const = 0;
|
||||
};
|
||||
|
@ -26,7 +26,7 @@ int CSMWorld::IdTable::columnCount (const QModelIndex & parent) const
|
||||
if (parent.isValid())
|
||||
return 0;
|
||||
|
||||
return 1+mIdCollection->getColumns();
|
||||
return mIdCollection->getColumns();
|
||||
}
|
||||
|
||||
QVariant CSMWorld::IdTable::data (const QModelIndex & index, int role) const
|
||||
@ -34,19 +34,10 @@ QVariant CSMWorld::IdTable::data (const QModelIndex & index, int role) const
|
||||
if (role!=Qt::DisplayRole && role!=Qt::EditRole)
|
||||
return QVariant();
|
||||
|
||||
if (role==Qt::EditRole)
|
||||
{
|
||||
if (index.column()==0)
|
||||
if (role==Qt::EditRole && !mIdCollection->isEditable (index.column()))
|
||||
return QVariant();
|
||||
|
||||
if (!mIdCollection->isEditable (index.column()-1))
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if (index.column()==0)
|
||||
return QVariant (tr (mIdCollection->getId (index.row()).c_str()));
|
||||
|
||||
return mIdCollection->getData (index.row(), index.column()-1);
|
||||
return mIdCollection->getData (index.row(), index.column());
|
||||
}
|
||||
|
||||
QVariant CSMWorld::IdTable::headerData (int section, Qt::Orientation orientation, int role) const
|
||||
@ -57,17 +48,14 @@ QVariant CSMWorld::IdTable::headerData (int section, Qt::Orientation orientation
|
||||
if (orientation==Qt::Vertical)
|
||||
return QVariant();
|
||||
|
||||
if (section==0)
|
||||
return QVariant (tr ("ID"));
|
||||
|
||||
return tr (mIdCollection->getTitle (section-1).c_str());
|
||||
return tr (mIdCollection->getTitle (section).c_str());
|
||||
}
|
||||
|
||||
bool CSMWorld::IdTable::setData ( const QModelIndex &index, const QVariant &value, int role)
|
||||
{
|
||||
if (index.column()>0 && role==Qt::EditRole)
|
||||
if (mIdCollection->isEditable (index.column()) && role==Qt::EditRole)
|
||||
{
|
||||
mIdCollection->setData (index.row(), index.column()-1, value);
|
||||
mIdCollection->setData (index.row(), index.column(), value);
|
||||
emit dataChanged (index, index);
|
||||
return true;
|
||||
}
|
||||
@ -79,7 +67,7 @@ Qt::ItemFlags CSMWorld::IdTable::flags (const QModelIndex & index) const
|
||||
{
|
||||
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
|
||||
|
||||
if (index.column()>0)
|
||||
if (mIdCollection->isEditable (index.column()))
|
||||
flags |= Qt::ItemIsEditable;
|
||||
|
||||
return flags;
|
||||
|
@ -63,7 +63,7 @@ CSVWorld::Globals::Globals (const CSMWorld::UniversalId& id, CSMWorld::Data& dat
|
||||
|
||||
int columns = model->columnCount();
|
||||
|
||||
for (int i=1; i<columns; ++i)
|
||||
for (int i=0; i<columns; ++i)
|
||||
{
|
||||
CommandDelegate *delegate = new CommandDelegate (undoStack, table);
|
||||
table->setItemDelegateForColumn (i, delegate);
|
||||
|
Loading…
x
Reference in New Issue
Block a user