2020-06-01 03:46:36 +02:00
# include "lc_global.h"
# include "lc_instructionsdialog.h"
2021-01-08 02:04:19 +01:00
# include "lc_pagesetupdialog.h"
2020-06-01 03:46:36 +02:00
# include "project.h"
# include "lc_model.h"
2021-01-08 02:04:19 +01:00
# include "lc_view.h"
2021-01-15 03:19:58 +01:00
# include "lc_collapsiblewidget.h"
2021-01-15 23:43:31 +01:00
lcInstructionsStepImageItem : : lcInstructionsStepImageItem ( const QPixmap & Pixmap , QGraphicsItem * Parent , lcModel * Model , lcStep Step )
: QGraphicsPixmapItem ( Pixmap , Parent ) , mModel ( Model ) , mStep ( Step )
2021-01-15 03:19:58 +01:00
{
}
2021-01-15 23:43:31 +01:00
lcInstructionsStepNumberItem : : lcInstructionsStepNumberItem ( const QString & Text , QGraphicsItem * Parent , lcModel * Model , lcStep Step )
: QGraphicsSimpleTextItem ( Text , Parent ) , mModel ( Model ) , mStep ( Step )
2021-01-15 03:19:58 +01:00
{
}
2020-06-01 03:46:36 +02:00
2021-01-15 23:43:31 +01:00
lcInstructionsPageWidget : : lcInstructionsPageWidget ( QWidget * Parent , lcInstructions * Instructions , lcInstructionsPropertiesWidget * PropertiesWidget )
: QGraphicsView ( Parent ) , mInstructions ( Instructions ) , mPropertiesWidget ( PropertiesWidget )
2021-01-15 23:24:44 +01:00
{
2021-01-16 00:37:28 +01:00
QGraphicsScene * Scene = new QGraphicsScene ( ) ;
setScene ( Scene ) ;
connect ( Scene , & QGraphicsScene : : selectionChanged , this , & lcInstructionsPageWidget : : SelectionChanged ) ;
2021-01-15 23:24:44 +01:00
}
2021-01-15 23:43:31 +01:00
void lcInstructionsPageWidget : : SelectionChanged ( )
2021-01-15 23:24:44 +01:00
{
2021-01-15 23:43:31 +01:00
QGraphicsScene * Scene = qobject_cast < QGraphicsScene * > ( sender ( ) ) ;
QGraphicsItem * Focus = nullptr ;
2021-01-15 23:24:44 +01:00
2021-01-15 23:43:31 +01:00
if ( Scene )
{
QList < QGraphicsItem * > SelectedItems = Scene - > selectedItems ( ) ;
2021-01-15 23:24:44 +01:00
2021-01-15 23:43:31 +01:00
if ( ! SelectedItems . isEmpty ( ) )
Focus = SelectedItems . first ( ) ;
}
2021-01-15 23:24:44 +01:00
2021-01-16 00:37:28 +01:00
mPropertiesWidget - > SelectionChanged ( Focus ) ;
2021-01-15 23:24:44 +01:00
}
2021-01-15 23:43:31 +01:00
void lcInstructionsPageWidget : : SetCurrentPage ( const lcInstructionsPage * Page )
2020-06-01 03:46:36 +02:00
{
2021-01-16 00:37:28 +01:00
QGraphicsScene * Scene = scene ( ) ;
Scene - > clear ( ) ;
2020-06-01 03:46:36 +02:00
2021-01-07 20:48:43 +01:00
if ( ! Page )
return ;
const lcInstructionsPageSetup & PageSetup = mInstructions - > mPageSetup ;
// Scene->setSceneRect(0, 0, mInstructions->mPageSetup.Width, mInstructions->mPageSetup.Height);
QGraphicsRectItem * PageItem = Scene - > addRect ( QRectF ( 0.0f , 0.0f , PageSetup . Width , PageSetup . Height ) , QPen ( Qt : : black ) , QBrush ( Qt : : white ) ) ;
PageItem - > setFlag ( QGraphicsItem : : ItemClipsChildrenToShape , true ) ;
QRectF MarginsRect ( PageSetup . MarginLeft , PageSetup . MarginTop , PageSetup . Width - PageSetup . MarginLeft - PageSetup . MarginRight , PageSetup . Height - PageSetup . MarginTop - PageSetup . MarginBottom ) ;
for ( const lcInstructionsStep & Step : Page - > Steps )
2021-01-06 03:48:12 +01:00
{
2021-01-07 20:48:43 +01:00
const float StepWidth = MarginsRect . width ( ) * Step . Rect . width ( ) ;
const float StepHeight = MarginsRect . height ( ) * Step . Rect . height ( ) ;
2021-01-08 02:04:19 +01:00
lcView View ( lcViewType : : View , Step . Model ) ;
View . SetOffscreenContext ( ) ;
View . MakeCurrent ( ) ;
2021-01-16 02:50:15 +01:00
View . SetBackgroundColorOverride ( lcRGBAFromQColor ( mInstructions - > GetColorProperty ( lcInstructionsPropertyType : : StepBackgroundColor , Step . Model , Step . Step ) ) ) ;
2021-01-08 02:04:19 +01:00
View . SetSize ( StepWidth , StepHeight ) ;
std : : vector < QImage > Images = View . GetStepImages ( Step . Step , Step . Step ) ;
if ( Images . empty ( ) )
continue ;
QImage & StepImage = Images . front ( ) ;
2021-01-07 20:48:43 +01:00
2021-01-15 23:43:31 +01:00
lcInstructionsStepImageItem * StepImageItem = new lcInstructionsStepImageItem ( QPixmap : : fromImage ( StepImage ) , PageItem , Step . Model , Step . Step ) ;
2021-01-07 20:48:43 +01:00
StepImageItem - > setFlags ( QGraphicsItem : : ItemIsMovable | QGraphicsItem : : ItemIsSelectable | QGraphicsItem : : ItemIsFocusable ) ;
StepImageItem - > setPos ( MarginsRect . left ( ) + MarginsRect . width ( ) * Step . Rect . x ( ) , MarginsRect . top ( ) + MarginsRect . height ( ) * Step . Rect . y ( ) ) ;
2021-01-15 23:43:31 +01:00
lcInstructionsStepNumberItem * StepNumberItem = new lcInstructionsStepNumberItem ( QString : : number ( Step . Step ) , StepImageItem , Step . Model , Step . Step ) ;
2021-01-16 02:50:15 +01:00
QFont StepNumberFont = mInstructions - > GetFontProperty ( lcInstructionsPropertyType : : StepNumberFont , Step . Model , Step . Step ) ;
2021-01-15 23:24:44 +01:00
StepNumberItem - > setFont ( StepNumberFont ) ;
2021-01-16 02:50:15 +01:00
StepNumberItem - > setBrush ( QBrush ( mInstructions - > GetColorProperty ( lcInstructionsPropertyType : : StepNumberColor , Step . Model , Step . Step ) ) ) ;
2021-01-07 20:48:43 +01:00
StepNumberItem - > setFlags ( QGraphicsItem : : ItemIsMovable | QGraphicsItem : : ItemIsSelectable | QGraphicsItem : : ItemIsFocusable ) ;
QImage PartsImage = Step . Model - > GetPartsListImage ( 300 , Step . Step ) ;
QGraphicsPixmapItem * PartsImageItem = new QGraphicsPixmapItem ( QPixmap : : fromImage ( PartsImage ) , StepImageItem ) ;
PartsImageItem - > setFlags ( QGraphicsItem : : ItemIsMovable | QGraphicsItem : : ItemIsSelectable | QGraphicsItem : : ItemIsFocusable ) ;
PartsImageItem - > setPos ( StepNumberItem - > boundingRect ( ) . topRight ( ) ) ;
2021-01-06 03:48:12 +01:00
}
2020-06-01 03:46:36 +02:00
}
2021-01-07 19:46:57 +01:00
lcInstructionsPageListWidget : : lcInstructionsPageListWidget ( QWidget * Parent , lcInstructions * Instructions )
: QDockWidget ( Parent ) , mInstructions ( Instructions )
2020-06-01 03:46:36 +02:00
{
QWidget * CentralWidget = new QWidget ( this ) ;
2021-01-06 23:06:15 +01:00
setWidget ( CentralWidget ) ;
setWindowTitle ( tr ( " Pages " ) ) ;
2020-06-01 03:46:36 +02:00
2021-01-07 02:45:38 +01:00
QVBoxLayout * Layout = new QVBoxLayout ( CentralWidget ) ;
2021-01-06 03:48:12 +01:00
Layout - > setContentsMargins ( 0 , 0 , 0 , 0 ) ;
2020-06-01 03:46:36 +02:00
2021-01-07 19:46:57 +01:00
QHBoxLayout * ButtonsLayout = new QHBoxLayout ( ) ;
ButtonsLayout - > setContentsMargins ( 0 , 0 , 0 , 0 ) ;
Layout - > addLayout ( ButtonsLayout ) ;
QToolButton * PageSetupButton = new QToolButton ( ) ;
PageSetupButton - > setText ( " Page Setup " ) ;
ButtonsLayout - > addWidget ( PageSetupButton ) ;
connect ( PageSetupButton , SIGNAL ( clicked ( ) ) , this , SLOT ( ShowPageSetupDialog ( ) ) ) ;
ButtonsLayout - > addStretch ( 1 ) ;
/*
2021-01-07 02:45:38 +01:00
lcCollapsibleWidget * SetupWidget = new lcCollapsibleWidget ( tr ( " Page Setup " ) , CentralWidget ) ;
Layout - > addWidget ( SetupWidget ) ;
2021-01-07 19:46:57 +01:00
// QVBoxLayout* SetupLayout = new QVBoxLayout();
// SetupWidget->SetChildLayout(SetupLayout);
QGridLayout * SetupLayout = new QGridLayout ( ) ;
2021-01-07 02:45:38 +01:00
SetupWidget - > SetChildLayout ( SetupLayout ) ;
2021-01-07 19:46:57 +01:00
// lcCollapsibleWidget* SizeWidget = new lcCollapsibleWidget(tr("Size"));
QGroupBox * SizeWidget = new QGroupBox ( tr ( " Size " ) ) ;
2021-01-07 02:45:38 +01:00
SetupLayout - > addWidget ( SizeWidget ) ;
QGridLayout * SizeLayout = new QGridLayout ( ) ;
2021-01-07 19:46:57 +01:00
// SizeWidget->SetChildLayout(SizeLayout);
SizeWidget - > setLayout ( SizeLayout ) ;
2021-01-07 02:45:38 +01:00
mWidthEdit = new lcSmallLineEdit ( ) ;
SizeLayout - > addWidget ( new QLabel ( tr ( " Width: " ) ) , 1 , 0 ) ;
SizeLayout - > addWidget ( mWidthEdit , 1 , 1 ) ;
mHeightEdit = new lcSmallLineEdit ( ) ;
SizeLayout - > addWidget ( new QLabel ( tr ( " Height: " ) ) , 1 , 2 ) ;
SizeLayout - > addWidget ( mHeightEdit , 1 , 3 ) ;
2021-01-07 19:46:57 +01:00
mUnitsComboBox = new QComboBox ( ) ;
mUnitsComboBox - > addItems ( QStringList ( ) < < tr ( " Pixels " ) < < tr ( " Centimeters " ) < < tr ( " Inches " ) ) ;
SizeLayout - > addWidget ( new QLabel ( tr ( " Units: " ) ) , 4 , 0 ) ;
SizeLayout - > addWidget ( mUnitsComboBox , 4 , 1 , 1 , - 1 ) ;
2021-01-07 02:45:38 +01:00
2021-01-07 19:46:57 +01:00
mSizeComboBox = new QComboBox ( ) ;
SizeLayout - > addWidget ( new QLabel ( tr ( " Preset: " ) ) , 5 , 0 ) ;
SizeLayout - > addWidget ( mSizeComboBox , 5 , 1 , 1 , - 1 ) ;
// lcCollapsibleWidget* OrientationWidget = new lcCollapsibleWidget(tr("Orientation"));
// SetupLayout->addWidget(OrientationWidget);
//
// QVBoxLayout* OrientationLayout = new QVBoxLayout();
// OrientationWidget->SetChildLayout(OrientationLayout);
//
// mPortraitButton = new QRadioButton(tr("Portrait"));
// OrientationLayout->addWidget(mPortraitButton);
// mLandscapeButton = new QRadioButton(tr("Landscape"));
// OrientationLayout->addWidget(mLandscapeButton);
QGroupBox * MarginsWidget = new QGroupBox ( tr ( " Margins " ) ) ;
// lcCollapsibleWidget* MarginsWidget = new lcCollapsibleWidget(tr("Margins"));
2021-01-07 02:45:38 +01:00
SetupLayout - > addWidget ( MarginsWidget ) ;
QGridLayout * MarginsLayout = new QGridLayout ( ) ;
2021-01-07 19:46:57 +01:00
// MarginsWidget->SetChildLayout(MarginsLayout);
MarginsWidget - > setLayout ( MarginsLayout ) ;
2021-01-07 02:45:38 +01:00
mLeftMarginEdit = new lcSmallLineEdit ( ) ;
2021-01-07 19:46:57 +01:00
MarginsLayout - > addWidget ( new QLabel ( tr ( " Left: " ) ) , 2 , 0 ) ;
MarginsLayout - > addWidget ( mLeftMarginEdit , 2 , 1 ) ;
2021-01-07 02:45:38 +01:00
mRightMarginEdit = new lcSmallLineEdit ( ) ;
2021-01-07 19:46:57 +01:00
MarginsLayout - > addWidget ( new QLabel ( tr ( " Right: " ) ) , 2 , 2 ) ;
MarginsLayout - > addWidget ( mRightMarginEdit , 2 , 3 ) ;
2021-01-07 02:45:38 +01:00
mTopMarginEdit = new lcSmallLineEdit ( ) ;
2021-01-07 19:46:57 +01:00
MarginsLayout - > addWidget ( new QLabel ( tr ( " Top: " ) ) , 3 , 0 ) ;
MarginsLayout - > addWidget ( mTopMarginEdit , 3 , 1 ) ;
2021-01-07 02:45:38 +01:00
mBottomMarginEdit = new lcSmallLineEdit ( ) ;
2021-01-07 19:46:57 +01:00
MarginsLayout - > addWidget ( new QLabel ( tr ( " Bottom: " ) ) , 3 , 2 ) ;
MarginsLayout - > addWidget ( mBottomMarginEdit , 3 , 3 ) ;
2021-01-07 02:45:38 +01:00
2021-01-07 19:46:57 +01:00
// lcCollapsibleWidget* UnitsWidget = new lcCollapsibleWidget(tr("Units"));
// SetupLayout->addWidget(UnitsWidget);
//
// QVBoxLayout* UnitsLayout = new QVBoxLayout();
// UnitsWidget->SetChildLayout(UnitsLayout);
2021-01-07 02:45:38 +01:00
2021-01-07 19:46:57 +01:00
// SetupWidget->Collapse();
*/
2021-01-06 23:06:15 +01:00
mThumbnailsWidget = new QListWidget ( CentralWidget ) ;
Layout - > addWidget ( mThumbnailsWidget ) ;
}
2021-01-07 19:46:57 +01:00
void lcInstructionsPageListWidget : : ShowPageSetupDialog ( )
{
lcPageSetupDialog Dialog ( this , & mInstructions - > mPageSetup ) ;
if ( Dialog . exec ( ) ! = QDialog : : Accepted )
return ;
}
2021-01-15 03:19:58 +01:00
lcInstructionsPropertiesWidget : : lcInstructionsPropertiesWidget ( QWidget * Parent , lcInstructions * Instructions )
: QDockWidget ( Parent ) , mInstructions ( Instructions )
{
QWidget * CentralWidget = new QWidget ( this ) ;
setWidget ( CentralWidget ) ;
setWindowTitle ( tr ( " Properties " ) ) ;
QGridLayout * Layout = new QGridLayout ( CentralWidget ) ;
Layout - > setContentsMargins ( 0 , 0 , 0 , 0 ) ;
QComboBox * ScopeComboBox = new QComboBox ( CentralWidget ) ;
ScopeComboBox - > addItems ( QStringList ( ) < < tr ( " Default " ) < < tr ( " Current Model " ) < < tr ( " Current Step Only " ) < < tr ( " Current Step Forward " ) ) ;
Layout - > addWidget ( new QLabel ( tr ( " Scope: " ) ) , 0 , 0 ) ;
Layout - > addWidget ( ScopeComboBox , 0 , 1 ) ;
QComboBox * PresetComboBox = new QComboBox ( CentralWidget ) ;
Layout - > addWidget ( new QLabel ( tr ( " Preset: " ) ) , 1 , 0 ) ;
Layout - > addWidget ( PresetComboBox , 1 , 1 ) ;
Layout - > setRowStretch ( 3 , 1 ) ;
}
2021-01-15 23:24:44 +01:00
void lcInstructionsPropertiesWidget : : StepImageItemFocusIn ( lcInstructionsStepImageItem * ImageItem )
2021-01-15 03:19:58 +01:00
{
mWidget = new lcCollapsibleWidget ( tr ( " Step 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 ) ;
2021-01-16 02:50:15 +01:00
QLabel * ColorLabel = new QLabel ( tr ( " Background Color: " ) ) ;
2021-01-16 00:40:06 +01:00
Layout - > addWidget ( ColorLabel , 1 , 0 ) ;
2021-01-15 03:19:58 +01:00
QToolButton * ColorButton = new QToolButton ( ) ;
2021-01-16 00:40:06 +01:00
QPixmap Pixmap ( 12 , 12 ) ;
2021-01-16 02:50:15 +01:00
QColor Color = mInstructions - > GetColorProperty ( lcInstructionsPropertyType : : StepBackgroundColor , ImageItem - > GetModel ( ) , ImageItem - > GetStep ( ) ) ;
2021-01-16 00:40:06 +01:00
Pixmap . fill ( Color ) ;
ColorButton - > setIcon ( Pixmap ) ;
Layout - > addWidget ( ColorButton , 1 , 1 ) ;
2021-01-15 03:19:58 +01:00
2021-01-16 00:40:06 +01:00
connect ( ColorButton , & QToolButton : : clicked , [ this , Color ] ( )
{
QColor NewColor = QColorDialog : : getColor ( Color , this , tr ( " Select Step Number Color " ) ) ;
2021-01-15 03:19:58 +01:00
2021-01-16 00:40:06 +01:00
if ( NewColor . isValid ( ) )
2021-01-16 02:50:15 +01:00
mInstructions - > SetDefaultColor ( lcInstructionsPropertyType : : StepBackgroundColor , NewColor ) ;
2021-01-16 00:40:06 +01:00
} ) ;
2021-01-15 03:19:58 +01:00
}
2021-01-15 23:24:44 +01:00
void lcInstructionsPropertiesWidget : : StepNumberItemFocusIn ( lcInstructionsStepNumberItem * NumberItem )
{
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 ) ;
2021-01-16 02:50:15 +01:00
QFont Font = mInstructions - > GetFontProperty ( lcInstructionsPropertyType : : StepNumberFont , NumberItem - > GetModel ( ) , NumberItem - > GetStep ( ) ) ;
2021-01-15 23:24:44 +01:00
QLabel * FontLabel = new QLabel ( tr ( " Font: " ) ) ;
Layout - > addWidget ( FontLabel , 0 , 0 ) ;
QToolButton * FontButton = new QToolButton ( ) ;
2021-01-16 02:50:15 +01:00
QString FontName = QString ( " %1 %2 " ) . arg ( Font . family ( ) , QString : : number ( Font . pointSize ( ) ) ) ;
2021-01-16 00:37:28 +01:00
FontButton - > setText ( FontName ) ;
2021-01-15 23:24:44 +01:00
Layout - > addWidget ( FontButton , 0 , 1 ) ;
2021-01-16 00:37:28 +01:00
connect ( FontButton , & QToolButton : : clicked , [ this , Font ] ( )
2021-01-15 23:24:44 +01:00
{
2021-01-16 00:37:28 +01:00
bool Ok = false ;
QFont NewFont = QFontDialog : : getFont ( & Ok , Font , this , tr ( " Select Step Number Font " ) ) ;
if ( Ok )
2021-01-16 02:50:15 +01:00
mInstructions - > SetDefaultFont ( lcInstructionsPropertyType : : StepNumberFont , NewFont ) ; // todo: this is clearing the scene selection and hiding the properties widget
2021-01-16 00:37:28 +01:00
} ) ;
2021-01-15 23:24:44 +01:00
QLabel * ColorLabel = new QLabel ( tr ( " Color: " ) ) ;
Layout - > addWidget ( ColorLabel , 1 , 0 ) ;
2021-01-16 00:37:28 +01:00
QToolButton * ColorButton = new QToolButton ( ) ;
QPixmap Pixmap ( 12 , 12 ) ;
2021-01-16 02:50:15 +01:00
QColor Color = mInstructions - > GetColorProperty ( lcInstructionsPropertyType : : StepNumberColor , NumberItem - > GetModel ( ) , NumberItem - > GetStep ( ) ) ;
2021-01-16 00:37:28 +01:00
Pixmap . fill ( Color ) ;
ColorButton - > setIcon ( Pixmap ) ;
Layout - > addWidget ( ColorButton , 1 , 1 ) ;
connect ( ColorButton , & QToolButton : : clicked , [ this , Color ] ( )
{
QColor NewColor = QColorDialog : : getColor ( Color , this , tr ( " Select Step Number Color " ) ) ;
if ( NewColor . isValid ( ) )
2021-01-16 02:50:15 +01:00
mInstructions - > SetDefaultColor ( lcInstructionsPropertyType : : StepNumberColor , NewColor ) ;
2021-01-16 00:37:28 +01:00
} ) ;
2021-01-15 23:24:44 +01:00
}
2021-01-16 00:37:28 +01:00
void lcInstructionsPropertiesWidget : : SelectionChanged ( QGraphicsItem * FocusItem )
2021-01-15 03:19:58 +01:00
{
2021-01-15 23:43:31 +01:00
if ( mFocusItem = = FocusItem )
2021-01-15 03:19:58 +01:00
return ;
delete mWidget ;
mWidget = nullptr ;
2021-01-15 23:43:31 +01:00
mFocusItem = FocusItem ;
if ( ! FocusItem )
return ;
lcInstructionsStepImageItem * ImageItem = dynamic_cast < lcInstructionsStepImageItem * > ( FocusItem ) ;
if ( ImageItem )
{
StepImageItemFocusIn ( ImageItem ) ;
return ;
}
lcInstructionsStepNumberItem * NumberItem = dynamic_cast < lcInstructionsStepNumberItem * > ( FocusItem ) ;
if ( NumberItem )
{
StepNumberItemFocusIn ( NumberItem ) ;
return ;
}
2021-01-15 03:19:58 +01:00
}
2021-01-06 23:06:15 +01:00
lcInstructionsDialog : : lcInstructionsDialog ( QWidget * Parent , Project * Project )
: QMainWindow ( Parent ) , mProject ( Project )
{
setWindowTitle ( tr ( " Instructions " ) ) ;
2020-06-01 03:46:36 +02:00
2021-01-07 19:46:57 +01:00
mInstructions = mProject - > GetInstructions ( ) ;
2021-01-15 23:43:31 +01:00
mPropertiesWidget = new lcInstructionsPropertiesWidget ( this , mInstructions ) ;
mPropertiesWidget - > setObjectName ( " InstructionsProperties " ) ;
addDockWidget ( Qt : : RightDockWidgetArea , mPropertiesWidget ) ;
mPageWidget = new lcInstructionsPageWidget ( this , mInstructions , mPropertiesWidget ) ;
2021-01-06 23:06:15 +01:00
setCentralWidget ( mPageWidget ) ;
2020-06-01 03:46:36 +02:00
2021-01-15 03:19:58 +01:00
mPageListWidget = new lcInstructionsPageListWidget ( this , mInstructions ) ;
mPageListWidget - > setObjectName ( " InstructionsPageList " ) ;
2021-01-06 23:06:15 +01:00
addDockWidget ( Qt : : LeftDockWidgetArea , mPageListWidget ) ;
2020-06-01 03:46:36 +02:00
2021-01-06 03:48:12 +01:00
mPageSettingsToolBar = addToolBar ( tr ( " Page Settings " ) ) ;
mPageSettingsToolBar - > setObjectName ( " PageSettings " ) ;
mPageSettingsToolBar - > setFloatable ( false ) ;
mPageSettingsToolBar - > setMovable ( false ) ;
mVerticalPageAction = mPageSettingsToolBar - > addAction ( " Vertical " ) ;
mVerticalPageAction - > setCheckable ( true ) ;
mHorizontalPageAction = mPageSettingsToolBar - > addAction ( " Horizontal " ) ;
mHorizontalPageAction - > setCheckable ( true ) ;
mRowsSpinBox = new QSpinBox ( mPageSettingsToolBar ) ;
mPageSettingsToolBar - > addWidget ( mRowsSpinBox ) ;
mColumnsSpinBox = new QSpinBox ( mPageSettingsToolBar ) ;
mPageSettingsToolBar - > addWidget ( mColumnsSpinBox ) ;
QActionGroup * PageDirectionGroup = new QActionGroup ( mPageSettingsToolBar ) ;
PageDirectionGroup - > addAction ( mVerticalPageAction ) ;
PageDirectionGroup - > addAction ( mHorizontalPageAction ) ;
2021-01-15 03:19:58 +01:00
for ( size_t PageNumber = 0 ; PageNumber < mInstructions - > mPages . size ( ) ; PageNumber + + )
2021-01-06 23:06:15 +01:00
mPageListWidget - > mThumbnailsWidget - > addItem ( QString ( " Page %1 " ) . arg ( PageNumber + 1 ) ) ;
2020-06-01 03:46:36 +02:00
2021-01-06 23:06:15 +01:00
connect ( mPageListWidget - > mThumbnailsWidget , SIGNAL ( currentRowChanged ( int ) ) , this , SLOT ( CurrentThumbnailChanged ( int ) ) ) ;
mPageListWidget - > mThumbnailsWidget - > setCurrentRow ( 0 ) ;
2021-01-06 03:48:12 +01:00
2021-01-15 03:19:58 +01:00
connect ( mInstructions , & lcInstructions : : PageInvalid , this , & lcInstructionsDialog : : PageInvalid ) ;
2021-01-07 02:45:38 +01:00
connect ( mVerticalPageAction , SIGNAL ( toggled ( bool ) ) , this , SLOT ( UpdatePageSettings ( ) ) ) ;
connect ( mHorizontalPageAction , SIGNAL ( toggled ( bool ) ) , this , SLOT ( UpdatePageSettings ( ) ) ) ;
2021-01-06 03:48:12 +01:00
connect ( mRowsSpinBox , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( UpdatePageSettings ( ) ) ) ;
connect ( mColumnsSpinBox , SIGNAL ( valueChanged ( int ) ) , this , SLOT ( UpdatePageSettings ( ) ) ) ;
}
void lcInstructionsDialog : : UpdatePageSettings ( )
{
lcInstructionsPageSettings PageSettings ;
PageSettings . Rows = mRowsSpinBox - > value ( ) ;
PageSettings . Columns = mColumnsSpinBox - > value ( ) ;
if ( mHorizontalPageAction - > isChecked ( ) )
PageSettings . Direction = lcInstructionsDirection : : Horizontal ;
else
PageSettings . Direction = lcInstructionsDirection : : Vertical ;
2021-01-15 03:19:58 +01:00
mInstructions - > SetDefaultPageSettings ( PageSettings ) ;
2021-01-06 03:48:12 +01:00
// lcInstructionsPage* Page = &mInstructions.mPages[mThumbnailsWidget->currentIndex().row()];
2021-01-06 23:06:15 +01:00
mPageListWidget - > mThumbnailsWidget - > clear ( ) ;
2021-01-15 03:19:58 +01:00
for ( size_t PageNumber = 0 ; PageNumber < mInstructions - > mPages . size ( ) ; PageNumber + + )
2021-01-06 23:06:15 +01:00
mPageListWidget - > mThumbnailsWidget - > addItem ( QString ( " Page %1 " ) . arg ( PageNumber + 1 ) ) ;
2021-01-06 03:48:12 +01:00
// mThumbnailsWidget->setCurrentRow(0);
// mPageWidget->SetCurrentPage(Page);
2020-06-01 03:46:36 +02:00
}
void lcInstructionsDialog : : CurrentThumbnailChanged ( int Index )
{
2021-01-15 03:19:58 +01:00
if ( Index < 0 | | Index > = static_cast < int > ( mInstructions - > mPages . size ( ) ) )
2021-01-06 03:48:12 +01:00
{
2021-01-15 23:43:31 +01:00
mPageWidget - > SetCurrentPage ( nullptr ) ;
2021-01-06 03:48:12 +01:00
return ;
}
2021-01-15 03:19:58 +01:00
const lcInstructionsPage * Page = & mInstructions - > mPages [ Index ] ;
2021-01-06 03:48:12 +01:00
// const lcInstructionsPageSettings& PageSettings = Page->Settings;
2021-01-15 03:19:58 +01:00
const lcInstructionsPageSettings & PageSettings = mInstructions - > mPageSettings ;
2021-01-06 03:48:12 +01:00
2021-01-15 23:43:31 +01:00
mPageWidget - > SetCurrentPage ( Page ) ;
2021-01-06 03:48:12 +01:00
if ( PageSettings . Direction = = lcInstructionsDirection : : Horizontal )
{
mHorizontalPageAction - > blockSignals ( true ) ;
mHorizontalPageAction - > setChecked ( true ) ;
mHorizontalPageAction - > blockSignals ( false ) ;
}
else
{
mVerticalPageAction - > blockSignals ( true ) ;
mVerticalPageAction - > setChecked ( true ) ;
mVerticalPageAction - > blockSignals ( false ) ;
}
mRowsSpinBox - > blockSignals ( true ) ;
mRowsSpinBox - > setValue ( PageSettings . Rows ) ;
mRowsSpinBox - > blockSignals ( false ) ;
mColumnsSpinBox - > blockSignals ( true ) ;
mColumnsSpinBox - > setValue ( PageSettings . Columns ) ;
mColumnsSpinBox - > blockSignals ( false ) ;
2020-06-01 03:46:36 +02:00
}
2021-01-15 03:19:58 +01:00
void lcInstructionsDialog : : PageInvalid ( int PageIndex )
{
if ( mPageListWidget - > mThumbnailsWidget - > currentRow ( ) = = PageIndex )
{
const lcInstructionsPage * Page = & mInstructions - > mPages [ PageIndex ] ;
2021-01-15 23:43:31 +01:00
mPageWidget - > SetCurrentPage ( Page ) ;
2021-01-15 03:19:58 +01:00
}
}