forked from teamnwah/openmw-tes3coop
Simplify and relocate nested column definitions.
This commit is contained in:
parent
8dab2f9b14
commit
4b9c9bf095
4 changed files with 68 additions and 81 deletions
|
@ -3,7 +3,7 @@
|
|||
#include "columns.hpp"
|
||||
|
||||
CSMWorld::ColumnBase::ColumnBase (int columnId, Display displayType, int flags)
|
||||
: mColumnId (columnId), mDisplayType (displayType), mFlags (flags)
|
||||
: mColumnId (columnId), mDisplayType (displayType), mFlags (flags)
|
||||
{}
|
||||
|
||||
CSMWorld::ColumnBase::~ColumnBase() {}
|
||||
|
@ -39,8 +39,7 @@ const CSMWorld::ColumnBase& CSMWorld::NestableColumn::nestedColumn(int subColumn
|
|||
CSMWorld::NestableColumn::NestableColumn(int columnId, CSMWorld::ColumnBase::Display displayType,
|
||||
int flag)
|
||||
: CSMWorld::ColumnBase(columnId, displayType, flag)
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
CSMWorld::NestableColumn::~NestableColumn()
|
||||
{
|
||||
|
@ -54,3 +53,13 @@ bool CSMWorld::NestableColumn::hasChildren() const
|
|||
{
|
||||
return !mNestedColumns.empty();
|
||||
}
|
||||
|
||||
CSMWorld::NestedChildColumn::NestedChildColumn (int id,
|
||||
CSMWorld::ColumnBase::Display display, bool isEditable)
|
||||
: NestableColumn (id, display, CSMWorld::ColumnBase::Flag_Dialogue) , mIsEditable(isEditable)
|
||||
{}
|
||||
|
||||
bool CSMWorld::NestedChildColumn::isEditable () const
|
||||
{
|
||||
return mIsEditable;
|
||||
}
|
||||
|
|
|
@ -165,6 +165,33 @@ namespace CSMWorld
|
|||
throw std::logic_error ("Column " + getTitle() + " is not editable");
|
||||
}
|
||||
};
|
||||
|
||||
template<typename ESXRecordT>
|
||||
struct NestedParentColumn : public Column<ESXRecordT>
|
||||
{
|
||||
NestedParentColumn (int id) : Column<ESXRecordT> (id, Display_NestedHeader, Flag_Dialogue)
|
||||
{}
|
||||
|
||||
virtual QVariant get (const Record<ESXRecordT>& record) const
|
||||
{
|
||||
return true; // required by IdTree::hasChildren()
|
||||
}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
struct NestedChildColumn : public NestableColumn
|
||||
{
|
||||
NestedChildColumn (int id, Display display, bool isEditable = true);
|
||||
|
||||
virtual bool isEditable() const;
|
||||
|
||||
private:
|
||||
bool mIsEditable;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2264,55 +2264,6 @@ namespace CSMWorld
|
|||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename ESXRecordT>
|
||||
struct NestedParentColumn : public Column<ESXRecordT>
|
||||
{
|
||||
NestedParentColumn (Columns::ColumnId id)
|
||||
: Column<ESXRecordT> (id, ColumnBase::Display_NestedHeader, ColumnBase::Flag_Dialogue)
|
||||
{}
|
||||
|
||||
virtual QVariant get (const Record<ESXRecordT>& record) const
|
||||
{
|
||||
return true; // required by IdTree::hasChildren()
|
||||
}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
struct NestedStringColumn : public NestableColumn
|
||||
{
|
||||
bool mIsEditable;
|
||||
|
||||
NestedStringColumn (Columns::ColumnId id, bool isEditable = true)
|
||||
: NestableColumn (id, ColumnBase::Display_String, ColumnBase::Flag_Dialogue)
|
||||
, mIsEditable(isEditable)
|
||||
{}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return mIsEditable;
|
||||
}
|
||||
};
|
||||
|
||||
struct NestedIntegerColumn : public NestableColumn
|
||||
{
|
||||
bool mIsEditable;
|
||||
|
||||
NestedIntegerColumn (Columns::ColumnId id, bool isEditable = true)
|
||||
: NestableColumn (id, ColumnBase::Display_Integer, ColumnBase::Flag_Dialogue)
|
||||
, mIsEditable(isEditable)
|
||||
{}
|
||||
|
||||
virtual bool isEditable() const
|
||||
{
|
||||
return mIsEditable;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -114,9 +114,9 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
mFactions.addColumn (reactions);
|
||||
mFactions.addAdapter (std::make_pair(reactions, new FactionReactionsAdapter<ESM::Faction> ()));
|
||||
mFactions.getNestableColumn(mFactions.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_Faction));
|
||||
new NestedChildColumn (Columns::ColumnId_Faction, ColumnBase::Display_String));
|
||||
mFactions.getNestableColumn(mFactions.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_FactionReaction));
|
||||
new NestedChildColumn (Columns::ColumnId_FactionReaction, ColumnBase::Display_Integer));
|
||||
|
||||
mRaces.addColumn (new StringIdColumn<ESM::Race>);
|
||||
mRaces.addColumn (new RecordStateColumn<ESM::Race>);
|
||||
|
@ -135,7 +135,7 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
mRaces.addColumn (raceSpells);
|
||||
mRaces.addAdapter (std::make_pair(raceSpells, new SpellListAdapter<ESM::Race> ()));
|
||||
mRaces.getNestableColumn(mRaces.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_SpellId));
|
||||
new NestedChildColumn (Columns::ColumnId_SpellId, ColumnBase::Display_String));
|
||||
|
||||
mSounds.addColumn (new StringIdColumn<ESM::Sound>);
|
||||
mSounds.addColumn (new RecordStateColumn<ESM::Sound>);
|
||||
|
@ -162,9 +162,9 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
mRegions.addColumn (soundList);
|
||||
mRegions.addAdapter (std::make_pair(soundList, new RegionSoundListAdapter<ESM::Region> ()));
|
||||
mRegions.getNestableColumn(mRegions.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_SoundName));
|
||||
new NestedChildColumn (Columns::ColumnId_SoundName, ColumnBase::Display_String));
|
||||
mRegions.getNestableColumn(mRegions.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_SoundChance));
|
||||
new NestedChildColumn (Columns::ColumnId_SoundChance, ColumnBase::Display_Integer));
|
||||
|
||||
mBirthsigns.addColumn (new StringIdColumn<ESM::BirthSign>);
|
||||
mBirthsigns.addColumn (new RecordStateColumn<ESM::BirthSign>);
|
||||
|
@ -178,7 +178,7 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
mBirthsigns.addColumn (birthSpells);
|
||||
mBirthsigns.addAdapter (std::make_pair(birthSpells, new SpellListAdapter<ESM::BirthSign> ()));
|
||||
mBirthsigns.getNestableColumn(mBirthsigns.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_SpellId));
|
||||
new NestedChildColumn (Columns::ColumnId_SpellId, ColumnBase::Display_String));
|
||||
|
||||
mSpells.addColumn (new StringIdColumn<ESM::Spell>);
|
||||
mSpells.addColumn (new RecordStateColumn<ESM::Spell>);
|
||||
|
@ -195,21 +195,21 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
mSpells.addColumn (spellEffect);
|
||||
mSpells.addAdapter (std::make_pair(spellEffect, new EffectsListAdapter<ESM::Spell> ()));
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_EffectId/*, false*/)); // false means no edit
|
||||
new NestedChildColumn (Columns::ColumnId_EffectId, ColumnBase::Display_String/*, false*/)); // false means no edit
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_Skill));
|
||||
new NestedChildColumn (Columns::ColumnId_Skill, ColumnBase::Display_String));
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_Attribute)); // reuse attribute
|
||||
new NestedChildColumn (Columns::ColumnId_Attribute, ColumnBase::Display_String)); // reuse attribute
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_EffectRange));
|
||||
new NestedChildColumn (Columns::ColumnId_EffectRange, ColumnBase::Display_Integer));
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_EffectArea));
|
||||
new NestedChildColumn (Columns::ColumnId_EffectArea, ColumnBase::Display_String));
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_Duration)); // reuse from light
|
||||
new NestedChildColumn (Columns::ColumnId_Duration, ColumnBase::Display_Integer)); // reuse from light
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_MinRange)); // reuse from sound
|
||||
new NestedChildColumn (Columns::ColumnId_MinRange, ColumnBase::Display_Integer)); // reuse from sound
|
||||
mSpells.getNestableColumn(mSpells.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_MaxRange)); // reuse from sound
|
||||
new NestedChildColumn (Columns::ColumnId_MaxRange, ColumnBase::Display_Integer)); // reuse from sound
|
||||
|
||||
mTopics.addColumn (new StringIdColumn<ESM::Dialogue>);
|
||||
mTopics.addColumn (new RecordStateColumn<ESM::Dialogue>);
|
||||
|
@ -269,21 +269,21 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
mEnchantments.addColumn (enchantmentEffect);
|
||||
mEnchantments.addAdapter (std::make_pair(enchantmentEffect, new EffectsListAdapter<ESM::Enchantment> ()));
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_EffectId/*, false*/));
|
||||
new NestedChildColumn (Columns::ColumnId_EffectId, ColumnBase::Display_String/*, false*/));
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_Skill));
|
||||
new NestedChildColumn (Columns::ColumnId_Skill, ColumnBase::Display_String));
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_Attribute)); // reuse attribute
|
||||
new NestedChildColumn (Columns::ColumnId_Attribute, ColumnBase::Display_String)); // reuse attribute
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_EffectRange));
|
||||
new NestedChildColumn (Columns::ColumnId_EffectRange, ColumnBase::Display_Integer));
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedStringColumn (Columns::ColumnId_EffectArea));
|
||||
new NestedChildColumn (Columns::ColumnId_EffectArea, ColumnBase::Display_String));
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_Duration)); // reuse from light
|
||||
new NestedChildColumn (Columns::ColumnId_Duration, ColumnBase::Display_Integer)); // reuse from light
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_MinRange)); // reuse from sound
|
||||
new NestedChildColumn (Columns::ColumnId_MinRange, ColumnBase::Display_Integer)); // reuse from sound
|
||||
mEnchantments.getNestableColumn(mEnchantments.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_MaxRange)); // reuse from sound
|
||||
new NestedChildColumn (Columns::ColumnId_MaxRange, ColumnBase::Display_Integer)); // reuse from sound
|
||||
|
||||
mBodyParts.addColumn (new StringIdColumn<ESM::BodyPart>);
|
||||
mBodyParts.addColumn (new RecordStateColumn<ESM::BodyPart>);
|
||||
|
@ -339,24 +339,24 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
|||
// new objects deleted in dtor of NestableColumn
|
||||
// WARNING: The order of the columns below are assumed in PathgridPointListAdapter
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridIndex, false));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridIndex, ColumnBase::Display_Integer, false));
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridPosX));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridPosX, ColumnBase::Display_Integer));
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridPosY));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridPosY, ColumnBase::Display_Integer));
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridPosZ));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridPosZ, ColumnBase::Display_Integer));
|
||||
|
||||
NestedParentColumn<Pathgrid> *edgeList =
|
||||
new NestedParentColumn<Pathgrid> (Columns::ColumnId_PathgridEdges);
|
||||
mPathgrids.addColumn (edgeList);
|
||||
mPathgrids.addAdapter (std::make_pair(edgeList, new PathgridEdgeListAdapter<Pathgrid> ()));
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridEdgeIndex, false));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridEdgeIndex, ColumnBase::Display_Integer, false));
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridEdge0));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridEdge0, ColumnBase::Display_Integer));
|
||||
mPathgrids.getNestableColumn(mPathgrids.getColumns()-1)->addColumn(
|
||||
new NestedIntegerColumn (Columns::ColumnId_PathgridEdge1));
|
||||
new NestedChildColumn (Columns::ColumnId_PathgridEdge1, ColumnBase::Display_Integer));
|
||||
|
||||
mStartScripts.addColumn (new StringIdColumn<ESM::StartScript>);
|
||||
mStartScripts.addColumn (new RecordStateColumn<ESM::StartScript>);
|
||||
|
|
Loading…
Reference in a new issue