Update timeline when piece color or type changes.
This commit is contained in:
@@ -1446,9 +1446,9 @@ void lcMainWindow::UpdateSelectedObjects(int Flags, int SelectedCount, lcObject*
|
||||
mStatusBarLabel->setText(Message);
|
||||
}
|
||||
|
||||
void lcMainWindow::UpdateTimeline(bool Clear)
|
||||
void lcMainWindow::UpdateTimeline(bool Clear, bool UpdateItems)
|
||||
{
|
||||
mTimelineWidget->Update(Clear);
|
||||
mTimelineWidget->Update(Clear, UpdateItems);
|
||||
}
|
||||
|
||||
void lcMainWindow::UpdatePaste(bool Enabled)
|
||||
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
|
||||
void UpdateFocusObject(lcObject* Focus);
|
||||
void UpdateSelectedObjects(int Flags, int SelectedCount, lcObject* Focus);
|
||||
void UpdateTimeline(bool Clear);
|
||||
void UpdateTimeline(bool Clear, bool UpdateItems);
|
||||
void UpdatePaste(bool Enabled);
|
||||
void UpdateCurrentStep();
|
||||
void SetAddKeys(bool AddKeys);
|
||||
|
||||
+24
-20
@@ -895,7 +895,7 @@ void lcModel::Merge(lcModel* Other)
|
||||
|
||||
delete Other;
|
||||
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
}
|
||||
|
||||
void lcModel::Cut()
|
||||
@@ -904,7 +904,7 @@ void lcModel::Cut()
|
||||
|
||||
if (RemoveSelectedObjects())
|
||||
{
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
gMainWindow->UpdateFocusObject(NULL);
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateAllViews();
|
||||
@@ -953,7 +953,7 @@ void lcModel::Paste()
|
||||
SetSelectionAndFocus((lcArray<lcObject*>&)PastedPieces, NULL, 0);
|
||||
|
||||
CalculateStep(mCurrentStep);
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
gMainWindow->UpdateAllViews();
|
||||
}
|
||||
|
||||
@@ -1280,7 +1280,7 @@ void lcModel::LoadCheckPoint(lcModelHistoryEntry* CheckPoint)
|
||||
Buffer.open(QIODevice::ReadOnly);
|
||||
LoadLDraw(Buffer, lcGetActiveProject());
|
||||
|
||||
gMainWindow->UpdateTimeline(true);
|
||||
gMainWindow->UpdateTimeline(true, false);
|
||||
gMainWindow->UpdateFocusObject(GetFocusObject());
|
||||
gMainWindow->UpdateCameraMenu();
|
||||
UpdateSelection();
|
||||
@@ -1337,7 +1337,7 @@ void lcModel::SetCurrentStep(lcStep Step)
|
||||
CalculateStep(Step);
|
||||
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
gMainWindow->UpdateFocusObject(GetFocusObject());
|
||||
gMainWindow->UpdateAllViews();
|
||||
gMainWindow->UpdateCurrentStep();
|
||||
@@ -1879,7 +1879,7 @@ void lcModel::AddPiece()
|
||||
Piece->Initialize(WorldMatrix, mCurrentStep);
|
||||
Piece->SetColorIndex(gMainWindow->mColorIndex);
|
||||
AddPiece(Piece);
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
ClearSelectionAndSetFocus(Piece, LC_PIECE_SECTION_POSITION);
|
||||
|
||||
SaveCheckpoint("Adding Piece");
|
||||
@@ -1925,7 +1925,7 @@ void lcModel::DeleteSelectedObjects()
|
||||
{
|
||||
if (RemoveSelectedObjects())
|
||||
{
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
gMainWindow->UpdateFocusObject(NULL);
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateAllViews();
|
||||
@@ -1971,7 +1971,7 @@ void lcModel::ShowSelectedPiecesEarlier()
|
||||
|
||||
SaveCheckpoint("Modifying");
|
||||
gMainWindow->UpdateAllViews();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
UpdateSelection();
|
||||
}
|
||||
|
||||
@@ -2016,7 +2016,7 @@ void lcModel::ShowSelectedPiecesLater()
|
||||
|
||||
SaveCheckpoint("Modifying");
|
||||
gMainWindow->UpdateAllViews();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
UpdateSelection();
|
||||
}
|
||||
|
||||
@@ -2052,7 +2052,7 @@ void lcModel::SetPieceSteps(const QList<QPair<lcPiece*, lcStep>>& PieceSteps)
|
||||
SaveCheckpoint("Modifying");
|
||||
gMainWindow->UpdateAllViews();
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
gMainWindow->UpdateFocusObject(GetFocusObject());
|
||||
}
|
||||
}
|
||||
@@ -2309,6 +2309,7 @@ void lcModel::TransformSelectedObjects(lcTransformType TransformType, const lcVe
|
||||
void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPropertyType, const void* Value)
|
||||
{
|
||||
QString CheckPointString;
|
||||
bool UpdateTimelineItems = false;
|
||||
|
||||
switch (ObjectPropertyType)
|
||||
{
|
||||
@@ -2380,6 +2381,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro
|
||||
Part->SetColorIndex(ColorIndex);
|
||||
|
||||
CheckPointString = tr("Setting Color");
|
||||
UpdateTimelineItems = true;
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -2395,6 +2397,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro
|
||||
Part->mPieceInfo->AddRef();
|
||||
|
||||
CheckPointString = tr("Setting Part");
|
||||
UpdateTimelineItems = true;
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -2516,7 +2519,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro
|
||||
if (!CheckPointString.isEmpty())
|
||||
{
|
||||
SaveCheckpoint(CheckPointString);
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, UpdateTimelineItems);
|
||||
gMainWindow->UpdateFocusObject(GetFocusObject());
|
||||
gMainWindow->UpdateAllViews();
|
||||
}
|
||||
@@ -3078,7 +3081,7 @@ void lcModel::HideSelectedPieces()
|
||||
}
|
||||
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, true);
|
||||
gMainWindow->UpdateFocusObject(NULL);
|
||||
gMainWindow->UpdateAllViews();
|
||||
}
|
||||
@@ -3094,7 +3097,7 @@ void lcModel::HideUnselectedPieces()
|
||||
}
|
||||
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, true);
|
||||
gMainWindow->UpdateAllViews();
|
||||
}
|
||||
|
||||
@@ -3109,7 +3112,7 @@ void lcModel::UnhideSelectedPieces()
|
||||
}
|
||||
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, true);
|
||||
gMainWindow->UpdateAllViews();
|
||||
}
|
||||
|
||||
@@ -3119,7 +3122,7 @@ void lcModel::UnhideAllPieces()
|
||||
mPieces[PieceIdx]->SetHidden(false);
|
||||
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, true);
|
||||
gMainWindow->UpdateAllViews();
|
||||
}
|
||||
|
||||
@@ -3285,7 +3288,7 @@ void lcModel::InsertPieceToolClicked(const lcMatrix44& WorldMatrix)
|
||||
Piece->UpdatePosition(mCurrentStep);
|
||||
AddPiece(Piece);
|
||||
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
ClearSelectionAndSetFocus(Piece, LC_PIECE_SECTION_POSITION);
|
||||
|
||||
SaveCheckpoint(tr("Insert"));
|
||||
@@ -3406,7 +3409,7 @@ void lcModel::EraserToolClicked(lcObject* Object)
|
||||
}
|
||||
|
||||
delete Object;
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
gMainWindow->UpdateFocusObject(GetFocusObject());
|
||||
UpdateSelection();
|
||||
gMainWindow->UpdateAllViews();
|
||||
@@ -3427,6 +3430,7 @@ void lcModel::PaintToolClicked(lcObject* Object)
|
||||
SaveCheckpoint(tr("Painting"));
|
||||
gMainWindow->UpdateFocusObject(GetFocusObject());
|
||||
gMainWindow->UpdateAllViews();
|
||||
gMainWindow->UpdateTimeline(false, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3651,7 +3655,7 @@ void lcModel::ShowArrayDialog()
|
||||
}
|
||||
|
||||
AddToSelection(NewPieces);
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
SaveCheckpoint(tr("Array"));
|
||||
}
|
||||
|
||||
@@ -3684,13 +3688,13 @@ void lcModel::ShowMinifigDialog()
|
||||
}
|
||||
|
||||
SetSelectionAndFocus(Pieces, NULL, 0);
|
||||
gMainWindow->UpdateTimeline(false);
|
||||
gMainWindow->UpdateTimeline(false, false);
|
||||
SaveCheckpoint(tr("Minifig"));
|
||||
}
|
||||
|
||||
void lcModel::UpdateInterface()
|
||||
{
|
||||
gMainWindow->UpdateTimeline(true);
|
||||
gMainWindow->UpdateTimeline(true, false);
|
||||
gMainWindow->UpdateUndoRedo(mUndoHistory.GetSize() > 1 ? mUndoHistory[0]->Description : NULL, !mRedoHistory.IsEmpty() ? mRedoHistory[0]->Description : NULL);
|
||||
gMainWindow->UpdatePaste(!g_App->mClipboard.isEmpty());
|
||||
gMainWindow->UpdateCategories();
|
||||
|
||||
@@ -59,7 +59,7 @@ void lcTimelineWidget::CustomMenuRequested(QPoint Pos)
|
||||
Menu->popup(viewport()->mapToGlobal(Pos));
|
||||
}
|
||||
|
||||
void lcTimelineWidget::Update(bool Clear)
|
||||
void lcTimelineWidget::Update(bool Clear, bool UpdateItems)
|
||||
{
|
||||
if (mIgnoreUpdates)
|
||||
return;
|
||||
@@ -143,15 +143,35 @@ void lcTimelineWidget::Update(bool Clear)
|
||||
}
|
||||
|
||||
QTreeWidgetItem* PieceItem = mItems.value(Piece);
|
||||
bool UpdateItem = UpdateItems;
|
||||
|
||||
if (!PieceItem)
|
||||
{
|
||||
PieceItem = new QTreeWidgetItem(QStringList(Piece->mPieceInfo->m_strDescription));
|
||||
PieceItem = new QTreeWidgetItem();
|
||||
PieceItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
|
||||
PieceItem->setData(0, Qt::UserRole, qVariantFromValue<uintptr_t>((uintptr_t)Piece));
|
||||
StepItem->insertChild(PieceItemIndex, PieceItem);
|
||||
mItems[Piece] = PieceItem;
|
||||
|
||||
UpdateItem = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PieceItemIndex >= StepItem->childCount() || PieceItem != StepItem->child(PieceItemIndex))
|
||||
{
|
||||
QTreeWidgetItem* PieceParent = PieceItem->parent();
|
||||
|
||||
if (PieceParent)
|
||||
PieceParent->removeChild(PieceItem);
|
||||
|
||||
StepItem->insertChild(PieceItemIndex, PieceItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (UpdateItem)
|
||||
{
|
||||
PieceItem->setText(0, Piece->mPieceInfo->m_strDescription);
|
||||
|
||||
int ColorIndex = Piece->mColorIndex;
|
||||
if (!mIcons.contains(ColorIndex))
|
||||
{
|
||||
@@ -170,24 +190,12 @@ void lcTimelineWidget::Update(bool Clear)
|
||||
}
|
||||
|
||||
PieceItem->setIcon(0, mIcons[ColorIndex]);
|
||||
|
||||
QColor Color = palette().text().color();
|
||||
if (Piece->IsHidden())
|
||||
Color.setAlpha(128);
|
||||
PieceItem->setTextColor(0, Color);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PieceItemIndex >= StepItem->childCount() || PieceItem != StepItem->child(PieceItemIndex))
|
||||
{
|
||||
QTreeWidgetItem* PieceParent = PieceItem->parent();
|
||||
|
||||
if (PieceParent)
|
||||
PieceParent->removeChild(PieceItem);
|
||||
|
||||
StepItem->insertChild(PieceItemIndex, PieceItem);
|
||||
}
|
||||
}
|
||||
|
||||
QColor Color = palette().text().color();
|
||||
if (Piece->IsHidden())
|
||||
Color.setAlpha(128);
|
||||
PieceItem->setTextColor(0, Color);
|
||||
|
||||
PieceItem->setSelected(Piece->IsSelected());
|
||||
PieceItemIndex++;
|
||||
|
||||
@@ -9,7 +9,7 @@ public:
|
||||
lcTimelineWidget(QWidget* Parent);
|
||||
virtual ~lcTimelineWidget();
|
||||
|
||||
void Update(bool Clear);
|
||||
void Update(bool Clear, bool UpdateItems);
|
||||
void UpdateSelection();
|
||||
|
||||
public slots:
|
||||
|
||||
Reference in New Issue
Block a user