Show piece properties that are the same when multiple pieces are selected.

This commit is contained in:
leo 2016-02-09 19:40:59 +00:00
parent c1cdbc8d4a
commit 565a012b6c
2 changed files with 42 additions and 6 deletions

View file

@ -426,7 +426,7 @@ void lcQPropertiesTree::Update(const lcArray<lcObject*>& Selection, lcObject* Fo
break; break;
case LC_PROPERTY_WIDGET_PIECE: case LC_PROPERTY_WIDGET_PIECE:
SetPiece(Focus); SetPiece(Selection, Focus);
break; break;
case LC_PROPERTY_WIDGET_CAMERA: case LC_PROPERTY_WIDGET_CAMERA:
@ -839,7 +839,7 @@ void lcQPropertiesTree::SetEmpty()
mFocus = NULL; mFocus = NULL;
} }
void lcQPropertiesTree::SetPiece(lcObject* Focus) void lcQPropertiesTree::SetPiece(const lcArray<lcObject*>& Selection, lcObject* Focus)
{ {
if (mWidgetMode != LC_PROPERTY_WIDGET_PIECE) if (mWidgetMode != LC_PROPERTY_WIDGET_PIECE)
{ {
@ -893,7 +893,6 @@ void lcQPropertiesTree::SetPiece(lcObject* Focus)
lcStep Show = 0; lcStep Show = 0;
lcStep Hide = 0; lcStep Hide = 0;
int ColorIndex = gDefaultColor; int ColorIndex = gDefaultColor;
const char* Description = "";
PieceInfo* Info = NULL; PieceInfo* Info = NULL;
if (Piece) if (Piece)
@ -901,9 +900,46 @@ void lcQPropertiesTree::SetPiece(lcObject* Focus)
Show = Piece->GetStepShow(); Show = Piece->GetStepShow();
Hide = Piece->GetStepHide(); Hide = Piece->GetStepHide();
ColorIndex = Piece->mColorIndex; ColorIndex = Piece->mColorIndex;
Description = Piece->mPieceInfo->m_strDescription;
Info = Piece->mPieceInfo; Info = Piece->mPieceInfo;
} }
else
{
bool FirstPiece = true;
for (int ObjectIdx = 0; ObjectIdx < Selection.GetSize(); ObjectIdx++)
{
lcObject* Object = Selection[ObjectIdx];
if (Object->GetType() != LC_OBJECT_PIECE)
continue;
lcPiece* SelectedPiece = (lcPiece*)Object;
if (FirstPiece)
{
Show = SelectedPiece->GetStepShow();
Hide = SelectedPiece->GetStepHide();
ColorIndex = SelectedPiece->mColorIndex;
Info = SelectedPiece->mPieceInfo;
FirstPiece = false;
}
else
{
if (SelectedPiece->GetStepShow() != Show)
Show = 0;
if (SelectedPiece->GetStepHide() != Hide)
Hide = 0;
if (SelectedPiece->mColorIndex != ColorIndex)
ColorIndex = gDefaultColor;
if (SelectedPiece->mPieceInfo != Info)
Info = NULL;
}
}
}
partShow->setText(1, QString::number(Show)); partShow->setText(1, QString::number(Show));
partShow->setData(0, PropertyValueRole, Show); partShow->setData(0, PropertyValueRole, Show);
@ -925,7 +961,7 @@ void lcQPropertiesTree::SetPiece(lcObject* Focus)
partColor->setText(1, color->Name); partColor->setText(1, color->Name);
partColor->setData(0, PropertyValueRole, ColorIndex); partColor->setData(0, PropertyValueRole, ColorIndex);
partID->setText(1, Description); partID->setText(1, Info ? Info->m_strDescription : QString());
partID->setData(0, PropertyValueRole, qVariantFromValue((void*)Info)); partID->setData(0, PropertyValueRole, qVariantFromValue((void*)Info));
} }

View file

@ -66,7 +66,7 @@ protected:
QTreeWidgetItem *addProperty(QTreeWidgetItem *parent, const QString& label, PropertyType propertyType); QTreeWidgetItem *addProperty(QTreeWidgetItem *parent, const QString& label, PropertyType propertyType);
void SetEmpty(); void SetEmpty();
void SetPiece(lcObject* Focus); void SetPiece(const lcArray<lcObject*>& Selection, lcObject* Focus);
void SetCamera(lcObject* Focus); void SetCamera(lcObject* Focus);
void SetLight(lcObject* Focus); void SetLight(lcObject* Focus);
void SetMultiple(); void SetMultiple();