Krita Source Code Documentation
Loading...
Searching...
No Matches
GeneralTab Class Reference

#include <kis_dlg_preferences.h>

+ Inheritance diagram for GeneralTab:

Public Member Functions

bool adaptivePlaybackRange ()
 
bool autopinLayersToTimeline ()
 
int autoSaveInterval ()
 
bool autoZoomTimelineToPlaybackRange ()
 
bool compressKra ()
 
bool convertToImageColorspaceOnImport ()
 
CursorStyle cursorStyle ()
 
CursorStyle eraserCursorStyle ()
 
OutlineStyle eraserOutlineStyle ()
 
QString exportMimeType ()
 
int forcedFontDpi ()
 
 GeneralTab (QWidget *parent=0, const char *name=0)
 
bool kineticScrollingEnabled ()
 
int kineticScrollingGesture ()
 
bool kineticScrollingHiddenScrollbars ()
 
int kineticScrollingSensitivity ()
 
bool longPressEnabled ()
 
int mdiMode ()
 
OutlineStyle outlineStyle ()
 
bool renameDuplicatedLayers ()
 
bool renameMergedLayers ()
 
bool renamePastedLayers ()
 
bool saveSessionOnQuit () const
 
KisConfig::SessionOnStartup sessionOnStartup () const
 
void setDefault ()
 
bool showCanvasMessages ()
 
bool showEraserOutlineWhilePainting ()
 
bool showOutlineWhilePainting ()
 
bool showRootLayer ()
 
bool switchSelectionCtrlAlt ()
 
bool toolOptionsInDocker ()
 
bool trimFramesImport ()
 
bool trimKra ()
 
int undoStackSize ()
 
bool useZip64 ()
 
int zoomMarginSize ()
 
int zoomSteps ()
 
- Public Member Functions inherited from WdgGeneralSettings
 WdgGeneralSettings (QWidget *parent, const char *name)
 

Public Attributes

KisCumulativeUndoData m_cumulativeUndoData
 
QButtonGroup m_pasteFormatGroup
 

Private Slots

void checkResourcePath ()
 
void clearBackgroundImage ()
 
void enableSubWindowOptions (int)
 
void getBackgroundImage ()
 
void showAdvancedCumulativeUndoSettings ()
 
void updateTouchPressureSensitivityEnabled (int)
 

Detailed Description

Definition at line 57 of file kis_dlg_preferences.h.

Constructor & Destructor Documentation

◆ GeneralTab()

GeneralTab::GeneralTab ( QWidget * parent = 0,
const char * name = 0 )

Definition at line 200 of file kis_dlg_preferences.cc.

201 : WdgGeneralSettings(_parent, _name)
202{
203 KisConfig cfg(true);
204
205 // HACK ALERT!
206 // QScrollArea contents are opaque at multiple levels
207 // The contents themselves AND the viewport widget
208 {
209 scrollAreaWidgetContents->setAutoFillBackground(false);
210 scrollAreaWidgetContents->parentWidget()->setAutoFillBackground(false);
211 }
212
213 //
214 // Cursor Tab
215 //
216
217 QStringList cursorItems = QStringList()
218 << i18n("No Cursor")
219 << i18n("Tool Icon")
220 << i18n("Arrow")
221 << i18n("Small Circle")
222 << i18n("Crosshair")
223 << i18n("Triangle Righthanded")
224 << i18n("Triangle Lefthanded")
225 << i18n("Black Pixel")
226 << i18n("White Pixel");
227
228 QStringList outlineItems = QStringList()
229 << i18nc("Display options label to not DISPLAY brush outline", "No Outline")
230 << i18n("Circle Outline")
231 << i18n("Preview Outline")
232 << i18n("Tilt Outline");
233
234 // brush
235
236 m_cmbCursorShape->addItems(cursorItems);
237
238 m_cmbCursorShape->setCurrentIndex(cfg.newCursorStyle());
239
240 m_cmbOutlineShape->addItems(outlineItems);
241
242 m_cmbOutlineShape->setCurrentIndex(cfg.newOutlineStyle());
243
244 m_showOutlinePainting->setChecked(cfg.showOutlineWhilePainting());
245 m_changeBrushOutline->setChecked(!cfg.forceAlwaysFullSizedOutline());
246
247 KoColor cursorColor(KoColorSpaceRegistry::instance()->rgb8());
248 cursorColor.fromQColor(cfg.getCursorMainColor());
249 cursorColorButton->setColor(cursorColor);
250
251 // eraser
252
253 m_chkSeparateEraserCursor->setChecked(cfg.separateEraserCursor());
254
255 m_cmbEraserCursorShape->addItems(cursorItems);
256 m_cmbEraserCursorShape->addItem(i18n("Eraser"));
257
258 m_cmbEraserCursorShape->setCurrentIndex(cfg.eraserCursorStyle());
259
260 m_cmbEraserOutlineShape->addItems(outlineItems);
261
262 m_cmbEraserOutlineShape->setCurrentIndex(cfg.eraserOutlineStyle());
263
264 m_showEraserOutlinePainting->setChecked(cfg.showEraserOutlineWhilePainting());
265 m_changeEraserBrushOutline->setChecked(!cfg.forceAlwaysFullSizedEraserOutline());
266
267 KoColor eraserCursorColor(KoColorSpaceRegistry::instance()->rgb8());
268 eraserCursorColor.fromQColor(cfg.getEraserCursorMainColor());
269 eraserCursorColorButton->setColor(eraserCursorColor);
270
271 //
272 // Window Tab
273 //
274 chkUseCustomFont->setChecked(cfg.readEntry<bool>("use_custom_system_font", false));
275 cmbCustomFont->findChild <QComboBox*>("stylesComboBox")->setVisible(false);
276
277 QString fontName = cfg.readEntry<QString>("custom_system_font", "");
278 if (fontName.isEmpty()) {
279 cmbCustomFont->setCurrentFont(qApp->font());
280
281 }
282 else {
283 int pointSize = qApp->font().pointSize();
284 cmbCustomFont->setCurrentFont(QFont(fontName, pointSize));
285 }
286 int fontSize = cfg.readEntry<int>("custom_font_size", -1);
287 if (fontSize < 0) {
288 intFontSize->setValue(qApp->font().pointSize());
289 }
290 else {
291 intFontSize->setValue(fontSize);
292 }
293
294 m_cmbMDIType->setCurrentIndex(cfg.readEntry<int>("mdi_viewmode", (int)QMdiArea::TabbedView));
295 enableSubWindowOptions(m_cmbMDIType->currentIndex());
296 connect(m_cmbMDIType, SIGNAL(currentIndexChanged(int)), SLOT(enableSubWindowOptions(int)));
297
298 m_backgroundimage->setText(cfg.getMDIBackgroundImage());
299 connect(m_bnFileName, SIGNAL(clicked()), SLOT(getBackgroundImage()));
300 connect(clearBgImageButton, SIGNAL(clicked()), SLOT(clearBackgroundImage()));
301
302 QString xml = cfg.getMDIBackgroundColor();
303 KoColor mdiColor = KoColor::fromXML(xml);
304 m_mdiColor->setColor(mdiColor);
305
306 m_chkRubberBand->setChecked(cfg.readEntry<int>("mdi_rubberband", cfg.useOpenGL()));
307
308 m_chkCanvasMessages->setChecked(cfg.showCanvasMessages());
309
310 const QString configPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
311 QSettings kritarc(configPath + QStringLiteral("/kritadisplayrc"), QSettings::IniFormat);
312 m_chkHiDPI->setChecked(kritarc.value("EnableHiDPI", true).toBool());
313#ifdef HAVE_HIGH_DPI_SCALE_FACTOR_ROUNDING_POLICY
314 m_chkHiDPIFractionalScaling->setChecked(kritarc.value("EnableHiDPIFractionalScaling", false).toBool());
315#else
316 m_wdgHiDPIFractionalScaling->setEnabled(false);
317#endif
318 chkUsageLogging->setChecked(kritarc.value("LogUsage", true).toBool());
319
320
321 //
322 // Tools tab
323 //
324 m_radioToolOptionsInDocker->setChecked(cfg.toolOptionsInDocker());
325 cmbFlowMode->setCurrentIndex((int)!cfg.readEntry<bool>("useCreamyAlphaDarken", true));
326 cmbCmykBlendingMode->setCurrentIndex((int)!cfg.readEntry<bool>("useSubtractiveBlendingForCmykColorSpaces", true));
327 m_chkSwitchSelectionCtrlAlt->setChecked(cfg.switchSelectionCtrlAlt());
328 cmbTouchPainting->addItem(
329 KoPointerEvent::tabletInputReceived() ? i18nc("touch painting", "Auto (Disabled)")
330 : i18nc("touch painting", "Auto (Enabled)"));
331 cmbTouchPainting->addItem(i18nc("touch painting", "Enabled"));
332 cmbTouchPainting->addItem(i18nc("touch painting", "Disabled"));
333 cmbTouchPainting->setCurrentIndex(int(cfg.touchPainting()));
334 chkTouchPressureSensitivity->setChecked(cfg.readEntry("useTouchPressureSensitivity", true));
335 connect(cmbTouchPainting, SIGNAL(currentIndexChanged(int)),
337 updateTouchPressureSensitivityEnabled(cmbTouchPainting->currentIndex());
338
339 chkEnableTransformToolAfterPaste->setChecked(cfg.activateTransformToolAfterPaste());
340 chkZoomHorizontally->setChecked(cfg.zoomHorizontal());
341
342 chkEnableLongPress->setChecked(cfg.longPressEnabled());
343
344 m_groupBoxKineticScrollingSettings->setChecked(cfg.kineticScrollingEnabled());
345
346 m_cmbKineticScrollingGesture->addItem(i18n("On Touch Drag"));
347 m_cmbKineticScrollingGesture->addItem(i18n("On Click Drag"));
348 m_cmbKineticScrollingGesture->addItem(i18n("On Middle-Click Drag"));
349 //m_cmbKineticScrollingGesture->addItem(i18n("On Right Click Drag"));
350
351 spnZoomSteps->setValue(cfg.zoomSteps());
352
353
354 m_cmbKineticScrollingGesture->setCurrentIndex(cfg.kineticScrollingGesture());
355 m_kineticScrollingSensitivitySlider->setRange(0, 100);
356 m_kineticScrollingSensitivitySlider->setValue(cfg.kineticScrollingSensitivity());
357 m_chkKineticScrollingHideScrollbars->setChecked(cfg.kineticScrollingHiddenScrollbars());
358
359 intZoomMarginSize->setValue(cfg.zoomMarginSize());
360
361 chkEnableSelectionActionBar->setChecked(cfg.selectionActionBar());
362
363 //
364 // File handling
365 //
366 int autosaveInterval = cfg.autoSaveInterval();
367 //convert to minutes
368 m_autosaveSpinBox->setValue(autosaveInterval / 60);
369 m_autosaveCheckBox->setChecked(autosaveInterval > 0);
370 chkHideAutosaveFiles->setChecked(cfg.readEntry<bool>("autosavefileshidden", true));
371
372 m_chkCompressKra->setChecked(cfg.compressKra());
373 chkZip64->setChecked(cfg.useZip64());
374 m_chkTrimKra->setChecked(cfg.trimKra());
375 m_chkTrimFramesImport->setChecked(cfg.trimFramesImport());
376
377 m_backupFileCheckBox->setChecked(cfg.backupFile());
378 cmbBackupFileLocation->setCurrentIndex(cfg.readEntry<int>("backupfilelocation", 0));
379 txtBackupFileSuffix->setText(cfg.readEntry<QString>("backupfilesuffix", "~"));
380 QValidator *validator = new BackupSuffixValidator(txtBackupFileSuffix);
381 txtBackupFileSuffix->setValidator(validator);
382 intNumBackupFiles->setValue(cfg.readEntry<int>("numberofbackupfiles", 1));
383
384 cmbDefaultExportFileType->clear();
386
387 QMap<QString, QString> mimeTypeMap;
388
389 foreach (const QString &mimeType, mimeFilter) {
390 QString description = KisMimeDatabase::descriptionForMimeType(mimeType);
391 mimeTypeMap.insert(description, mimeType);
392 }
393
394 // Sort after we get the description because mimeType values have image, application, etc... in front
395 QStringList sortedDescriptions = mimeTypeMap.keys();
396 sortedDescriptions.sort(Qt::CaseInsensitive);
397
398 cmbDefaultExportFileType->addItem(i18n("All Supported Files"), "all/mime");
399 foreach (const QString &description, sortedDescriptions) {
400 const QString &mimeType = mimeTypeMap.value(description);
401 cmbDefaultExportFileType->addItem(description, mimeType);
402 }
403
404 const QString mimeTypeToFind = cfg.exportMimeType(false).toUtf8();
405 const int index = cmbDefaultExportFileType->findData(mimeTypeToFind);
406
407 if (index >= 0) {
408 cmbDefaultExportFileType->setCurrentIndex(index);
409 } else {
410 // Index can't be found, default set to image/png
411 const QString defaultMimeType = "image/png";
412 const int defaultIndex = cmbDefaultExportFileType->findData(defaultMimeType);
413 if (defaultIndex >= 0) {
414 cmbDefaultExportFileType->setCurrentIndex(defaultIndex);
415 } else {
416 // Case where the default mime type is also not found in the combo box
417 qDebug() << "Default mime type not found in the combo box.";
418 }
419 }
420
421 QString selectedMimeType = cmbDefaultExportFileType->currentData().toString();
422
423 //
424 // Animation tab
425 //
426 m_chkAutoPin->setChecked(cfg.autoPinLayersToTimeline());
427 m_chkAdaptivePlaybackRange->setChecked(cfg.adaptivePlaybackRange());
428 m_chkAutoZoom->setChecked(cfg.autoZoomTimelineToPlaybackRange());
429
430 //
431 // Miscellaneous tab
432 //
433 cmbStartupSession->addItem(i18n("Open default window"));
434 cmbStartupSession->addItem(i18n("Load previous session"));
435 cmbStartupSession->addItem(i18n("Show session manager"));
436 cmbStartupSession->setCurrentIndex(cfg.sessionOnStartup());
437
438 chkSaveSessionOnQuit->setChecked(cfg.saveSessionOnQuit(false));
439
440 m_chkConvertOnImport->setChecked(cfg.convertToImageColorspaceOnImport());
441
442 m_undoStackSize->setValue(cfg.undoStackLimit());
443 chkCumulativeUndo->setChecked(cfg.useCumulativeUndoRedo());
444 connect(chkCumulativeUndo, SIGNAL(toggled(bool)), btnAdvancedCumulativeUndo, SLOT(setEnabled(bool)));
445 btnAdvancedCumulativeUndo->setEnabled(chkCumulativeUndo->isChecked());
446 connect(btnAdvancedCumulativeUndo, SIGNAL(clicked()), SLOT(showAdvancedCumulativeUndoSettings()));
447 m_cumulativeUndoData = cfg.cumulativeUndoData();
448
449 chkShowRootLayer->setChecked(cfg.showRootLayer());
450
451 chkRenameMergedLayers->setChecked(KisImageConfig(true).renameMergedLayers());
452 chkRenamePastedLayers->setChecked(cfg.renamePastedLayers());
453 chkRenameDuplicatedLayers->setChecked(KisImageConfig(true).renameDuplicatedLayers());
454
455 KConfigGroup group = KSharedConfig::openConfig()->group("File Dialogs");
456 bool dontUseNative = true;
457#ifdef Q_OS_ANDROID
458 dontUseNative = false;
459#endif
460#ifdef Q_OS_UNIX
461 if (qgetenv("XDG_CURRENT_DESKTOP") == "KDE") {
462 dontUseNative = false;
463 }
464#endif
465#ifdef Q_OS_MACOS
466 dontUseNative = false;
467#endif
468#ifdef Q_OS_WIN
469 dontUseNative = false;
470#endif
471 m_chkNativeFileDialog->setChecked(!group.readEntry("DontUseNativeFileDialog", dontUseNative));
472
473 if (!qEnvironmentVariable("APPIMAGE").isEmpty()) {
474 // AppImages don't have access to platform plugins. BUG: 447805
475 // Setting the checkbox to false is
476 m_chkNativeFileDialog->setChecked(false);
477 m_chkNativeFileDialog->setEnabled(false);
478 }
479
480 intMaxBrushSize->setValue(KisImageConfig(true).maxBrushSize());
481 chkIgnoreHighFunctionKeys->setChecked(cfg.ignoreHighFunctionKeys());
482#ifndef Q_OS_WIN
483 // we properly support ignoring high F-keys on Windows only. To support on other platforms
484 // we should synchronize KisExtendedModifiersMatcher to ignore the keys as well.
485 chkIgnoreHighFunctionKeys->setVisible(false);
486#endif
487
488 //
489 // Resources
490 //
491 m_urlResourceFolder->setMode(KoFileDialog::OpenDirectory);
492 m_urlResourceFolder->setConfigurationName("resource_directory");
493 const QString resourceLocation = KoResourcePaths::getAppDataLocation();
494 if (QFileInfo(resourceLocation).isWritable()) {
495 m_urlResourceFolder->setFileName(resourceLocation);
496 }
497 else {
498 m_urlResourceFolder->setFileName(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation));
499 }
500 QValidator *writableValidator = new WritableLocationValidator(m_urlResourceFolder);
501 txtBackupFileSuffix->setValidator(writableValidator);
502 connect(m_urlResourceFolder, SIGNAL(textChanged(QString)), SLOT(checkResourcePath()));
504
505 grpRestartMessage->setPixmap(
506 grpRestartMessage->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
507 grpRestartMessage->setText(i18n("You will need to Restart Krita for the changes to take an effect."));
508
509 grpAndroidWarningMessage->setVisible(false);
510 grpAndroidWarningMessage->setPixmap(
511 grpAndroidWarningMessage->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
512 grpAndroidWarningMessage->setText(
513 i18n("Saving at a Location picked from the File Picker may slow down the startup!"));
514
515#ifdef Q_OS_ANDROID
516 m_urlResourceFolder->setVisible(false);
517
518 m_resourceFolderSelector->setVisible(true);
519 m_resourceFolderSelector->installEventFilter(new UnscrollableComboBox(this));
520
521 const QList<QPair<QString, QString>> writableLocations = []() {
522 QList<QPair<QString, QString>> writableLocationsAndText;
523 // filters out the duplicates
524 const QList<QString> locations = []() {
525 QStringList filteredLocations;
526 const QStringList locations = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
527 Q_FOREACH(const QString &location, locations) {
528 if (!filteredLocations.contains(location)) {
529 filteredLocations.append(location);
530 }
531 }
532 return filteredLocations;
533 }();
534
535 bool isFirst = true;
536
537 Q_FOREACH (QString location, locations) {
538 QString text;
539 QFileInfo fileLocation(location);
540 // The first one that we get from is the "Default"
541 if (isFirst) {
542 text = i18n("Default");
543 isFirst = false;
544 } else if (location.startsWith("/data")) {
545 text = i18n("Internal Storage");
546 } else {
547 text = i18n("SD-Card");
548 }
549 if (fileLocation.isWritable()) {
550 writableLocationsAndText.append({text, location});
551 }
552 }
553 return writableLocationsAndText;
554 }();
555
556 for (auto it = writableLocations.constBegin(); it != writableLocations.constEnd(); ++it) {
557 m_resourceFolderSelector->addItem(it->first + " - " + it->second);
558 // we need it to extract out the path
559 m_resourceFolderSelector->setItemData(m_resourceFolderSelector->count() - 1, it->second, Qt::UserRole);
560 }
561
562 // if the user has selected a custom location, we add it to the list as well.
563 if (resourceLocation.startsWith("content://")) {
564 m_resourceFolderSelector->addItem(resourceLocation);
565 int index = m_resourceFolderSelector->count() - 1;
566 m_resourceFolderSelector->setItemData(index, resourceLocation, Qt::UserRole);
567 m_resourceFolderSelector->setCurrentIndex(index);
568 grpAndroidWarningMessage->setVisible(true);
569 } else {
570 // find the index of the current resource location in the writableLocation, so we can set our view to that
571 auto iterator = std::find_if(writableLocations.constBegin(),
572 writableLocations.constEnd(),
573 [&resourceLocation](QPair<QString, QString> location) {
574 return location.second == resourceLocation;
575 });
576
577 if (iterator != writableLocations.constEnd()) {
578 int index = writableLocations.indexOf(*iterator);
579 KIS_SAFE_ASSERT_RECOVER_NOOP(index < m_resourceFolderSelector->count());
580 m_resourceFolderSelector->setCurrentIndex(index);
581 }
582 }
583
584 // this should be the last item we add.
585 m_resourceFolderSelector->addItem(i18n("Choose Manually"));
586
587 connect(m_resourceFolderSelector, qOverload<int>(&QComboBox::activated), [this](int index) {
588 const int previousIndex = m_resourceFolderSelector->currentIndex();
589
590 // if it is the last item in the last item, then open file picker and set the name returned as the filename
591 if (m_resourceFolderSelector->count() - 1 == index) {
592 KoFileDialog dialog(this, KoFileDialog::OpenDirectory, "Select Directory");
593 const QString selectedDirectory = dialog.filename();
594
595 if (!selectedDirectory.isEmpty()) {
596 // if the index above "Choose Manually" is a content Uri, then we just modify it, and then set that as
597 // the index.
598 if (m_resourceFolderSelector->itemData(index - 1, Qt::DisplayRole)
599 .value<QString>()
600 .startsWith("content://")) {
601 m_resourceFolderSelector->setItemText(index - 1, selectedDirectory);
602 m_resourceFolderSelector->setItemData(index - 1, selectedDirectory, Qt::UserRole);
603 m_resourceFolderSelector->setCurrentIndex(index - 1);
604 } else {
605 // There isn't any content Uri in the ComboBox list, so just insert one, and set that as the index.
606 m_resourceFolderSelector->insertItem(index, selectedDirectory);
607 m_resourceFolderSelector->setItemData(index, selectedDirectory, Qt::UserRole);
608 m_resourceFolderSelector->setCurrentIndex(index);
609 }
610 // since we have selected the custom location, make the warning visible.
611 grpAndroidWarningMessage->setVisible(true);
612 } else {
613 m_resourceFolderSelector->setCurrentIndex(previousIndex);
614 }
615 }
616
617 // hide-unhide based on the selection of user.
618 grpAndroidWarningMessage->setVisible(
619 m_resourceFolderSelector->currentData(Qt::UserRole).value<QString>().startsWith("content://"));
620 });
621
622#else
623 m_resourceFolderSelector->setVisible(false);
624#endif
625
626 grpWindowsAppData->setVisible(false);
627#ifdef Q_OS_WIN
628 QString folderInStandardAppData;
629 QString folderInPrivateAppData;
630 KoResourcePaths::getAllUserResourceFoldersLocationsForWindowsStore(folderInStandardAppData, folderInPrivateAppData);
631
632 if (!folderInPrivateAppData.isEmpty()) {
633 const auto pathToDisplay = [](const QString &path) {
634 // Due to how Unicode word wrapping works, the string does not
635 // wrap after backslashes in Qt 5.12. We don't want the path to
636 // become too long, so we add a U+200B ZERO WIDTH SPACE to allow
637 // wrapping. The downside is that we cannot let the user select
638 // and copy the path because it now contains invisible unicode
639 // code points.
640 // See: https://bugreports.qt.io/browse/QTBUG-80892
641 return QDir::toNativeSeparators(path).replace(QChar('\\'), QStringLiteral(u"\\\u200B"));
642 };
643
644 const QDir privateResourceDir(folderInPrivateAppData);
645 const QDir appDataDir(folderInStandardAppData);
646 grpWindowsAppData->setPixmap(
647 grpWindowsAppData->style()->standardIcon(QStyle::SP_MessageBoxInformation).pixmap(QSize(32, 32)));
648 // Similar text is also used in KisViewManager.cpp
649 grpWindowsAppData->setText(i18nc("@info resource folder",
650 "<p>You are using the Microsoft Store package version of Krita. "
651 "Even though Krita can be configured to place resources under the "
652 "user AppData location, Windows may actually store the files "
653 "inside a private app location.</p>\n"
654 "<p>You should check both locations to determine where "
655 "the files are located.</p>\n"
656 "<p><b>User AppData</b> (<a href=\"copyuser\">Copy</a>):<br/>\n"
657 "%1</p>\n"
658 "<p><b>Private app location</b> (<a href=\"copyprivate\">Copy</a>):<br/>\n"
659 "%2</p>",
660 pathToDisplay(appDataDir.absolutePath()),
661 pathToDisplay(privateResourceDir.absolutePath())));
662 grpWindowsAppData->setVisible(true);
663
664 connect(grpWindowsAppData,
666 [userPath = appDataDir.absolutePath(),
667 privatePath = privateResourceDir.absolutePath()](const QString &link) {
668 if (link == QStringLiteral("copyuser")) {
669 qApp->clipboard()->setText(QDir::toNativeSeparators(userPath));
670 } else if (link == QStringLiteral("copyprivate")) {
671 qApp->clipboard()->setText(QDir::toNativeSeparators(privatePath));
672 } else {
673 qWarning() << "Unexpected link activated in lblWindowsAppDataNote:" << link;
674 }
675 });
676 }
677#endif
678
679
680 const int forcedFontDPI = cfg.readEntry("forcedDpiForQtFontBugWorkaround", -1);
681 chkForcedFontDPI->setChecked(forcedFontDPI > 0);
682 intForcedFontDPI->setValue(forcedFontDPI > 0 ? forcedFontDPI : qt_defaultDpi());
683 intForcedFontDPI->setEnabled(forcedFontDPI > 0);
684 connect(chkForcedFontDPI, SIGNAL(toggled(bool)), intForcedFontDPI, SLOT(setEnabled(bool)));
685
690
691 QAbstractButton *button = m_pasteFormatGroup.button(cfg.pasteFormat(false));
692
693 Q_ASSERT(button);
694
695 if (button) {
696 button->setChecked(true);
697 }
698}
qreal u
QList< QString > QStringList
Q_GUI_EXPORT int qt_defaultDpi()
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
bool renameDuplicatedLayers()
void showAdvancedCumulativeUndoSettings()
QButtonGroup m_pasteFormatGroup
KisCumulativeUndoData m_cumulativeUndoData
void updateTouchPressureSensitivityEnabled(int)
void enableSubWindowOptions(int)
static QStringList supportedMimeTypes(Direction direction)
static QString descriptionForMimeType(const QString &mimeType)
Find the user-readable description for the given mimetype.
static KoColor fromXML(const QDomElement &elt, const QString &channelDepthId)
Definition KoColor.cpp:350
static bool tabletInputReceived()
static void getAllUserResourceFoldersLocationsForWindowsStore(QString &standardLocation, QString &privateLocation)
getAllAppDataLocationsForWindowsStore Use this to get both private and general appdata folders which ...
static QString getAppDataLocation()
WdgGeneralSettings(QWidget *parent, const char *name)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
QString button(const QWheelEvent &ev)
void setText(QSpinBox *spinBox, const QStringView textTemplate)
void linkActivated(const QString &link)
static KoColorSpaceRegistry * instance()

References KisConfig::activateTransformToolAfterPaste(), KisConfig::adaptivePlaybackRange(), KisConfig::autoPinLayersToTimeline(), KisConfig::autoSaveInterval(), KisConfig::autoZoomTimelineToPlaybackRange(), KisConfig::backupFile(), checkResourcePath(), clearBackgroundImage(), KisConfig::compressKra(), connect(), KisConfig::convertToImageColorspaceOnImport(), KisConfig::cumulativeUndoData(), KisMimeDatabase::descriptionForMimeType(), enableSubWindowOptions(), KisConfig::eraserCursorStyle(), KisConfig::eraserOutlineStyle(), KisImportExportManager::Export, KisConfig::exportMimeType(), KisConfig::forceAlwaysFullSizedEraserOutline(), KisConfig::forceAlwaysFullSizedOutline(), KoColor::fromQColor(), KoColor::fromXML(), KoResourcePaths::getAppDataLocation(), getBackgroundImage(), KisConfig::getCursorMainColor(), KisConfig::getEraserCursorMainColor(), KisConfig::getMDIBackgroundColor(), KisConfig::getMDIBackgroundImage(), KisConfig::ignoreHighFunctionKeys(), KoColorSpaceRegistry::instance(), KisConfig::kineticScrollingEnabled(), KisConfig::kineticScrollingGesture(), KisConfig::kineticScrollingHiddenScrollbars(), KisConfig::kineticScrollingSensitivity(), KIS_SAFE_ASSERT_RECOVER_NOOP, KisConfig::longPressEnabled(), m_cumulativeUndoData, KisConfig::newCursorStyle(), KisConfig::newOutlineStyle(), KoFileDialog::OpenDirectory, KisConfig::readEntry(), renameDuplicatedLayers(), renameMergedLayers(), KisConfig::renamePastedLayers(), KisConfig::saveSessionOnQuit(), KisConfig::selectionActionBar(), KisConfig::separateEraserCursor(), KisConfig::sessionOnStartup(), showAdvancedCumulativeUndoSettings(), KisConfig::showCanvasMessages(), KisConfig::showEraserOutlineWhilePainting(), KisConfig::showOutlineWhilePainting(), KisConfig::showRootLayer(), KisImportExportManager::supportedMimeTypes(), KisConfig::switchSelectionCtrlAlt(), KoPointerEvent::tabletInputReceived(), KisConfig::toolOptionsInDocker(), KisConfig::touchPainting(), KisConfig::trimFramesImport(), KisConfig::trimKra(), KisConfig::undoStackLimit(), updateTouchPressureSensitivityEnabled(), KisConfig::useCumulativeUndoRedo(), KisConfig::useOpenGL(), KisConfig::useZip64(), KisConfig::zoomHorizontal(), KisConfig::zoomMarginSize(), and KisConfig::zoomSteps().

Member Function Documentation

◆ adaptivePlaybackRange()

bool GeneralTab::adaptivePlaybackRange ( )

Definition at line 962 of file kis_dlg_preferences.cc.

963{
964 return m_chkAdaptivePlaybackRange->isChecked();
965}

◆ autopinLayersToTimeline()

bool GeneralTab::autopinLayersToTimeline ( )

Definition at line 957 of file kis_dlg_preferences.cc.

958{
959 return m_chkAutoPin->isChecked();
960}

◆ autoSaveInterval()

int GeneralTab::autoSaveInterval ( )

Definition at line 851 of file kis_dlg_preferences.cc.

852{
853 //convert to seconds
854 return m_autosaveCheckBox->isChecked() ? m_autosaveSpinBox->value() * 60 : 0;
855}

◆ autoZoomTimelineToPlaybackRange()

bool GeneralTab::autoZoomTimelineToPlaybackRange ( )

Definition at line 967 of file kis_dlg_preferences.cc.

968{
969 return m_chkAutoZoom->isChecked();
970}

◆ checkResourcePath

void GeneralTab::checkResourcePath ( )
privateslot

Definition at line 1020 of file kis_dlg_preferences.cc.

1021{
1022 const QFileInfo fi(m_urlResourceFolder->fileName());
1023 if (!fi.isWritable()) {
1024 grpNonWritableLocation->setPixmap(
1025 grpNonWritableLocation->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
1026 grpNonWritableLocation->setText(
1027 i18nc("@info resource folder", "<b>Warning:</b> this location is not writable."));
1028 grpNonWritableLocation->setVisible(true);
1029 } else {
1030 grpNonWritableLocation->setVisible(false);
1031 }
1032}

◆ clearBackgroundImage

void GeneralTab::clearBackgroundImage ( )
privateslot

Definition at line 1014 of file kis_dlg_preferences.cc.

1015{
1016 // clearing the background image text will implicitly make the background color be used
1017 m_backgroundimage->setText("");
1018}

◆ compressKra()

bool GeneralTab::compressKra ( )

Definition at line 882 of file kis_dlg_preferences.cc.

883{
884 return m_chkCompressKra->isChecked();
885}

◆ convertToImageColorspaceOnImport()

bool GeneralTab::convertToImageColorspaceOnImport ( )

Definition at line 952 of file kis_dlg_preferences.cc.

953{
954 return m_chkConvertOnImport->isChecked();
955}

◆ cursorStyle()

CursorStyle GeneralTab::cursorStyle ( )

Definition at line 816 of file kis_dlg_preferences.cc.

817{
818 return (CursorStyle)m_cmbCursorShape->currentIndex();
819}
CursorStyle
Definition kis_global.h:62

◆ enableSubWindowOptions

void GeneralTab::enableSubWindowOptions ( int mdi_mode)
privateslot

Definition at line 1034 of file kis_dlg_preferences.cc.

1035{
1036 group_subWinMode->setEnabled(mdi_mode == QMdiArea::SubWindowView);
1037}

◆ eraserCursorStyle()

CursorStyle GeneralTab::eraserCursorStyle ( )

Definition at line 826 of file kis_dlg_preferences.cc.

827{
828 return (CursorStyle)m_cmbEraserCursorShape->currentIndex();
829}

◆ eraserOutlineStyle()

OutlineStyle GeneralTab::eraserOutlineStyle ( )

Definition at line 831 of file kis_dlg_preferences.cc.

832{
833 return (OutlineStyle)m_cmbEraserOutlineShape->currentIndex();
834}
OutlineStyle
Definition kis_global.h:53

◆ exportMimeType()

QString GeneralTab::exportMimeType ( )

Definition at line 897 of file kis_dlg_preferences.cc.

898{
899 return cmbDefaultExportFileType->currentData().toString();
900}

◆ forcedFontDpi()

int GeneralTab::forcedFontDpi ( )

Definition at line 972 of file kis_dlg_preferences.cc.

973{
974 return chkForcedFontDPI->isChecked() ? intForcedFontDPI->value() : -1;
975}

◆ getBackgroundImage

void GeneralTab::getBackgroundImage ( )
privateslot

Definition at line 992 of file kis_dlg_preferences.cc.

993{
994 KoFileDialog dialog(this, KoFileDialog::OpenFile, "BackgroundImages");
995 dialog.setCaption(i18n("Select a Background Image"));
996 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
997 dialog.setImageFilters();
998
999 QString fn = dialog.filename();
1000 // dialog box was canceled or somehow no file was selected
1001 if (fn.isEmpty()) {
1002 return;
1003 }
1004
1005 QImage image(fn);
1006 if (image.isNull()) {
1007 QMessageBox::warning(this, i18nc("@title:window", "Krita"), i18n("%1 is not a valid image file!", fn));
1008 }
1009 else {
1010 m_backgroundimage->setText(fn);
1011 }
1012}

References KoFileDialog::OpenFile.

◆ kineticScrollingEnabled()

bool GeneralTab::kineticScrollingEnabled ( )

Definition at line 922 of file kis_dlg_preferences.cc.

923{
924 return m_groupBoxKineticScrollingSettings->isChecked();
925}

◆ kineticScrollingGesture()

int GeneralTab::kineticScrollingGesture ( )

Definition at line 927 of file kis_dlg_preferences.cc.

928{
929 return m_cmbKineticScrollingGesture->currentIndex();
930}

◆ kineticScrollingHiddenScrollbars()

bool GeneralTab::kineticScrollingHiddenScrollbars ( )

Definition at line 937 of file kis_dlg_preferences.cc.

938{
939 return m_chkKineticScrollingHideScrollbars->isChecked();
940}

◆ kineticScrollingSensitivity()

int GeneralTab::kineticScrollingSensitivity ( )

Definition at line 932 of file kis_dlg_preferences.cc.

933{
934 return m_kineticScrollingSensitivitySlider->value();
935}

◆ longPressEnabled()

bool GeneralTab::longPressEnabled ( )

Definition at line 917 of file kis_dlg_preferences.cc.

918{
919 return chkEnableLongPress->isChecked();
920}

◆ mdiMode()

int GeneralTab::mdiMode ( )

Definition at line 872 of file kis_dlg_preferences.cc.

873{
874 return m_cmbMDIType->currentIndex();
875}

◆ outlineStyle()

OutlineStyle GeneralTab::outlineStyle ( )

Definition at line 821 of file kis_dlg_preferences.cc.

822{
823 return (OutlineStyle)m_cmbOutlineShape->currentIndex();
824}

◆ renameDuplicatedLayers()

bool GeneralTab::renameDuplicatedLayers ( )

Definition at line 987 of file kis_dlg_preferences.cc.

988{
989 return chkRenameDuplicatedLayers->isChecked();
990}

◆ renameMergedLayers()

bool GeneralTab::renameMergedLayers ( )

Definition at line 977 of file kis_dlg_preferences.cc.

978{
979 return chkRenameMergedLayers->isChecked();
980}

◆ renamePastedLayers()

bool GeneralTab::renamePastedLayers ( )

Definition at line 982 of file kis_dlg_preferences.cc.

983{
984 return chkRenamePastedLayers->isChecked();
985}

◆ saveSessionOnQuit()

bool GeneralTab::saveSessionOnQuit ( ) const

Definition at line 841 of file kis_dlg_preferences.cc.

842{
843 return chkSaveSessionOnQuit->isChecked();
844}

◆ sessionOnStartup()

KisConfig::SessionOnStartup GeneralTab::sessionOnStartup ( ) const

Definition at line 836 of file kis_dlg_preferences.cc.

837{
838 return (KisConfig::SessionOnStartup)cmbStartupSession->currentIndex();
839}

◆ setDefault()

void GeneralTab::setDefault ( )

Definition at line 700 of file kis_dlg_preferences.cc.

701{
702 KisConfig cfg(true);
703
704 m_cmbCursorShape->setCurrentIndex(cfg.newCursorStyle(true));
705 m_cmbOutlineShape->setCurrentIndex(cfg.newOutlineStyle(true));
706 m_chkSeparateEraserCursor->setChecked(cfg.readEntry<bool>("separateEraserCursor", false));
707 m_cmbEraserCursorShape->setCurrentIndex(cfg.eraserCursorStyle(true));
708 m_cmbEraserOutlineShape->setCurrentIndex(cfg.eraserOutlineStyle(true));
709
710 chkShowRootLayer->setChecked(cfg.showRootLayer(true));
711 m_autosaveCheckBox->setChecked(cfg.autoSaveInterval(true) > 0);
712 //convert to minutes
713 m_autosaveSpinBox->setValue(cfg.autoSaveInterval(true) / 60);
714 chkHideAutosaveFiles->setChecked(true);
715
716 m_undoStackSize->setValue(cfg.undoStackLimit(true));
717 chkCumulativeUndo->setChecked(cfg.useCumulativeUndoRedo(true));
718 m_cumulativeUndoData = cfg.cumulativeUndoData(true);
719
720 m_backupFileCheckBox->setChecked(cfg.backupFile(true));
721 cmbBackupFileLocation->setCurrentIndex(0);
722 txtBackupFileSuffix->setText("~");
723 intNumBackupFiles->setValue(1);
724
725 m_showOutlinePainting->setChecked(cfg.showOutlineWhilePainting(true));
726 m_changeBrushOutline->setChecked(!cfg.forceAlwaysFullSizedOutline(true));
727 m_showEraserOutlinePainting->setChecked(cfg.showEraserOutlineWhilePainting(true));
728 m_changeEraserBrushOutline->setChecked(!cfg.forceAlwaysFullSizedEraserOutline(true));
729
730#if defined Q_OS_ANDROID || defined Q_OS_MACOS || defined Q_OS_WIN
731 m_chkNativeFileDialog->setChecked(true);
732#else
733 m_chkNativeFileDialog->setChecked(false);
734#endif
735
736 intMaxBrushSize->setValue(1000);
737
738 chkIgnoreHighFunctionKeys->setChecked(cfg.ignoreHighFunctionKeys(true));
739
740
741 chkUseCustomFont->setChecked(false);
742 cmbCustomFont->setCurrentFont(qApp->font());
743 intFontSize->setValue(qApp->font().pointSize());
744
745
746 m_cmbMDIType->setCurrentIndex((int)QMdiArea::TabbedView);
747 m_chkRubberBand->setChecked(cfg.useOpenGL(true));
748 KoColor mdiColor;
749 mdiColor.fromXML(cfg.getMDIBackgroundColor(true));
750 m_mdiColor->setColor(mdiColor);
751 m_backgroundimage->setText(cfg.getMDIBackgroundImage(true));
752 m_chkCanvasMessages->setChecked(cfg.showCanvasMessages(true));
753 m_chkCompressKra->setChecked(cfg.compressKra(true));
754 m_chkTrimKra->setChecked(cfg.trimKra(true));
755 m_chkTrimFramesImport->setChecked(cfg.trimFramesImport(true));
756 chkZip64->setChecked(cfg.useZip64(true));
757 m_chkHiDPI->setChecked(true);
758#ifdef HAVE_HIGH_DPI_SCALE_FACTOR_ROUNDING_POLICY
759 m_chkHiDPIFractionalScaling->setChecked(true);
760#endif
761 chkUsageLogging->setChecked(true);
762 m_radioToolOptionsInDocker->setChecked(cfg.toolOptionsInDocker(true));
763 cmbFlowMode->setCurrentIndex(0);
764 chkEnableLongPress->setChecked(cfg.longPressEnabled(true));
765 m_groupBoxKineticScrollingSettings->setChecked(cfg.kineticScrollingEnabled(true));
766 m_cmbKineticScrollingGesture->setCurrentIndex(cfg.kineticScrollingGesture(true));
767 spnZoomSteps->setValue(cfg.zoomSteps(true));
768 m_kineticScrollingSensitivitySlider->setValue(cfg.kineticScrollingSensitivity(true));
769 m_chkKineticScrollingHideScrollbars->setChecked(cfg.kineticScrollingHiddenScrollbars(true));
770 intZoomMarginSize->setValue(cfg.zoomMarginSize(true));
771 m_chkSwitchSelectionCtrlAlt->setChecked(cfg.switchSelectionCtrlAlt(true));
772 cmbTouchPainting->setCurrentIndex(int(cfg.touchPainting(true)));
773 chkTouchPressureSensitivity->setChecked(true);
774 chkEnableTransformToolAfterPaste->setChecked(cfg.activateTransformToolAfterPaste(true));
775 chkZoomHorizontally->setChecked(cfg.zoomHorizontal(true));
776 m_chkConvertOnImport->setChecked(cfg.convertToImageColorspaceOnImport(true));
777
778 KoColor cursorColor(KoColorSpaceRegistry::instance()->rgb8());
779 cursorColor.fromQColor(cfg.getCursorMainColor(true));
780 cursorColorButton->setColor(cursorColor);
781
782 KoColor eraserCursorColor(KoColorSpaceRegistry::instance()->rgb8());
783 eraserCursorColor.fromQColor(cfg.getEraserCursorMainColor(true));
784 eraserCursorColorButton->setColor(eraserCursorColor);
785
786
787 m_chkAutoPin->setChecked(cfg.autoPinLayersToTimeline(true));
788 m_chkAdaptivePlaybackRange->setChecked(cfg.adaptivePlaybackRange(false));
789
790 m_urlResourceFolder->setFileName(KoResourcePaths::getAppDataLocation());
791
792 chkForcedFontDPI->setChecked(false);
793 intForcedFontDPI->setValue(qt_defaultDpi());
794 intForcedFontDPI->setEnabled(false);
795
796 chkRenameMergedLayers->setChecked(KisImageConfig(true).renameMergedLayers(true));
797 chkRenamePastedLayers->setChecked(cfg.renamePastedLayers(true));
798 chkRenameDuplicatedLayers->setChecked(KisImageConfig(true).renameDuplicatedLayers(true));
799
800 QAbstractButton *button = m_pasteFormatGroup.button(cfg.pasteFormat(true));
801 Q_ASSERT(button);
802
803 if (button) {
804 button->setChecked(true);
805 }
806}
void setColor(const quint8 *data, const KoColorSpace *colorSpace=0)
Definition KoColor.cpp:186

References KisConfig::activateTransformToolAfterPaste(), KisConfig::adaptivePlaybackRange(), KisConfig::autoPinLayersToTimeline(), KisConfig::autoSaveInterval(), KisConfig::backupFile(), button(), KisConfig::compressKra(), KisConfig::convertToImageColorspaceOnImport(), KisConfig::cumulativeUndoData(), KisConfig::eraserCursorStyle(), KisConfig::eraserOutlineStyle(), KisConfig::forceAlwaysFullSizedEraserOutline(), KisConfig::forceAlwaysFullSizedOutline(), KoColor::fromQColor(), KoColor::fromXML(), KoResourcePaths::getAppDataLocation(), KisConfig::getCursorMainColor(), KisConfig::getEraserCursorMainColor(), KisConfig::getMDIBackgroundColor(), KisConfig::getMDIBackgroundImage(), KisConfig::ignoreHighFunctionKeys(), KoColorSpaceRegistry::instance(), KisConfig::kineticScrollingEnabled(), KisConfig::kineticScrollingGesture(), KisConfig::kineticScrollingHiddenScrollbars(), KisConfig::kineticScrollingSensitivity(), KisConfig::longPressEnabled(), m_cumulativeUndoData, m_pasteFormatGroup, KisConfig::newCursorStyle(), KisConfig::newOutlineStyle(), KisConfig::pasteFormat(), qt_defaultDpi(), KisConfig::readEntry(), renameDuplicatedLayers(), renameMergedLayers(), KisConfig::renamePastedLayers(), KoColor::setColor(), KisConfig::showCanvasMessages(), KisConfig::showEraserOutlineWhilePainting(), KisConfig::showOutlineWhilePainting(), KisConfig::showRootLayer(), KisConfig::switchSelectionCtrlAlt(), KisConfig::toolOptionsInDocker(), KisConfig::touchPainting(), KisConfig::trimFramesImport(), KisConfig::trimKra(), KisConfig::undoStackLimit(), KisConfig::useCumulativeUndoRedo(), KisConfig::useOpenGL(), KisConfig::useZip64(), KisConfig::zoomHorizontal(), KisConfig::zoomMarginSize(), and KisConfig::zoomSteps().

◆ showAdvancedCumulativeUndoSettings

void GeneralTab::showAdvancedCumulativeUndoSettings ( )
privateslot

Definition at line 808 of file kis_dlg_preferences.cc.

809{
810 KisDlgConfigureCumulativeUndo dlg(m_cumulativeUndoData, m_undoStackSize->value(), this);
811 if (dlg.exec() == KoDialog::Accepted) {
812 m_cumulativeUndoData = dlg.cumulativeUndoData();
813 }
814}

References KisDlgConfigureCumulativeUndo::cumulativeUndoData(), and m_cumulativeUndoData.

◆ showCanvasMessages()

bool GeneralTab::showCanvasMessages ( )

Definition at line 877 of file kis_dlg_preferences.cc.

878{
879 return m_chkCanvasMessages->isChecked();
880}

◆ showEraserOutlineWhilePainting()

bool GeneralTab::showEraserOutlineWhilePainting ( )

Definition at line 867 of file kis_dlg_preferences.cc.

868{
869 return m_showEraserOutlinePainting->isChecked();
870}

◆ showOutlineWhilePainting()

bool GeneralTab::showOutlineWhilePainting ( )

Definition at line 862 of file kis_dlg_preferences.cc.

863{
864 return m_showOutlinePainting->isChecked();
865}

◆ showRootLayer()

bool GeneralTab::showRootLayer ( )

Definition at line 846 of file kis_dlg_preferences.cc.

847{
848 return chkShowRootLayer->isChecked();
849}

◆ switchSelectionCtrlAlt()

bool GeneralTab::switchSelectionCtrlAlt ( )

Definition at line 947 of file kis_dlg_preferences.cc.

948{
949 return m_chkSwitchSelectionCtrlAlt->isChecked();
950}

◆ toolOptionsInDocker()

bool GeneralTab::toolOptionsInDocker ( )

Definition at line 907 of file kis_dlg_preferences.cc.

908{
909 return m_radioToolOptionsInDocker->isChecked();
910}

◆ trimFramesImport()

bool GeneralTab::trimFramesImport ( )

Definition at line 892 of file kis_dlg_preferences.cc.

893{
894 return m_chkTrimFramesImport->isChecked();
895}

◆ trimKra()

bool GeneralTab::trimKra ( )

Definition at line 887 of file kis_dlg_preferences.cc.

888{
889 return m_chkTrimKra->isChecked();
890}

◆ undoStackSize()

int GeneralTab::undoStackSize ( )

Definition at line 857 of file kis_dlg_preferences.cc.

858{
859 return m_undoStackSize->value();
860}

◆ updateTouchPressureSensitivityEnabled

void GeneralTab::updateTouchPressureSensitivityEnabled ( int touchPainting)
privateslot

Definition at line 1039 of file kis_dlg_preferences.cc.

1040{
1041 chkTouchPressureSensitivity->setEnabled(touchPainting != int(KisConfig::TOUCH_PAINTING_DISABLED));
1042}
@ TOUCH_PAINTING_DISABLED
Definition kis_config.h:50

References KisConfig::TOUCH_PAINTING_DISABLED.

◆ useZip64()

bool GeneralTab::useZip64 ( )

Definition at line 902 of file kis_dlg_preferences.cc.

903{
904 return chkZip64->isChecked();
905}

◆ zoomMarginSize()

int GeneralTab::zoomMarginSize ( )

Definition at line 942 of file kis_dlg_preferences.cc.

943{
944 return intZoomMarginSize->value();
945}

◆ zoomSteps()

int GeneralTab::zoomSteps ( )

Definition at line 912 of file kis_dlg_preferences.cc.

913{
914 return spnZoomSteps->value();
915}

Member Data Documentation

◆ m_cumulativeUndoData

KisCumulativeUndoData GeneralTab::m_cumulativeUndoData

Definition at line 117 of file kis_dlg_preferences.h.

◆ m_pasteFormatGroup

QButtonGroup GeneralTab::m_pasteFormatGroup

Definition at line 116 of file kis_dlg_preferences.h.


The documentation for this class was generated from the following files: