mirror of
https://github.com/leozide/leocad
synced 2025-01-18 22:26:44 +01:00
Added step number properties.
This commit is contained in:
parent
929cf2919c
commit
d4084ffb00
4 changed files with 163 additions and 16 deletions
|
@ -39,8 +39,42 @@ lcInstructionsStepProperties lcInstructions::GetStepProperties(lcModel* Model, l
|
|||
{
|
||||
const lcInstructionsStepProperties& Properties = InstructionModel.StepProperties[StepIndex];
|
||||
|
||||
if (Properties.BackgroundColorMode == lcInstructionsPropertyMode::Set || (Properties.BackgroundColorMode == lcInstructionsPropertyMode::StepOnly && Step == StepIndex))
|
||||
auto ShouldSetProperty = [StepIndex, Step](lcInstructionsPropertyMode Mode)
|
||||
{
|
||||
switch (Mode)
|
||||
{
|
||||
case lcInstructionsPropertyMode::NotSet:
|
||||
return false;
|
||||
case lcInstructionsPropertyMode::Default:
|
||||
return true;
|
||||
case lcInstructionsPropertyMode::Model:
|
||||
return true;
|
||||
case lcInstructionsPropertyMode::StepForward:
|
||||
return true;
|
||||
case lcInstructionsPropertyMode::StepOnly:
|
||||
return StepIndex == Step;
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
if (ShouldSetProperty(Properties.BackgroundColorMode))
|
||||
{
|
||||
StepProperties.BackgroundColorMode = Properties.BackgroundColorMode;
|
||||
StepProperties.BackgroundColor = Properties.BackgroundColor;
|
||||
}
|
||||
|
||||
if (ShouldSetProperty(Properties.StepNumberFontMode))
|
||||
{
|
||||
StepProperties.StepNumberFontMode = Properties.StepNumberFontMode;
|
||||
StepProperties.StepNumberFont = Properties.StepNumberFont;
|
||||
}
|
||||
|
||||
if (ShouldSetProperty(Properties.StepNumberColorMode))
|
||||
{
|
||||
StepProperties.StepNumberColorMode = Properties.StepNumberColorMode;
|
||||
StepProperties.StepNumberColor = Properties.StepNumberColor;
|
||||
}
|
||||
}
|
||||
|
||||
return StepProperties;
|
||||
|
|
|
@ -28,12 +28,20 @@ struct lcInstructionsPageSettings
|
|||
enum class lcInstructionsPropertyMode
|
||||
{
|
||||
NotSet,
|
||||
Set,
|
||||
Default,
|
||||
Model,
|
||||
StepForward,
|
||||
StepOnly
|
||||
};
|
||||
|
||||
struct lcInstructionsStepProperties
|
||||
{
|
||||
lcInstructionsPropertyMode StepNumberFontMode = lcInstructionsPropertyMode::NotSet;
|
||||
QString StepNumberFont = QFont("Helvetica", 72).toString();
|
||||
|
||||
lcInstructionsPropertyMode StepNumberColorMode = lcInstructionsPropertyMode::NotSet;
|
||||
quint32 StepNumberColor = LC_RGBA(0, 0, 0, 255);
|
||||
|
||||
lcInstructionsPropertyMode BackgroundColorMode = lcInstructionsPropertyMode::NotSet;
|
||||
quint32 BackgroundColor = LC_RGBA(255, 255, 255, 0);
|
||||
};
|
||||
|
|
|
@ -6,25 +6,44 @@
|
|||
#include "lc_view.h"
|
||||
#include "lc_collapsiblewidget.h"
|
||||
|
||||
lcInstructionsStepItem::lcInstructionsStepItem(const QPixmap& Pixmap, QGraphicsItem* Parent, lcInstructionsPropertiesWidget* PropertiesWidget)
|
||||
: QGraphicsPixmapItem(Pixmap, Parent), mPropertiesWidget(PropertiesWidget)
|
||||
lcInstructionsStepImageItem::lcInstructionsStepImageItem(const QPixmap& Pixmap, QGraphicsItem* Parent, lcModel* Model, lcStep Step, lcInstructionsPropertiesWidget* PropertiesWidget)
|
||||
: QGraphicsPixmapItem(Pixmap, Parent), mModel(Model), mStep(Step), mPropertiesWidget(PropertiesWidget)
|
||||
{
|
||||
}
|
||||
|
||||
void lcInstructionsStepItem::focusInEvent(QFocusEvent* FocusEvent)
|
||||
void lcInstructionsStepImageItem::focusInEvent(QFocusEvent* FocusEvent)
|
||||
{
|
||||
mPropertiesWidget->StepItemFocusIn(this);
|
||||
mPropertiesWidget->StepImageItemFocusIn(this);
|
||||
|
||||
QGraphicsPixmapItem::focusInEvent(FocusEvent);
|
||||
}
|
||||
|
||||
void lcInstructionsStepItem::focusOutEvent(QFocusEvent* FocusEvent)
|
||||
void lcInstructionsStepImageItem::focusOutEvent(QFocusEvent* FocusEvent)
|
||||
{
|
||||
mPropertiesWidget->ItemFocusOut(this);
|
||||
|
||||
QGraphicsPixmapItem::focusOutEvent(FocusEvent);
|
||||
}
|
||||
|
||||
lcInstructionsStepNumberItem::lcInstructionsStepNumberItem(const QString& Text, QGraphicsItem* Parent, lcModel* Model, lcStep Step, lcInstructionsPropertiesWidget* PropertiesWidget)
|
||||
: QGraphicsSimpleTextItem(Text, Parent), mModel(Model), mStep(Step), mPropertiesWidget(PropertiesWidget)
|
||||
{
|
||||
}
|
||||
|
||||
void lcInstructionsStepNumberItem::focusInEvent(QFocusEvent* FocusEvent)
|
||||
{
|
||||
mPropertiesWidget->StepNumberItemFocusIn(this);
|
||||
|
||||
QGraphicsSimpleTextItem::focusInEvent(FocusEvent);
|
||||
}
|
||||
|
||||
void lcInstructionsStepNumberItem::focusOutEvent(QFocusEvent* FocusEvent)
|
||||
{
|
||||
mPropertiesWidget->ItemFocusOut(this);
|
||||
|
||||
QGraphicsSimpleTextItem::focusOutEvent(FocusEvent);
|
||||
}
|
||||
|
||||
lcInstructionsPageWidget::lcInstructionsPageWidget(QWidget* Parent, lcInstructions* Instructions)
|
||||
: QGraphicsView(Parent), mInstructions(Instructions)
|
||||
{
|
||||
|
@ -66,12 +85,16 @@ void lcInstructionsPageWidget::SetCurrentPage(const lcInstructionsPage* Page, lc
|
|||
|
||||
QImage& StepImage = Images.front();
|
||||
|
||||
lcInstructionsStepItem* StepImageItem = new lcInstructionsStepItem(QPixmap::fromImage(StepImage), PageItem, PropertiesWidget);
|
||||
lcInstructionsStepImageItem* StepImageItem = new lcInstructionsStepImageItem(QPixmap::fromImage(StepImage), PageItem, Step.Model, Step.Step, PropertiesWidget);
|
||||
StepImageItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
|
||||
StepImageItem->setPos(MarginsRect.left() + MarginsRect.width() * Step.Rect.x(), MarginsRect.top() + MarginsRect.height() * Step.Rect.y());
|
||||
|
||||
QGraphicsSimpleTextItem* StepNumberItem = new QGraphicsSimpleTextItem(QString::number(Step.Step), StepImageItem);
|
||||
StepNumberItem->setFont(QFont("Helvetica", 96));
|
||||
lcInstructionsStepNumberItem* StepNumberItem = new lcInstructionsStepNumberItem(QString::number(Step.Step), StepImageItem, Step.Model, Step.Step, PropertiesWidget);
|
||||
QFont StepNumberFont;
|
||||
if (!StepNumberFont.fromString(StepProperties.StepNumberFont))
|
||||
StepNumberFont = QFont("Helvetica", 72);
|
||||
StepNumberItem->setFont(StepNumberFont);
|
||||
StepNumberItem->setBrush(QBrush(QColor::fromRgb(LC_RGBA_RED(StepProperties.StepNumberColor), LC_RGBA_GREEN(StepProperties.StepNumberColor), LC_RGBA_BLUE(StepProperties.StepNumberColor))));
|
||||
StepNumberItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
|
||||
|
||||
QImage PartsImage = Step.Model->GetPartsListImage(300, Step.Step);
|
||||
|
@ -234,12 +257,12 @@ void lcInstructionsPropertiesWidget::ColorButtonClicked()
|
|||
// mPageListWidget->mThumbnailsWidget->setCurrentRow(0);
|
||||
}
|
||||
|
||||
void lcInstructionsPropertiesWidget::StepItemFocusIn(lcInstructionsStepItem* StepItem)
|
||||
void lcInstructionsPropertiesWidget::StepImageItemFocusIn(lcInstructionsStepImageItem* ImageItem)
|
||||
{
|
||||
if (mFocusItem == StepItem)
|
||||
if (mFocusItem == ImageItem)
|
||||
return;
|
||||
|
||||
mFocusItem = StepItem;
|
||||
mFocusItem = ImageItem;
|
||||
|
||||
delete mWidget;
|
||||
mWidget = new lcCollapsibleWidget(tr("Step Properties")); // todo: disable collapse
|
||||
|
@ -258,6 +281,51 @@ void lcInstructionsPropertiesWidget::StepItemFocusIn(lcInstructionsStepItem* Ste
|
|||
connect(ColorButton, &QToolButton::clicked, this, &lcInstructionsPropertiesWidget::ColorButtonClicked);
|
||||
}
|
||||
|
||||
void lcInstructionsPropertiesWidget::StepNumberItemFocusIn(lcInstructionsStepNumberItem* NumberItem)
|
||||
{
|
||||
if (mFocusItem == NumberItem)
|
||||
return;
|
||||
|
||||
mFocusItem = NumberItem;
|
||||
|
||||
delete mWidget;
|
||||
mWidget = new lcCollapsibleWidget(tr("Step Number Properties")); // todo: disable collapse
|
||||
|
||||
QGridLayout* WidgetLayout = qobject_cast<QGridLayout*>(widget()->layout());
|
||||
WidgetLayout->addWidget(mWidget, 2, 0, 1, -1);
|
||||
|
||||
QGridLayout* Layout = new QGridLayout();
|
||||
mWidget->SetChildLayout(Layout);
|
||||
|
||||
lcInstructionsStepProperties StepProperties = mInstructions->GetStepProperties(NumberItem->GetModel(), NumberItem->GetStep());
|
||||
|
||||
QFont Font;
|
||||
Font.fromString(StepProperties.StepNumberFont);
|
||||
|
||||
QLabel* FontLabel = new QLabel(tr("Font:"));
|
||||
Layout->addWidget(FontLabel, 0, 0);
|
||||
|
||||
QToolButton* FontButton = new QToolButton();
|
||||
FontButton->setText(Font.family());
|
||||
Layout->addWidget(FontButton, 0, 1);
|
||||
|
||||
connect(FontButton, &QToolButton::clicked, []()
|
||||
{
|
||||
bool Ok;
|
||||
QFontDialog::getFont(&Ok);
|
||||
});// this, & lcInstructionsPropertiesWidget::ColorButtonClicked);
|
||||
|
||||
QLabel* ColorLabel = new QLabel(tr("Color:"));
|
||||
Layout->addWidget(ColorLabel, 1, 0);
|
||||
|
||||
// QToolButton* ColorButton = new QToolButton();
|
||||
// ColorButton->setText("Font");
|
||||
//
|
||||
// Layout->addWidget(ColorButton);
|
||||
//
|
||||
// connect(ColorButton, &QToolButton::clicked, this, &lcInstructionsPropertiesWidget::ColorButtonClicked);
|
||||
}
|
||||
|
||||
void lcInstructionsPropertiesWidget::ItemFocusOut(QGraphicsItem* Item)
|
||||
{
|
||||
if (mFocusItem != Item)
|
||||
|
|
|
@ -4,15 +4,51 @@
|
|||
|
||||
class lcInstructionsPropertiesWidget;
|
||||
|
||||
class lcInstructionsStepItem : public QGraphicsPixmapItem
|
||||
class lcInstructionsStepImageItem : public QGraphicsPixmapItem
|
||||
{
|
||||
public:
|
||||
lcInstructionsStepItem(const QPixmap& Pixmap, QGraphicsItem* Parent, lcInstructionsPropertiesWidget* PropertiesWidget);
|
||||
lcInstructionsStepImageItem(const QPixmap& Pixmap, QGraphicsItem* Parent, lcModel* Model, lcStep Step, lcInstructionsPropertiesWidget* PropertiesWidget);
|
||||
|
||||
lcModel* GetModel() const
|
||||
{
|
||||
return mModel;
|
||||
}
|
||||
|
||||
lcStep GetStep() const
|
||||
{
|
||||
return mStep;
|
||||
}
|
||||
|
||||
protected:
|
||||
void focusInEvent(QFocusEvent* FocusEvent) override;
|
||||
void focusOutEvent(QFocusEvent* FocusEvent) override;
|
||||
|
||||
lcModel* mModel = nullptr;
|
||||
lcStep mStep = 1;
|
||||
lcInstructionsPropertiesWidget* mPropertiesWidget = nullptr;
|
||||
};
|
||||
|
||||
class lcInstructionsStepNumberItem : public QGraphicsSimpleTextItem
|
||||
{
|
||||
public:
|
||||
lcInstructionsStepNumberItem(const QString& Text, QGraphicsItem* Parent, lcModel* Model, lcStep Step, lcInstructionsPropertiesWidget* PropertiesWidget);
|
||||
|
||||
lcModel* GetModel() const
|
||||
{
|
||||
return mModel;
|
||||
}
|
||||
|
||||
lcStep GetStep() const
|
||||
{
|
||||
return mStep;
|
||||
}
|
||||
|
||||
protected:
|
||||
void focusInEvent(QFocusEvent* FocusEvent) override;
|
||||
void focusOutEvent(QFocusEvent* FocusEvent) override;
|
||||
|
||||
lcModel* mModel = nullptr;
|
||||
lcStep mStep = 1;
|
||||
lcInstructionsPropertiesWidget* mPropertiesWidget = nullptr;
|
||||
};
|
||||
|
||||
|
@ -68,7 +104,8 @@ class lcInstructionsPropertiesWidget : public QDockWidget
|
|||
public:
|
||||
lcInstructionsPropertiesWidget(QWidget* Parent, lcInstructions* Instructions);
|
||||
|
||||
void StepItemFocusIn(lcInstructionsStepItem* StepItem);
|
||||
void StepImageItemFocusIn(lcInstructionsStepImageItem* ImageItem);
|
||||
void StepNumberItemFocusIn(lcInstructionsStepNumberItem* NumberItem);
|
||||
void ItemFocusOut(QGraphicsItem* Item);
|
||||
|
||||
protected slots:
|
||||
|
|
Loading…
Reference in a new issue