17 #include "preferencesdialog.h"
19 #include <QMessageBox>
21 PreferencesDialog::PreferencesDialog( QWidget* parent ) : QDialog(parent)
23 setWindowTitle(tr(
"Preferences"));
25 setMaximumHeight(680);
28 PreferencesDialog::~PreferencesDialog()
34 Q_ASSERT( m !=
nullptr );
37 contentsWidget =
new QListWidget;
38 contentsWidget->setViewMode( QListView::IconMode );
39 contentsWidget->setIconSize( QSize( 96, 84 ) );
40 contentsWidget->setMovement( QListView::Static );
41 contentsWidget->setMaximumWidth( 128 );
42 contentsWidget->setSpacing( 5 );
45 general->setManager( mPrefManager );
46 general->updateValues();
50 mFilesPage->setManager( mPrefManager );
51 mFilesPage->updateValues();
53 connect(mFilesPage, &FilesPage::clearRecentList,
this, &PreferencesDialog::clearRecentList);
54 connect(
this, &PreferencesDialog::updateRecentFileListBtn, mFilesPage, &FilesPage::updateClearRecentListButton);
57 timeline->setManager( mPrefManager );
58 timeline->updateValues();
61 tools->setManager( mPrefManager );
62 tools->updateValues();
65 shortcuts->setManager( mPrefManager );
67 pagesWidget =
new QStackedWidget;
68 pagesWidget->setMinimumHeight(40);
70 pagesWidget->addWidget( general );
71 pagesWidget->addWidget( mFilesPage );
72 pagesWidget->addWidget( timeline );
73 pagesWidget->addWidget( tools );
74 pagesWidget->addWidget( shortcuts );
76 QPushButton* closeButton =
new QPushButton( tr(
"Close",
"Close button of preference dialog." ) );
77 connect( closeButton, &QPushButton::clicked,
this, &PreferencesDialog::close );
80 contentsWidget->setCurrentRow( 0 );
82 QHBoxLayout* horizontalLayout =
new QHBoxLayout;
83 horizontalLayout->addWidget( contentsWidget );
84 horizontalLayout->addWidget( pagesWidget, 1 );
86 QHBoxLayout* buttonsLayout =
new QHBoxLayout;
87 buttonsLayout->addStretch( 1 );
88 buttonsLayout->addWidget( closeButton );
90 QVBoxLayout* mainLayout =
new QVBoxLayout;
91 mainLayout->addLayout( horizontalLayout );
92 mainLayout->addStretch( 1 );
93 mainLayout->addSpacing( 5 );
94 mainLayout->addLayout( buttonsLayout );
95 setLayout( mainLayout );
98 void PreferencesDialog::createIcons()
100 QListWidgetItem* generalButton =
new QListWidgetItem(contentsWidget);
101 generalButton->setIcon(QIcon(
":icons/prefspencil.png"));
102 generalButton->setText(tr(
"General"));
103 generalButton->setTextAlignment(Qt::AlignHCenter);
104 generalButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
106 QListWidgetItem* filesButton =
new QListWidgetItem(contentsWidget);
107 filesButton->setIcon(QIcon(
":icons/prefs-files.png"));
108 filesButton->setText(tr(
"Files"));
109 filesButton->setTextAlignment(Qt::AlignHCenter);
110 filesButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
112 QListWidgetItem* timelineButton =
new QListWidgetItem(contentsWidget);
113 timelineButton->setIcon(QIcon(
":icons/prefstimeline.png"));
114 timelineButton->setText(tr(
"Timeline"));
115 timelineButton->setTextAlignment(Qt::AlignHCenter);
116 timelineButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
118 QListWidgetItem* toolsButton =
new QListWidgetItem(contentsWidget);
119 toolsButton->setIcon(QIcon(
":/icons/prefs-files.png"));
120 toolsButton->setText(tr(
"Tools"));
121 toolsButton->setTextAlignment(Qt::AlignHCenter);
122 toolsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
124 QListWidgetItem* shortcutsButton =
new QListWidgetItem(contentsWidget);
125 shortcutsButton->setIcon(QIcon(
":/icons/prefs-shortcuts.png"));
126 shortcutsButton->setText(tr(
"Shortcuts"));
127 shortcutsButton->setTextAlignment(Qt::AlignHCenter);
128 shortcutsButton->setFlags((Qt::ItemIsSelectable | Qt::ItemIsEnabled));
130 auto onCurrentItemChanged =
static_cast< void ( QListWidget::* )( QListWidgetItem*, QListWidgetItem* )
>( &QListWidget::currentItemChanged );
131 connect(contentsWidget,
132 onCurrentItemChanged,
134 &PreferencesDialog::changePage);
137 void PreferencesDialog::closeEvent(QCloseEvent *)
139 done( QDialog::Accepted );
142 void PreferencesDialog::changePage(QListWidgetItem* current, QListWidgetItem* previous)
147 pagesWidget->setCurrentIndex(contentsWidget->row(current));
150 void PreferencesDialog::updateRecentListBtn(
bool isEmpty)
154 emit updateRecentFileListBtn();
158 GeneralPage::GeneralPage(QWidget* parent) : QWidget(parent)
160 QSettings settings( PENCIL2D, PENCIL2D );
161 contents =
new QWidget();
162 QVBoxLayout* outerLay =
new QVBoxLayout(
this);
163 QVBoxLayout* lay =
new QVBoxLayout(contents);
164 scrollArea =
new QScrollArea;
166 QGroupBox* languageBox =
new QGroupBox( tr(
"Language",
"GroupBox title in Preference") );
167 QGroupBox* windowOpacityBox =
new QGroupBox( tr(
"Window opacity",
"GroupBox title in Preference" ) );
168 QGroupBox* backgroundBox =
new QGroupBox( tr(
"Background",
"GroupBox title in Preference" ) );
169 QGroupBox* appearanceBox =
new QGroupBox( tr(
"Appearance",
"GroupBox title in Preference" ) );
170 QGroupBox* displayBox =
new QGroupBox( tr(
"Canvas",
"GroupBox title in Preference" ) );
171 QGroupBox* editingBox =
new QGroupBox( tr(
"Editing",
"GroupBox title in Preference" ) );
172 QGroupBox* gridBox =
new QGroupBox(tr(
"Grid",
"groupBox title in Preference") );
174 mLanguageCombo =
new QComboBox;
175 mLanguageCombo->addItem( tr(
"<System-Language>" ),
"" );
176 mLanguageCombo->addItem( tr(
"Czech" ),
"cs" );
177 mLanguageCombo->addItem( tr(
"Danish" ),
"da" );
178 mLanguageCombo->addItem( tr(
"English" ),
"en" );
179 mLanguageCombo->addItem( tr(
"German" ),
"de" );
180 mLanguageCombo->addItem( tr(
"Spanish" ),
"es" );
181 mLanguageCombo->addItem( tr(
"French" ),
"fr" );
182 mLanguageCombo->addItem( tr(
"Hungarian" ),
"hu-HU" );
183 mLanguageCombo->addItem( tr(
"Italian" ),
"it" );
184 mLanguageCombo->addItem( tr(
"Japanese" ),
"ja" );
185 mLanguageCombo->addItem( tr(
"Portuguese - Brazil" ),
"pt-BR" );
186 mLanguageCombo->addItem( tr(
"Russian" ),
"ja" );
187 mLanguageCombo->addItem( tr(
"Chinese - Taiwan" ),
"zh-TW" );
189 QLabel* windowOpacityLabel =
new QLabel(tr(
"Opacity"));
190 mWindowOpacityLevel =
new QSlider(Qt::Horizontal);
191 mWindowOpacityLevel->setMinimum(30);
192 mWindowOpacityLevel->setMaximum(100);
193 int value = settings.value(
"windowOpacity").toInt();
194 mWindowOpacityLevel->setValue( 100 - value );
196 mBackgroundButtons =
new QButtonGroup();
197 QRadioButton* checkerBackgroundButton =
new QRadioButton();
198 QRadioButton* whiteBackgroundButton =
new QRadioButton();
199 QRadioButton* greyBackgroundButton =
new QRadioButton();
200 QRadioButton* dotsBackgroundButton =
new QRadioButton();
201 QRadioButton* weaveBackgroundButton =
new QRadioButton();
203 QPixmap previewCheckerboard(
":background/checkerboard.png" );
204 QPixmap previewWhite(32,32);
205 QPixmap previewGrey(32,32);
206 QPixmap previewDots(
":background/dots.png" );
207 QPixmap previewWeave(
":background/weave.jpg" );
209 previewWhite.fill( Qt::white );
211 previewGrey.fill( Qt:: lightGray );
213 checkerBackgroundButton->setIcon( previewCheckerboard.scaled(32, 32) );
214 whiteBackgroundButton->setIcon( previewWhite );
215 greyBackgroundButton->setIcon( previewGrey );
216 dotsBackgroundButton->setIcon( previewDots.scaled(32, 32) );
217 weaveBackgroundButton->setIcon( previewWeave.scaled(32, 32) );
218 mBackgroundButtons->addButton(checkerBackgroundButton);
219 mBackgroundButtons->addButton(whiteBackgroundButton);
220 mBackgroundButtons->addButton(greyBackgroundButton);
221 mBackgroundButtons->addButton(dotsBackgroundButton);
222 mBackgroundButtons->addButton(weaveBackgroundButton);
223 mBackgroundButtons->setId(checkerBackgroundButton, 1);
224 mBackgroundButtons->setId(whiteBackgroundButton, 2);
225 mBackgroundButtons->setId(greyBackgroundButton, 3);
226 mBackgroundButtons->setId(dotsBackgroundButton, 4);
227 mBackgroundButtons->setId(weaveBackgroundButton, 5);
229 QHBoxLayout* backgroundLayout =
new QHBoxLayout();
230 backgroundBox->setLayout(backgroundLayout);
231 backgroundLayout->addWidget(checkerBackgroundButton);
232 backgroundLayout->addWidget(whiteBackgroundButton);
233 backgroundLayout->addWidget(greyBackgroundButton);
234 backgroundLayout->addWidget(dotsBackgroundButton);
235 backgroundLayout->addWidget(weaveBackgroundButton);
237 mShadowsBox =
new QCheckBox(tr(
"Shadows"));
238 mToolCursorsBox =
new QCheckBox(tr(
"Tool Cursors"));
239 mAntialiasingBox =
new QCheckBox(tr(
"Antialiasing"));
240 mDottedCursorBox =
new QCheckBox(tr(
"Dotted Cursor"));
242 QGridLayout* langLayout =
new QGridLayout;
243 languageBox->setLayout( langLayout );
244 langLayout->addWidget( mLanguageCombo );
247 mGridCheckBox =
new QCheckBox(tr(
"Enable Grid"));
249 mGridSizeInput =
new QSpinBox();
250 mGridSizeInput->setMinimum(1);
251 mGridSizeInput->setMaximum(512);
252 mGridSizeInput->setFixedWidth(80);
253 gridSize = settings.value(
"gridSize").toInt();
254 mGridSizeInput->setValue( gridSize );
256 connect( mGridSizeInput, SIGNAL(valueChanged(
int)),
this, SLOT(gridSizeChange(
int)));
258 QGridLayout* windowOpacityLayout =
new QGridLayout();
259 windowOpacityBox->setLayout(windowOpacityLayout);
260 windowOpacityLayout->addWidget(windowOpacityLabel, 0, 0);
261 windowOpacityLayout->addWidget(mWindowOpacityLevel, 0, 1);
263 QVBoxLayout* appearanceLayout =
new QVBoxLayout();
264 appearanceBox->setLayout(appearanceLayout);
265 appearanceLayout->addWidget(mShadowsBox);
266 appearanceLayout->addWidget(mToolCursorsBox);
267 appearanceLayout->addWidget(mDottedCursorBox);
269 QGridLayout* displayLayout =
new QGridLayout();
270 displayBox->setLayout(displayLayout);
271 displayLayout->addWidget(mAntialiasingBox, 0, 0);
273 QGridLayout* gridLayout =
new QGridLayout();
274 gridBox->setLayout(gridLayout);
275 gridLayout->addWidget(mGridSizeInput, 0, 0);
276 gridLayout->addWidget(mGridCheckBox, 0, 10);
278 QLabel* curveSmoothingLabel =
new QLabel(tr(
"Vector curve smoothing"));
279 mCurveSmoothingLevel =
new QSlider(Qt::Horizontal);
280 mCurveSmoothingLevel->setMinimum(1);
281 mCurveSmoothingLevel->setMaximum(100);
282 value = settings.value(
"curveSmoothing").toInt();
283 mCurveSmoothingLevel->setValue( value );
285 mHighResBox =
new QCheckBox(tr(
"Tablet high-resolution position"));
288 QGridLayout* editingLayout =
new QGridLayout();
289 editingBox->setLayout(editingLayout);
290 editingLayout->addWidget(curveSmoothingLabel, 0, 0);
291 editingLayout->addWidget(mCurveSmoothingLevel, 1, 0);
292 editingLayout->addWidget(mHighResBox, 2, 0);
294 outerLay->addWidget(scrollArea);
295 outerLay->addStretch(1);
297 lay->addWidget( languageBox );
298 lay->addWidget( windowOpacityBox );
299 lay->addWidget( appearanceBox );
300 lay->addWidget( backgroundBox );
301 lay->addWidget( displayBox );
302 lay->addWidget( editingBox );
303 lay->addWidget( gridBox );
305 scrollArea->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
306 scrollArea->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOn);
307 scrollArea->setMaximumWidth(400);
308 scrollArea->setMinimumWidth(128);
309 scrollArea->setWidgetResizable (
true);
310 scrollArea->setWidget(contents);
314 auto kButtonClicked =
static_cast< void (QButtonGroup::* )(
int )
>( &QButtonGroup::buttonClicked );
315 auto kCurIndexChagned =
static_cast< void( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged );
316 connect( mLanguageCombo, kCurIndexChagned,
this, &GeneralPage::languageChanged );
317 connect( mWindowOpacityLevel, &QSlider::valueChanged, preference, &PreferencesDialog::windowOpacityChange );
318 connect( mBackgroundButtons, kButtonClicked,
this, &GeneralPage::backgroundChange );
319 connect( mShadowsBox, &QCheckBox::stateChanged,
this, &GeneralPage::shadowsCheckboxStateChanged );
320 connect( mToolCursorsBox, &QCheckBox::stateChanged,
this, &GeneralPage::toolCursorsCheckboxStateChanged );
321 connect( mAntialiasingBox, &QCheckBox::stateChanged,
this, &GeneralPage::antiAliasCheckboxStateChanged );
322 connect( mCurveSmoothingLevel, &QSlider::valueChanged,
this, &GeneralPage::curveSmoothingChange );
323 connect( mHighResBox, &QCheckBox::stateChanged,
this, &GeneralPage::highResCheckboxStateChanged );
324 connect( mDottedCursorBox, &QCheckBox::stateChanged,
this, &GeneralPage::dottedCursorCheckboxStateChanged );
325 connect( mGridSizeInput, SIGNAL(valueChanged(
int)),
this, SLOT(gridSizeChange(
int)));
326 connect( mGridCheckBox, &QCheckBox::stateChanged,
this, &GeneralPage::gridCheckBoxStateChanged );
331 void GeneralPage::resizeEvent(QResizeEvent *event)
334 if (this->height() < 560 ) {
335 size = this->height();
336 }
else if (this->height() >= 560) {
339 scrollArea->setMinimumHeight(size);
340 QWidget::resizeEvent(event);
344 void GeneralPage::updateValues()
346 int index = mLanguageCombo->findData( mManager->getString( SETTING::LANGUAGE ) );
350 mLanguageCombo->blockSignals(
true );
351 mLanguageCombo->setCurrentIndex( index );
352 mLanguageCombo->blockSignals(
false );
355 mCurveSmoothingLevel->setValue(mManager->getInt(SETTING::CURVE_SMOOTHING));
356 mWindowOpacityLevel->setValue(100 - mManager->getInt(SETTING::WINDOW_OPACITY));
357 mShadowsBox->setChecked(mManager->isOn(SETTING::SHADOW));
358 mToolCursorsBox->setChecked(mManager->isOn(SETTING::TOOL_CURSOR));
359 mAntialiasingBox->setChecked(mManager->isOn(SETTING::ANTIALIAS));
360 mDottedCursorBox->setChecked(mManager->isOn(SETTING::DOTTED_CURSOR));
361 mGridSizeInput->setValue(mManager->getInt(SETTING::GRID_SIZE));
362 mGridCheckBox->setChecked(mManager->isOn(SETTING::GRID));
364 mHighResBox->setChecked(mManager->isOn(SETTING::HIGH_RESOLUTION));
366 QString bgName = mManager->getString(SETTING::BACKGROUND_STYLE);
367 if (bgName ==
"checkerboard") {
368 mBackgroundButtons->button(1)->setChecked(
true);
370 if (bgName ==
"white") {
371 mBackgroundButtons->button(2)->setChecked(
true);
373 if (bgName ==
"grey") {
374 mBackgroundButtons->button(3)->setChecked(
true);
376 if (bgName ==
"dots") {
377 mBackgroundButtons->button(4)->setChecked(
true);
379 if (bgName ==
"weave") {
380 mBackgroundButtons->button(5)->setChecked(
true);
384 void GeneralPage::languageChanged(
int i )
386 QString strLocale = mLanguageCombo->itemData( i ).toString();
387 mManager->set( SETTING::LANGUAGE, strLocale );
389 QMessageBox::warning(
this,
390 tr(
"Restart Required" ),
391 tr(
"The language change will take effect after a restart of Pencil2D" ) );
394 void GeneralPage::backgroundChange(
int value)
396 QString brushName =
"white";
399 brushName =
"checkerboard";
416 mManager->set(SETTING::BACKGROUND_STYLE, brushName);
419 void GeneralPage::curveSmoothingChange(
int value)
421 mManager->set(SETTING::CURVE_SMOOTHING, value);
424 void GeneralPage::highResCheckboxStateChanged(
bool b )
426 mManager->set( SETTING::HIGH_RESOLUTION, b );
429 void GeneralPage::shadowsCheckboxStateChanged(
bool b )
431 mManager->set( SETTING::SHADOW, b );
434 void GeneralPage::antiAliasCheckboxStateChanged(
bool b )
436 mManager->set( SETTING::ANTIALIAS, b );
439 void GeneralPage::toolCursorsCheckboxStateChanged(
bool b)
441 mManager->set( SETTING::TOOL_CURSOR, b );
444 void GeneralPage::dottedCursorCheckboxStateChanged(
bool b)
446 mManager->set( SETTING::DOTTED_CURSOR, b );
449 void GeneralPage::gridSizeChange(
int value)
451 mManager->set(SETTING::GRID_SIZE, value);
454 void GeneralPage::gridCheckBoxStateChanged(
bool b)
456 mManager->set(SETTING::GRID, b);
459 TimelinePage::TimelinePage(QWidget* parent) : QWidget(parent)
461 QSettings settings( PENCIL2D, PENCIL2D );
463 QVBoxLayout* lay =
new QVBoxLayout();
465 QGroupBox* timeLineBox =
new QGroupBox(tr(
"Timeline"));
466 mDrawLabel =
new QCheckBox(tr(
"Draw timeline labels"));
467 mFontSize =
new QSpinBox();
468 QLabel* frameSizeLabel =
new QLabel(tr(
"Frame size"));
469 mFrameSize =
new QSlider(Qt::Horizontal,
this);
470 QLabel* lengthSizeLabel =
new QLabel(tr(
"Timeline size in Frames"));
471 mLengthSize =
new QLineEdit(
this);
472 QIntValidator* lengthSizeValidator =
new QIntValidator(
this);
473 lengthSizeValidator->setBottom(2);
474 mLengthSize->setValidator( lengthSizeValidator );
476 mScrubBox =
new QCheckBox(tr(
"Short scrub"));
478 mFontSize->setRange(4, 20);
479 mFrameSize->setRange(4, 20);
481 mFontSize->setFixedWidth(50);
482 mLengthSize->setFixedWidth(50);
485 mFrameSize->setValue(settings.value(
"frameSize").toInt());
486 if (settings.value(
"labelFontSize").toInt()==0) mFontSize->setValue(12);
487 if (settings.value(
"frameSize").toInt()==0) mFrameSize->setValue(6);
488 mLengthSize->setText(settings.value(
"length").toString());
489 if (settings.value(
"length").toInt()==0) mLengthSize->setText(
"240");
491 connect(mFontSize, SIGNAL(valueChanged(
int)),
this, SLOT(fontSizeChange(
int)));
492 connect(mFrameSize, SIGNAL(valueChanged(
int)),
this, SLOT(frameSizeChange(
int)));
493 connect(mLengthSize, SIGNAL(textChanged(QString)),
this, SLOT(lengthSizeChange(QString)));
494 connect( mDrawLabel, &QCheckBox::stateChanged,
this, &TimelinePage::labelChange );
495 connect( mScrubBox, &QCheckBox::stateChanged,
this, &TimelinePage::scrubChange );
497 lay->addWidget(frameSizeLabel);
498 lay->addWidget(mFrameSize);
499 lay->addWidget(lengthSizeLabel);
500 lay->addWidget(mLengthSize);
501 lay->addWidget(mScrubBox);
502 timeLineBox->setLayout(lay);
504 QVBoxLayout* lay2 =
new QVBoxLayout();
505 lay2->addWidget(timeLineBox);
510 void TimelinePage::updateValues()
512 mScrubBox->setChecked(mManager->isOn(SETTING::SHORT_SCRUB));
513 mDrawLabel->setChecked(mManager->isOn(SETTING::DRAW_LABEL));
514 mFontSize->setValue(mManager->getInt(SETTING::LABEL_FONT_SIZE));
515 mFrameSize->setValue(mManager->getInt(SETTING::FRAME_SIZE));
516 mLengthSize->setText(mManager->getString(SETTING::TIMELINE_SIZE));
519 void TimelinePage::lengthSizeChange(QString value)
521 int length = value.toInt();
522 mManager->set(SETTING::TIMELINE_SIZE, length);
525 void TimelinePage::fontSizeChange(
int value)
527 mManager->set(SETTING::LABEL_FONT_SIZE, value);
530 void TimelinePage::frameSizeChange(
int value)
532 mManager->set(SETTING::FRAME_SIZE, value);
535 void TimelinePage::labelChange(
bool value)
537 mManager->set(SETTING::DRAW_LABEL, value);
540 void TimelinePage::scrubChange(
bool value)
542 mManager->set(SETTING::SHORT_SCRUB, value);
545 FilesPage::FilesPage(QWidget* parent) : QWidget(parent)
547 QVBoxLayout *lay =
new QVBoxLayout();
549 QVBoxLayout *clearRecentChangesLay =
new QVBoxLayout();
551 QGroupBox *autosaveBox =
new QGroupBox( tr(
"Autosave documents",
"Preference" ) );
552 mAutosaveCheckBox =
new QCheckBox(tr(
"Enable autosave",
"Preference" ));
553 QLabel *autosaveNumberLabel =
new QLabel( tr(
"Number of modifications before autosaving:",
"Preference" ) );
554 mAutosaveNumberBox =
new QSpinBox();
556 QGroupBox *clearRecentFilesBox =
new QGroupBox(tr(
"Clear recent files list",
"Clear Recent Files (Preference)" ));
557 QLabel *clearRecentFilesLbl =
new QLabel(tr(
"This will clear your list of recently opened files",
"Clear Recent Files (Preference)" ));
558 mClearRecentFilesBtn =
new QPushButton( tr(
"Clear",
"Clear Recent Files (Preference)" ) );
560 mAutosaveNumberBox =
new QSpinBox();
562 mAutosaveNumberBox->setMinimum(5);
563 mAutosaveNumberBox->setMaximum(200);
564 mAutosaveNumberBox->setFixedWidth(50);
566 connect(mAutosaveCheckBox, &QCheckBox::stateChanged,
this, &FilesPage::autosaveChange);
567 connect(mAutosaveNumberBox, SIGNAL(valueChanged(
int)),
this, SLOT(autosaveNumberChange(
int)));
568 connect(mClearRecentFilesBtn, SIGNAL(clicked(
bool)),
this, SLOT(clearRecentFilesList()));
570 lay->addWidget(mAutosaveCheckBox);
571 lay->addWidget(autosaveNumberLabel);
572 lay->addWidget(mAutosaveNumberBox);
573 autosaveBox->setLayout(lay);
575 clearRecentChangesLay->addWidget(clearRecentFilesLbl);
576 clearRecentChangesLay->addWidget(mClearRecentFilesBtn);
577 clearRecentFilesBox->setLayout(clearRecentChangesLay);
579 QVBoxLayout* mainLayout =
new QVBoxLayout();
580 mainLayout->addWidget(autosaveBox);
581 mainLayout->addWidget(clearRecentFilesBox);
582 mainLayout->addStretch(1);
583 setLayout(mainLayout);
586 void FilesPage::updateValues()
588 mAutosaveCheckBox->setChecked(mManager->isOn(SETTING::AUTO_SAVE));
589 mAutosaveNumberBox->setValue(mManager->getInt(SETTING::AUTO_SAVE_NUMBER));
592 void FilesPage::updateClearRecentListButton()
594 mClearRecentFilesBtn->setEnabled(
false);
595 mClearRecentFilesBtn->setText(
"List is empty");
598 void FilesPage::autosaveChange(
bool b)
600 mManager->set(SETTING::AUTO_SAVE, b);
603 void FilesPage::autosaveNumberChange(
int number)
605 mManager->set(SETTING::AUTO_SAVE_NUMBER, number);
608 void FilesPage::clearRecentFilesList()
610 emit clearRecentList();
613 ToolsPage::ToolsPage(QWidget* parent) : QWidget(parent)
615 QSettings settings( PENCIL2D, PENCIL2D );
617 QVBoxLayout* lay =
new QVBoxLayout();
619 QGroupBox* onionSkinBox =
new QGroupBox(tr(
"Onion skin"));
621 QLabel* onionMaxOpacityLabel =
new QLabel(tr(
"Maximum onion opacity %"));
622 mOnionMaxOpacityBox =
new QSpinBox();
623 QLabel* onionMinOpacityLabel =
new QLabel(tr(
"Minimum onion opacity %"));
624 mOnionMinOpacityBox =
new QSpinBox();
625 QLabel* onionPrevFramesNumLabel =
new QLabel(tr(
"Number of previous onion frames shown"));
626 mOnionPrevFramesNumBox =
new QSpinBox();
627 QLabel* onionNextFramesNumLabel =
new QLabel(tr(
"Number of next onion frames shown"));
628 mOnionNextFramesNumBox =
new QSpinBox();
630 mOnionMaxOpacityBox->setMinimum(0);
631 mOnionMaxOpacityBox->setMaximum(100);
632 mOnionMaxOpacityBox->setFixedWidth(50);
633 mOnionMinOpacityBox->setMinimum(0);
634 mOnionMinOpacityBox->setMaximum(100);
635 mOnionMinOpacityBox->setFixedWidth(50);
636 mOnionPrevFramesNumBox->setMinimum(1);
637 mOnionPrevFramesNumBox->setMaximum(60);
638 mOnionPrevFramesNumBox->setFixedWidth(50);
639 mOnionNextFramesNumBox->setMinimum(1);
640 mOnionNextFramesNumBox->setMaximum(60);
641 mOnionNextFramesNumBox->setFixedWidth(50);
643 mOnionMaxOpacityBox->setValue(settings.value( SETTING_ONION_MAX_OPACITY ).toInt());
644 mOnionMinOpacityBox->setValue(settings.value( SETTING_ONION_MIN_OPACITY ).toInt());
645 mOnionPrevFramesNumBox->setValue(settings.value( SETTING_ONION_PREV_FRAMES_NUM).toInt());
646 mOnionNextFramesNumBox->setValue(settings.value( SETTING_ONION_NEXT_FRAMES_NUM ).toInt());
648 connect(mOnionMaxOpacityBox, SIGNAL(valueChanged(
int)),
this, SLOT(onionMaxOpacityChange(
int)));
649 connect(mOnionMinOpacityBox, SIGNAL(valueChanged(
int)),
this, SLOT(onionMinOpacityChange(
int)));
650 connect(mOnionPrevFramesNumBox, SIGNAL(valueChanged(
int)),
this, SLOT(onionPrevFramesNumChange(
int)));
651 connect(mOnionNextFramesNumBox, SIGNAL(valueChanged(
int)),
this, SLOT(onionNextFramesNumChange(
int)));
653 lay->addWidget(onionMaxOpacityLabel);
654 lay->addWidget(mOnionMaxOpacityBox);
655 lay->addWidget(onionMinOpacityLabel);
656 lay->addWidget(mOnionMinOpacityBox);
657 lay->addWidget(onionPrevFramesNumLabel);
658 lay->addWidget(mOnionPrevFramesNumBox);
659 lay->addWidget(onionNextFramesNumLabel);
660 lay->addWidget(mOnionNextFramesNumBox);
661 onionSkinBox->setLayout(lay);
663 QGroupBox* brushBox =
new QGroupBox(tr(
"Brush Tools"));
664 mUseQuickSizingBox =
new QCheckBox(tr(
"Use Quick Sizing"));
665 QVBoxLayout* brushBoxLayout =
new QVBoxLayout();
666 brushBoxLayout->addWidget(mUseQuickSizingBox);
668 connect( mUseQuickSizingBox, &QCheckBox::stateChanged,
this, &ToolsPage::quickSizingChange );
670 brushBox->setLayout(brushBoxLayout);
673 QVBoxLayout* lay2 =
new QVBoxLayout();
674 lay2->addWidget(onionSkinBox);
675 lay2->addWidget(brushBox);
680 void ToolsPage::updateValues()
682 mOnionMaxOpacityBox->setValue(mManager->getInt(SETTING::ONION_MAX_OPACITY));
683 mOnionMinOpacityBox->setValue(mManager->getInt(SETTING::ONION_MIN_OPACITY));
684 mOnionPrevFramesNumBox->setValue(mManager->getInt(SETTING::ONION_PREV_FRAMES_NUM));
685 mOnionNextFramesNumBox->setValue(mManager->getInt(SETTING::ONION_NEXT_FRAMES_NUM));
686 mUseQuickSizingBox->setChecked(mManager->isOn(SETTING::QUICK_SIZING));
689 void ToolsPage::onionMaxOpacityChange(
int value)
691 mManager->set(SETTING::ONION_MAX_OPACITY, value);
694 void ToolsPage::quickSizingChange(
bool b )
696 mManager->set(SETTING::QUICK_SIZING, b);
699 void ToolsPage::onionMinOpacityChange(
int value)
701 mManager->set(SETTING::ONION_MIN_OPACITY, value);
704 void ToolsPage::onionPrevFramesNumChange(
int value)
706 mManager->set(SETTING::ONION_PREV_FRAMES_NUM, value);
709 void ToolsPage::onionNextFramesNumChange(
int value)
711 mManager->set(SETTING::ONION_NEXT_FRAMES_NUM, value);