diff --git a/common/lc_previewwidget.cpp b/common/lc_previewwidget.cpp
index ddb40843..6db432dd 100644
--- a/common/lc_previewwidget.cpp
+++ b/common/lc_previewwidget.cpp
@@ -21,15 +21,28 @@ lcPreviewDockWidget::lcPreviewDockWidget(QMainWindow* Parent)
setCentralWidget(mViewWidget);
setMinimumSize(200, 200);
+ mLockAction = new QAction(QIcon(":/resources/action_preview_unlocked.png"),tr("Lock Preview"), this);
+ mLockAction->setCheckable(true);
+ mLockAction->setChecked(false);
+ mLockAction->setShortcut(tr("Ctrl+L"));
+ connect(mLockAction, SIGNAL(triggered()), this, SLOT(SetPreviewLock()));
+ SetPreviewLock();
+
+ mLabel = new QLabel(QString());
+
mToolBar = addToolBar(tr("PreviewDescription"));
mToolBar->setObjectName("PreviewDescription");
mToolBar->setMovable(false);
- mLabel = new QLabel(QString());
+ mToolBar->addAction(mLockAction);
+ mToolBar->addSeparator();
mToolBar->addWidget(mLabel);
}
bool lcPreviewDockWidget::SetCurrentPiece(const QString& PartType, int ColorCode)
{
+ if (mLockAction->isChecked())
+ return true;
+
mLabel->setText(tr("Loading..."));
if (mPreview->SetCurrentPiece(PartType, ColorCode))
{
@@ -45,6 +58,22 @@ void lcPreviewDockWidget::ClearPreview()
mLabel->setText(QString());
}
+void lcPreviewDockWidget::SetPreviewLock()
+{
+ bool Locked = mLockAction->isChecked();
+ if (Locked && mPreview->GetActiveModel()->GetPieces().IsEmpty())
+ {
+ mLockAction->setChecked(false);
+ return;
+ }
+ QIcon LockIcon(Locked ? ":/resources/action_preview_locked.png" : ":/resources/action_preview_unlocked.png");
+ QString State(Locked ? tr("Unlock") : tr("Lock"));
+ QString StatusTip(tr("%1 the preview display to %2 updates").arg(State).arg(Locked ? "enable" : "disable"));
+ mLockAction->setToolTip(tr("%1 Preview").arg(State));
+ mLockAction->setIcon(LockIcon);
+ mLockAction->setStatusTip(StatusTip);
+}
+
lcPreviewWidget::lcPreviewWidget()
: mLoader(new Project(true/*IsPreview*/)),
mViewSphere(this/*Preview*/)
diff --git a/common/lc_previewwidget.h b/common/lc_previewwidget.h
index d97614dd..392ae5f9 100644
--- a/common/lc_previewwidget.h
+++ b/common/lc_previewwidget.h
@@ -25,7 +25,11 @@ public:
bool SetCurrentPiece(const QString& PartType, int ColorCode);
void ClearPreview();
+protected slots:
+ void SetPreviewLock();
+
protected:
+ QAction* mLockAction;
QToolBar* mToolBar;
QLabel* mLabel;
lcPreviewWidget* mPreview;
diff --git a/leocad.qrc b/leocad.qrc
index 52466b49..490f9281 100644
--- a/leocad.qrc
+++ b/leocad.qrc
@@ -30,6 +30,8 @@
resources/action_next.png
resources/action_paint.png
resources/action_pan.png
+ resources/action_preview_locked.png
+ resources/action_preview_unlocked.png
resources/action_previous.png
resources/action_roll.png
resources/action_rotate.png
diff --git a/resources/action_preview_locked.png b/resources/action_preview_locked.png
new file mode 100644
index 00000000..bc15f753
Binary files /dev/null and b/resources/action_preview_locked.png differ
diff --git a/resources/action_preview_unlocked.png b/resources/action_preview_unlocked.png
new file mode 100644
index 00000000..ec904a18
Binary files /dev/null and b/resources/action_preview_unlocked.png differ