1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 12:36:40 +00:00

Grey out disabled entries rather than hiding them.

This commit is contained in:
cc9cii 2015-05-21 13:11:07 +10:00
parent 1d0b8587a1
commit 2fc964ca73
4 changed files with 41 additions and 14 deletions

View file

@ -1069,19 +1069,25 @@ namespace CSMWorld
switch (subColIndex) switch (subColIndex)
{ {
case 0: return isInterior; case 0: return isInterior;
case 1: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mAmbient : QVariant(); case 1: return (isInterior && !behaveLikeExterior) ?
case 2: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mSunlight : QVariant(); cell.mAmbi.mAmbient : QVariant(QVariant::UserType);
case 3: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mFog : QVariant(); case 2: return (isInterior && !behaveLikeExterior) ?
case 4: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mFogDensity : QVariant(); cell.mAmbi.mSunlight : QVariant(QVariant::UserType);
case 3: return (isInterior && !behaveLikeExterior) ?
cell.mAmbi.mFog : QVariant(QVariant::UserType);
case 4: return (isInterior && !behaveLikeExterior) ?
cell.mAmbi.mFogDensity : QVariant(QVariant::UserType);
case 5: case 5:
{ {
if (isInterior && !behaveLikeExterior && interiorWater) if (isInterior && !behaveLikeExterior && interiorWater)
return cell.mWater; return cell.mWater;
else else
return QVariant(); return QVariant(QVariant::UserType);
} }
case 6: return isInterior ? QVariant() : cell.mMapColor; // TODO: how to select? case 6: return isInterior ?
//case 7: return isInterior ? behaveLikeExterior : QVariant(); QVariant(QVariant::UserType) : cell.mMapColor; // TODO: how to select?
//case 7: return isInterior ?
//behaveLikeExterior : QVariant(QVariant::UserType);
default: throw std::runtime_error("Cell subcolumn index out of range"); default: throw std::runtime_error("Cell subcolumn index out of range");
} }
} }

View file

@ -502,7 +502,7 @@ QVariant CSMWorld::NpcRefIdAdapter::getData (const RefIdColumn *column, const Re
if (column==mColumns.mAttributes || column==mColumns.mSkills) if (column==mColumns.mAttributes || column==mColumns.mSkills)
{ {
if ((record.get().mFlags & ESM::NPC::Autocalc) != 0) if ((record.get().mFlags & ESM::NPC::Autocalc) != 0)
return QVariant(); return QVariant(QVariant::UserType);
else else
return true; return true;
} }
@ -805,10 +805,10 @@ QVariant CSMWorld::NpcMiscRefIdAdapter::getNestedData (const RefIdColumn *column
switch (subColIndex) switch (subColIndex)
{ {
case 0: return static_cast<int>(record.get().mNpdt12.mLevel); case 0: return static_cast<int>(record.get().mNpdt12.mLevel);
case 1: return QVariant(); case 1: return QVariant(QVariant::UserType);
case 2: return QVariant(); case 2: return QVariant(QVariant::UserType);
case 3: return QVariant(); case 3: return QVariant(QVariant::UserType);
case 4: return QVariant(); case 4: return QVariant(QVariant::UserType);
case 5: return static_cast<int>(record.get().mNpdt12.mDisposition); case 5: return static_cast<int>(record.get().mNpdt12.mDisposition);
case 6: return static_cast<int>(record.get().mNpdt12.mReputation); case 6: return static_cast<int>(record.get().mNpdt12.mReputation);
case 7: return static_cast<int>(record.get().mNpdt12.mRank); case 7: return static_cast<int>(record.get().mNpdt12.mRank);

View file

@ -1976,7 +1976,7 @@ namespace CSMWorld
{ {
switch (subColIndex) switch (subColIndex)
{ {
case 0: return QVariant(); // don't allow checkbox editor to be created case 0: return QVariant(QVariant::UserType); // disable the checkbox editor
case 1: return record.get().mFlags & ESM::CreatureLevList::AllLevels; case 1: return record.get().mFlags & ESM::CreatureLevList::AllLevels;
case 2: return static_cast<int> (record.get().mChanceNone); case 2: return static_cast<int> (record.get().mChanceNone);
default: default:

View file

@ -461,7 +461,14 @@ void CSVWorld::EditWidget::remake(int row)
NestedTable* table = new NestedTable(mDocument, id, mNestedModels.back(), this); NestedTable* table = new NestedTable(mDocument, id, mNestedModels.back(), this);
// FIXME: does not work well when enum delegates are used // FIXME: does not work well when enum delegates are used
//table->resizeColumnsToContents(); //table->resizeColumnsToContents();
table->setEditTriggers(QAbstractItemView::SelectedClicked | QAbstractItemView::CurrentChanged);
if(mTable->index(row, i).data().type() == QVariant::UserType)
{
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
table->setEnabled(false);
}
else
table->setEditTriggers(QAbstractItemView::SelectedClicked | QAbstractItemView::CurrentChanged);
int rows = mTable->rowCount(mTable->index(row, i)); int rows = mTable->rowCount(mTable->index(row, i));
int rowHeight = (rows == 0) ? table->horizontalHeader()->height() : table->rowHeight(0); int rowHeight = (rows == 0) ? table->horizontalHeader()->height() : table->rowHeight(0);
@ -473,6 +480,8 @@ void CSVWorld::EditWidget::remake(int row)
new QLabel (mTable->headerData (i, Qt::Horizontal, Qt::DisplayRole).toString(), mMainWidget); new QLabel (mTable->headerData (i, Qt::Horizontal, Qt::DisplayRole).toString(), mMainWidget);
label->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed); label->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
if(mTable->index(row, i).data().type() == QVariant::UserType)
label->setEnabled(false);
tablesLayout->addWidget(label); tablesLayout->addWidget(label);
tablesLayout->addWidget(table); tablesLayout->addWidget(table);
@ -503,6 +512,12 @@ void CSVWorld::EditWidget::remake(int row)
unlockedLayout->addWidget (editor, unlocked, 1); unlockedLayout->addWidget (editor, unlocked, 1);
++unlocked; ++unlocked;
} }
if(mTable->index(row, i).data().type() == QVariant::UserType)
{
editor->setEnabled(false);
label->setEnabled(false);
}
} }
} }
else else
@ -550,6 +565,12 @@ void CSVWorld::EditWidget::remake(int row)
unlockedLayout->addWidget (label, unlocked, 0); unlockedLayout->addWidget (label, unlocked, 0);
unlockedLayout->addWidget (editor, unlocked, 1); unlockedLayout->addWidget (editor, unlocked, 1);
++unlocked; ++unlocked;
if(mNestedModels.back()->index(0, col).data().type() == QVariant::UserType)
{
editor->setEnabled(false);
label->setEnabled(false);
}
} }
} }
mNestedTableMapper->setCurrentModelIndex(mNestedModels.back()->index(0, 0)); mNestedTableMapper->setCurrentModelIndex(mNestedModels.back()->index(0, 0));