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

#include <kis_dlg_preferences.h>

+ Inheritance diagram for KisDlgPreferences:

Classes

struct  PageDesc
 

Public Types

enum  ColorTabs { GeneralColor , DisplayTab , SoftProofing }
 
enum  DisplayTabs { CanvasAcceleration , HDR , CanvasDecoration , MiscellaneousDisplay }
 
enum  GeneralTabs {
  File , Pasting , Window , Cursor ,
  Tools , Animation , Resources , MiscellaneousGeneral
}
 
enum  Page {
  General , Shortucts , Color , Performance ,
  Display , Tablet , Fullscreen , Input ,
  PopupPalette
}
 
enum  PerformaceTabs { GeneralPerformance , Advanced , AnimationCache , InstantPreview }
 

Public Member Functions

bool editPreferences (std::optional< PageDesc > page)
 
 KisDlgPreferences (QWidget *parent=0, const char *name=0)
 
void showEvent (QShowEvent *event) override
 
 ~KisDlgPreferences () override
 

Private Slots

void slotButtonClicked (QAbstractButton *button)
 
void slotDefault ()
 

Private Member Functions

KPageWidgetItem * getPage (Page page_enum)
 
void switchTab (PageDesc tab)
 

Private Attributes

KoConfigAuthorPagem_authorPage
 
bool m_cancelClicked {false}
 
ColorSettingsTabm_colorSettings
 
DisplaySettingsTabm_displaySettings
 
FullscreenSettingsTabm_fullscreenSettings
 
GeneralTabm_general
 
KisInputConfigurationPagem_inputConfiguration
 
QList< KPageWidgetItem * > m_pages
 
PerformanceTabm_performanceSettings
 
PopupPaletteTabm_popupPaletteSettings
 
ShortcutSettingsTabm_shortcutSettings
 
TabletSettingsTabm_tabletSettings
 

Detailed Description

Preferences dialog of KImageShop^WKrayon^WKrita

Definition at line 407 of file kis_dlg_preferences.h.

Member Enumeration Documentation

◆ ColorTabs

Enumerator
GeneralColor 
DisplayTab 
SoftProofing 

Definition at line 433 of file kis_dlg_preferences.h.

◆ DisplayTabs

Enumerator
CanvasAcceleration 
HDR 
CanvasDecoration 
MiscellaneousDisplay 

Definition at line 438 of file kis_dlg_preferences.h.

◆ GeneralTabs

Enumerator
File 
Pasting 
Window 
Cursor 
Tools 
Animation 
Resources 
MiscellaneousGeneral 

Definition at line 423 of file kis_dlg_preferences.h.

◆ Page

Enumerator
General 
Shortucts 
Color 
Performance 
Display 
Tablet 
Fullscreen 
Input 
PopupPalette 

Definition at line 412 of file kis_dlg_preferences.h.

◆ PerformaceTabs

Enumerator
GeneralPerformance 
Advanced 
AnimationCache 
InstantPreview 

Definition at line 444 of file kis_dlg_preferences.h.

Constructor & Destructor Documentation

◆ KisDlgPreferences()

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

Definition at line 2678 of file kis_dlg_preferences.cc.

2679 : KPageDialog(parent)
2680{
2681 Q_UNUSED(name);
2682 setWindowTitle(i18n("Configure Krita"));
2683 setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::RestoreDefaults);
2684
2685 setFaceType(KPageDialog::List);
2686
2687 // General
2688 KoVBox *vbox = new KoVBox();
2689 KPageWidgetItem *page = new KPageWidgetItem(vbox, i18n("General"));
2690 page->setObjectName("general");
2691 page->setHeader(i18n("General"));
2692 page->setIcon(KisIconUtils::loadIcon("config-general"));
2693 m_pages << page;
2694 addPage(page);
2695 m_general = new GeneralTab(vbox);
2696
2697 // Shortcuts
2698 vbox = new KoVBox();
2699 page = new KPageWidgetItem(vbox, i18n("Keyboard Shortcuts"));
2700 page->setObjectName("shortcuts");
2701 page->setHeader(i18n("Shortcuts"));
2702 page->setIcon(KisIconUtils::loadIcon("config-keyboard"));
2703 m_pages << page;
2704 addPage(page);
2706 connect(this, SIGNAL(accepted()), m_shortcutSettings, SLOT(saveChanges()));
2707 connect(this, SIGNAL(rejected()), m_shortcutSettings, SLOT(cancelChanges()));
2708
2709 // Canvas input settings
2711 page = addPage(m_inputConfiguration, i18n("Canvas Input Settings"));
2712 page->setHeader(i18n("Canvas Input"));
2713 page->setObjectName("canvasinput");
2714 page->setIcon(KisIconUtils::loadIcon("config-canvas-input"));
2715 m_pages << page;
2716
2717 // Display
2718 vbox = new KoVBox();
2719 page = new KPageWidgetItem(vbox, i18n("Display"));
2720 page->setObjectName("display");
2721 page->setHeader(i18n("Display"));
2722 page->setIcon(KisIconUtils::loadIcon("config-display"));
2723 m_pages << page;
2724 addPage(page);
2726
2727 // Color
2728 vbox = new KoVBox();
2729 page = new KPageWidgetItem(vbox, i18n("Color Management"));
2730 page->setObjectName("colormanagement");
2731 page->setHeader(i18nc("Label of color as in Color Management", "Color"));
2732 page->setIcon(KisIconUtils::loadIcon("config-color-manage"));
2733 m_pages << page;
2734 addPage(page);
2736
2737 // Performance
2738 vbox = new KoVBox();
2739 page = new KPageWidgetItem(vbox, i18n("Performance"));
2740 page->setObjectName("performance");
2741 page->setHeader(i18n("Performance"));
2742 page->setIcon(KisIconUtils::loadIcon("config-performance"));
2743 m_pages << page;
2744 addPage(page);
2746
2747 // Tablet
2748 vbox = new KoVBox();
2749 page = new KPageWidgetItem(vbox, i18n("Tablet settings"));
2750 page->setObjectName("tablet");
2751 page->setHeader(i18n("Tablet"));
2752 page->setIcon(KisIconUtils::loadIcon("config-tablet"));
2753 m_pages << page;
2754 addPage(page);
2756
2757 // full-screen mode
2758 vbox = new KoVBox();
2759 page = new KPageWidgetItem(vbox, i18n("Canvas-only settings"));
2760 page->setObjectName("canvasonly");
2761 page->setHeader(i18n("Canvas-only"));
2762 page->setIcon(KisIconUtils::loadIcon("config-canvas-only"));
2763 m_pages << page;
2764 addPage(page);
2766
2767 // Pop-up Palette
2768 vbox = new KoVBox();
2769 page = new KPageWidgetItem(vbox, i18n("Pop-up Palette"));
2770 page->setObjectName("popuppalette");
2771 page->setHeader(i18n("Pop-up Palette"));
2772 page->setIcon(KisIconUtils::loadIcon("config-popup-palette"));
2773 m_pages << page;
2774 addPage(page);
2776
2777 // Author profiles
2779 page = addPage(m_authorPage, i18nc("@title:tab Author page", "Author" ));
2780 page->setObjectName("author");
2781 page->setHeader(i18n("Author"));
2782 page->setIcon(KisIconUtils::loadIcon("user-identity"));
2783 m_pages << page;
2784
2785 KGuiItem::assign(button(QDialogButtonBox::Ok), KStandardGuiItem::ok());
2786 KGuiItem::assign(button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel());
2787 QPushButton *restoreDefaultsButton = button(QDialogButtonBox::RestoreDefaults);
2788 restoreDefaultsButton->setText(i18nc("@action:button", "Restore Defaults"));
2789
2790 connect(this, SIGNAL(accepted()), m_inputConfiguration, SLOT(saveChanges()));
2791 connect(this, SIGNAL(rejected()), m_inputConfiguration, SLOT(revertChanges()));
2792
2794 QStringList keys = preferenceSetRegistry->keys();
2795 keys.sort();
2796 Q_FOREACH(const QString &key, keys) {
2797 KisAbstractPreferenceSetFactory *preferenceSetFactory = preferenceSetRegistry->value(key);
2798 KisPreferenceSet* preferenceSet = preferenceSetFactory->createPreferenceSet();
2799 vbox = new KoVBox();
2800 page = new KPageWidgetItem(vbox, preferenceSet->name());
2801 page->setHeader(preferenceSet->header());
2802 page->setIcon(preferenceSet->icon());
2803 addPage(page);
2804 preferenceSet->setParent(vbox);
2805 preferenceSet->loadPreferences();
2806
2807 connect(restoreDefaultsButton, SIGNAL(clicked(bool)), preferenceSet, SLOT(loadDefaultPreferences()), Qt::UniqueConnection);
2808 connect(this, SIGNAL(accepted()), preferenceSet, SLOT(savePreferences()), Qt::UniqueConnection);
2809 }
2810
2811 connect(restoreDefaultsButton, SIGNAL(clicked(bool)), this, SLOT(slotDefault()));
2812
2813 KisConfig cfg(true);
2814 QString currentPageName = cfg.readEntry<QString>("KisDlgPreferences/CurrentPage");
2815 Q_FOREACH(KPageWidgetItem *page, m_pages) {
2816 if (page->objectName() == currentPageName) {
2817 setCurrentPage(page);
2818 break;
2819 }
2820 }
2821
2822 // TODO QT6: check what this code actually does?
2823#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
2824 {
2825 // HACK ALERT! Remove title widget background, thus making
2826 // it consistent across all systems
2827 const auto *titleWidget = findChild<KTitleWidget*>();
2828 if (titleWidget) {
2829 QLayoutItem *titleFrame = titleWidget->layout()->itemAt(0); // vboxLayout -> titleFrame
2830 if (titleFrame) {
2831 titleFrame->widget()->setBackgroundRole(QPalette::Window);
2832 }
2833 }
2834 }
2835#endif
2836}
virtual KisPreferenceSet * createPreferenceSet()=0
KoConfigAuthorPage * m_authorPage
PerformanceTab * m_performanceSettings
ColorSettingsTab * m_colorSettings
PopupPaletteTab * m_popupPaletteSettings
KisInputConfigurationPage * m_inputConfiguration
FullscreenSettingsTab * m_fullscreenSettings
ShortcutSettingsTab * m_shortcutSettings
TabletSettingsTab * m_tabletSettings
QList< KPageWidgetItem * > m_pages
DisplaySettingsTab * m_displaySettings
A Configuration Dialog Page to configure the canvas input.
static KisPreferenceSetRegistry * instance()
virtual QIcon icon()=0
virtual QString header()=0
virtual void loadPreferences()=0
virtual QString name()=0
const T value(const QString &id) const
QList< QString > keys() const
QString button(const QWheelEvent &ev)
QIcon loadIcon(const QString &name)

References button(), KisAbstractPreferenceSetFactory::createPreferenceSet(), KisPreferenceSet::header(), KisPreferenceSet::icon(), KisPreferenceSetRegistry::instance(), KoGenericRegistry< T >::keys(), KisIconUtils::loadIcon(), KisPreferenceSet::loadPreferences(), m_authorPage, m_colorSettings, m_displaySettings, m_fullscreenSettings, m_general, m_inputConfiguration, m_pages, m_performanceSettings, m_popupPaletteSettings, m_shortcutSettings, m_tabletSettings, KisPreferenceSet::name(), KisConfig::readEntry(), slotDefault(), and KoGenericRegistry< T >::value().

◆ ~KisDlgPreferences()

KisDlgPreferences::~KisDlgPreferences ( )
override

Definition at line 2838 of file kis_dlg_preferences.cc.

2839{
2840 KisConfig cfg(true);
2841 cfg.writeEntry<QString>("KisDlgPreferences/CurrentPage", currentPage()->objectName());
2842}

References KisConfig::writeEntry().

Member Function Documentation

◆ editPreferences()

bool KisDlgPreferences::editPreferences ( std::optional< PageDesc > page)

Definition at line 3023 of file kis_dlg_preferences.cc.

3024{
3025 connect(this->buttonBox(), SIGNAL(clicked(QAbstractButton*)), this, SLOT(slotButtonClicked(QAbstractButton*)));
3026
3027 if (page.has_value()) {
3028 PageDesc page_val = page.value();
3029 setCurrentPage(getPage(page_val.page));
3030 switchTab(page_val);
3031 }
3032
3033 int retval = exec();
3034 Q_UNUSED(retval);
3035
3036 if (!m_cancelClicked) {
3037 // General settings
3038 KisConfig cfg(false);
3039 KisImageConfig cfgImage(false);
3040
3041 cfg.setNewCursorStyle(m_general->cursorStyle());
3042 cfg.setNewOutlineStyle(m_general->outlineStyle());
3043 cfg.setSeparateEraserCursor(m_general->m_chkSeparateEraserCursor->isChecked());
3044 cfg.setEraserCursorStyle(m_general->eraserCursorStyle());
3045 cfg.setEraserOutlineStyle(m_general->eraserOutlineStyle());
3046 cfg.setColorSamplerPreviewStyle(m_general->colorSamplerPreviewStyle());
3047 cfg.setColorSamplerPreviewCircleDiameter(m_general->colorSamplerPreviewCircleDiameter());
3048 cfg.setColorSamplerPreviewCircleThickness(m_general->colorSamplerPreviewCircleThickness());
3049 cfg.setColorSamplerPreviewCircleOutlineEnabled(m_general->colorSamplerPreviewCircleOutlineEnabled());
3050 cfg.setColorSamplerPreviewCircleExtraCirclesEnabled(m_general->colorSamplerPreviewCircleExtraCirclesEnabled());
3051 cfg.setColorSamplerZoomPreviewEnabled(m_general->colorSamplerZoomPreviewEnabled());
3052 cfg.setColorSamplerZoomPreviewScale(m_general->colorSamplerZoomPreviewScale());
3053 cfg.setColorSamplerPreviewCirclePosition(m_general->colorSamplerPreviewCirclePosition());
3054
3055 cfg.setShowRootLayer(m_general->showRootLayer());
3056 cfg.setShowOutlineWhilePainting(m_general->showOutlineWhilePainting());
3057 cfg.setForceAlwaysFullSizedOutline(!m_general->m_changeBrushOutline->isChecked());
3058 cfg.setShowEraserOutlineWhilePainting(m_general->showEraserOutlineWhilePainting());
3059 cfg.setForceAlwaysFullSizedEraserOutline(!m_general->m_changeEraserBrushOutline->isChecked());
3060 cfg.setSessionOnStartup(m_general->sessionOnStartup());
3061 cfg.setSaveSessionOnQuit(m_general->saveSessionOnQuit());
3062 cfg.setIconsInMenu(m_general->iconsInMenu());
3063
3064 KConfigGroup group = KSharedConfig::openConfig()->group("File Dialogs");
3065 group.writeEntry("DontUseNativeFileDialog", !m_general->m_chkNativeFileDialog->isChecked());
3066
3067 cfgImage.setMaxBrushSize(m_general->intMaxBrushSize->value());
3068 cfg.setIgnoreHighFunctionKeys(m_general->chkIgnoreHighFunctionKeys->isChecked());
3069
3070 cfg.writeEntry<bool>("use_custom_system_font", m_general->chkUseCustomFont->isChecked());
3071 if (m_general->chkUseCustomFont->isChecked()) {
3072 cfg.writeEntry<QString>("custom_system_font", m_general->cmbCustomFont->currentFont().family());
3073 cfg.writeEntry<int>("custom_font_size", m_general->intFontSize->value());
3074 }
3075 else {
3076 cfg.writeEntry<QString>("custom_system_font", "");
3077 cfg.writeEntry<int>("custom_font_size", -1);
3078 }
3079
3080 cfg.writeEntry<int>("mdi_viewmode", m_general->mdiMode());
3081 cfg.setMDIBackgroundColor(m_general->m_mdiColor->color().toXML());
3082 cfg.setMDIBackgroundImage(m_general->m_backgroundimage->text());
3083 cfg.writeEntry<int>("mdi_rubberband", m_general->m_chkRubberBand->isChecked());
3084 cfg.setAutoSaveInterval(m_general->autoSaveInterval());
3085 cfg.writeEntry("autosavefileshidden", m_general->chkHideAutosaveFiles->isChecked());
3086
3087 cfg.setBackupFile(m_general->m_backupFileCheckBox->isChecked());
3088 cfg.writeEntry("backupfilelocation", m_general->cmbBackupFileLocation->currentIndex());
3089 cfg.writeEntry("backupfilesuffix", m_general->txtBackupFileSuffix->text());
3090 cfg.writeEntry("numberofbackupfiles", m_general->intNumBackupFiles->value());
3091
3092
3093 cfg.setShowCanvasMessages(m_general->showCanvasMessages());
3094 cfg.setCompressKra(m_general->compressKra());
3095 cfg.setTrimKra(m_general->trimKra());
3096 cfg.setTrimFramesImport(m_general->trimFramesImport());
3097 cfg.setExportMimeType(m_general->exportMimeType());
3098 cfg.setUseZip64(m_general->useZip64());
3099 cfg.setPasteFormat(m_general->m_pasteFormatGroup.checkedId());
3100
3101 const QString configPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
3102 QSettings kritarc(configPath + QStringLiteral("/kritadisplayrc"), QSettings::IniFormat);
3103 kritarc.setValue("EnableHiDPI", m_general->m_chkHiDPI->isChecked());
3104#if defined(Q_OS_WIN) && defined(HAVE_HIGH_DPI_SCALE_FACTOR_ROUNDING_POLICY)
3105 kritarc.setValue("EnableHiDPIFractionalScaling", m_general->m_chkHiDPIFractionalScaling->isChecked());
3106#endif
3107 kritarc.setValue("LogUsage", m_general->chkUsageLogging->isChecked());
3108
3109 cfg.setToolOptionsInDocker(m_general->toolOptionsInDocker());
3110
3111 cfg.writeEntry<bool>("useCreamyAlphaDarken", (bool)!m_general->cmbFlowMode->currentIndex());
3112 cfg.writeEntry<bool>("useSubtractiveBlendingForCmykColorSpaces", (bool)!m_general->cmbCmykBlendingMode->currentIndex());
3113
3114 cfg.setZoomSteps(m_general->zoomSteps());
3115 cfg.setLongPressEnabled(m_general->longPressEnabled());
3116 cfg.setKineticScrollingEnabled(m_general->kineticScrollingEnabled());
3117 cfg.setKineticScrollingGesture(m_general->kineticScrollingGesture());
3118 cfg.setKineticScrollingSensitivity(m_general->kineticScrollingSensitivity());
3119 cfg.setKineticScrollingHideScrollbars(m_general->kineticScrollingHiddenScrollbars());
3120
3121 cfg.setZoomMarginSize(m_general->zoomMarginSize());
3122
3123 cfg.setSwitchSelectionCtrlAlt(m_general->switchSelectionCtrlAlt());
3124 cfg.setTouchPainting(KisConfig::TouchPainting(m_general->cmbTouchPainting->currentIndex()));
3125 cfg.writeEntry("useTouchPressureSensitivity", m_general->chkTouchPressureSensitivity->isChecked());
3126 cfg.setActivateTransformToolAfterPaste(m_general->chkEnableTransformToolAfterPaste->isChecked());
3127 cfg.setZoomHorizontal(m_general->chkZoomHorizontally->isChecked());
3128 cfg.setSelectionActionBar(m_general->chkEnableSelectionActionBar->isChecked());
3129
3130 cfg.setConvertToImageColorspaceOnImport(m_general->convertToImageColorspaceOnImport());
3131 cfg.setUndoStackLimit(m_general->undoStackSize());
3132 cfg.setCumulativeUndoRedo(m_general->chkCumulativeUndo->isChecked());
3133 cfg.setCumulativeUndoData(m_general->m_cumulativeUndoData);
3134
3135 // Animation..
3136 cfg.setAutoPinLayersToTimeline(m_general->autopinLayersToTimeline());
3137 cfg.setAdaptivePlaybackRange(m_general->adaptivePlaybackRange());
3138 cfg.setAutoZoomTimelineToPlaybackRange(m_general->autoZoomTimelineToPlaybackRange());
3139
3140#ifdef Q_OS_ANDROID
3141 QFileInfo fi(m_general->m_resourceFolderSelector->currentData(Qt::UserRole).value<QString>());
3142#else
3143 QFileInfo fi(m_general->m_urlResourceFolder->fileName());
3144#endif
3145 if (fi.isWritable()) {
3146 cfg.writeEntry(KisResourceLocator::resourceLocationKey, fi.filePath());
3147 }
3148
3150 cfg.setRenamePastedLayers(m_general->renamePastedLayers());
3152
3153 // Color settings
3155 cfg.setEnableCanvasSurfaceColorSpaceManagement(
3157 cfg.setCanvasSurfaceColorSpaceManagementMode(
3159 cfg.setCanvasSurfaceBitDepthMode(m_colorSettings->m_canvasSurfaceBitDepth->currentData()
3161 }
3162 cfg.setUseDefaultColorSpace(m_colorSettings->m_page->useDefColorSpace->isChecked());
3163 if (cfg.useDefaultColorSpace())
3164 {
3165 KoID currentWorkingColorSpace = m_colorSettings->m_page->cmbWorkingColorSpace->currentItem();
3166 cfg.setWorkingColorSpace(currentWorkingColorSpace.id());
3167 cfg.defColorModel(KoColorSpaceRegistry::instance()->colorSpaceColorModelId(currentWorkingColorSpace.id()).id());
3168 cfg.setDefaultColorDepth(KoColorSpaceRegistry::instance()->colorSpaceColorDepthId(currentWorkingColorSpace.id()).id());
3169 }
3170
3171 cfg.writeEntry("ExrDefaultColorProfile", m_colorSettings->m_page->cmbColorProfileForEXR->currentText());
3172
3173 cfgImage.setDefaultProofingConfig(*m_colorSettings->m_page->wdgProofingOptions->currentProofingConfig());
3174 cfg.setUseBlackPointCompensation(m_colorSettings->m_page->chkBlackpoint->isChecked());
3175 cfg.setAllowLCMSOptimization(m_colorSettings->m_page->chkAllowLCMSOptimization->isChecked());
3176 cfg.setForcePaletteColors(m_colorSettings->m_page->chkForcePaletteColor->isChecked());
3177 cfg.setPasteBehaviour(m_colorSettings->m_pasteBehaviourGroup.checkedId());
3178 cfg.setRenderIntent(m_colorSettings->m_page->cmbMonitorIntent->currentIndex());
3179
3180 // Tablet settings
3181 cfg.setPressureTabletCurve( m_tabletSettings->m_page->pressureCurve->curve().toString() );
3182 cfg.setUseRightMiddleTabletButtonWorkaround(
3183 m_tabletSettings->m_page->chkUseRightMiddleClickWorkaround->isChecked());
3184
3185#if defined Q_OS_WIN && (defined QT5_HAS_WINTAB_SWITCH || QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
3186 cfg.setUseWin8PointerInput(m_tabletSettings->m_page->radioWin8PointerInput->isChecked());
3187
3188# if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
3189 // Qt6 supports switching the tablet API on the fly
3190 using QWindowsApplication = QNativeInterface::Private::QWindowsApplication;
3191 if (auto nativeWindowsApp = dynamic_cast<QWindowsApplication *>(QGuiApplicationPrivate::platformIntegration())) {
3192 nativeWindowsApp->setWinTabEnabled(!cfg.useWin8PointerInput());
3193 }
3194# endif
3195#endif
3196 cfg.writeEntry<bool>("useTimestampsForBrushSpeed", m_tabletSettings->m_page->chkUseTimestampsForBrushSpeed->isChecked());
3197
3198#if KRITA_QT_HAS_ANDROID_EMULATE_MOUSE_BUTTONS_FOR_PAGE_UP_DOWN
3199 cfg.setUsePageUpDownMouseButtonEmulationWorkaround(
3200 m_tabletSettings->m_page->chkUsePageUpDownMouseButtonEmulationWorkaround->isChecked());
3201#endif
3202
3203#if KRITA_QT_HAS_ANDROID_EMULATE_MOUSE_BUTTONS_FOR_HIGH_FUNCTION_KEYS
3204 cfg.setUseHighFunctionKeyMouseButtonEmulationWorkaround(
3205 m_tabletSettings->m_page->chkUseHighFunctionKeyMouseButtonEmulationWorkaround->isChecked());
3206#endif
3207
3208#if KRITA_QT_HAS_ANDROID_IGNORE_HISTORIC_TABLET_EVENTS
3209 cfg.setUseIgnoreHistoricTabletEventsWorkaround(
3210 m_tabletSettings->m_page->chkUseIgnoreHistoricTabletEventsWorkaround->isChecked());
3211#endif
3212
3213 cfg.writeEntry<int>("maxAllowedSpeedValue", m_tabletSettings->m_page->intMaxAllowedBrushSpeed->value());
3214 cfg.writeEntry<int>("speedValueSmoothing", m_tabletSettings->m_page->intBrushSpeedSmoothing->value());
3215 // the angle is saved in clockwise direction to be consistent with Drawing Angle, so negate
3216 cfg.writeEntry<int>("tiltDirectionOffset", -m_tabletSettings->m_page->tiltDirectionOffsetAngle->angle());
3217
3219
3220 if (!cfg.useOpenGL() && m_displaySettings->grpOpenGL->isChecked())
3221 cfg.setCanvasState("TRY_OPENGL");
3222
3223 if (m_displaySettings->grpOpenGL->isChecked()) {
3225 m_displaySettings->cmbPreferredRenderer->itemData(
3226 m_displaySettings->cmbPreferredRenderer->currentIndex()).toInt());
3228 } else {
3230 }
3231
3233 cfg.setPreferXcbEglProvider(m_displaySettings->cmbPreferredXcbGlApi->currentData().value<KisOpenGL::XcbGLProviderProtocol>() == KisOpenGL::XCB_EGL);
3234 }
3235
3236 cfg.setUseOpenGLTextureBuffer(m_displaySettings->chkUseTextureBuffer->isChecked());
3237 cfg.setOpenGLFilteringMode(m_displaySettings->cmbFilterMode->currentIndex());
3238 cfg.setRootSurfaceFormat(&kritarc, indexToFormat(m_displaySettings->cmbPreferedRootSurfaceFormat->currentIndex()));
3239 cfg.setAssistantsDrawMode(indexToAssistantDrawMode(m_displaySettings->cmbAssistantsDrawMode->currentIndex()));
3240
3241 cfg.setCheckSize(m_displaySettings->intCheckSize->value());
3242 cfg.setScrollingCheckers(m_displaySettings->chkMoving->isChecked());
3243 cfg.setCheckersColor1(m_displaySettings->colorChecks1->color().toQColor());
3244 cfg.setCheckersColor2(m_displaySettings->colorChecks2->color().toQColor());
3245 cfg.setCanvasBorderColor(m_displaySettings->canvasBorder->color().toQColor());
3246 cfg.setHideScrollbars(m_displaySettings->hideScrollbars->isChecked());
3247 KoColor c = m_displaySettings->btnSelectionOverlayColor->color();
3248 c.setOpacity(m_displaySettings->sldSelectionOverlayOpacity->value());
3249 cfgImage.setSelectionOverlayMaskColor(c.toQColor());
3250 cfgImage.setSelectionOutlineOpacity(m_displaySettings->sldSelectionOutlineOpacity->value());
3251 cfg.setAntialiasCurves(m_displaySettings->chkCurveAntialiasing->isChecked());
3252 cfg.setAntialiasSelectionOutline(m_displaySettings->chkSelectionOutlineAntialiasing->isChecked());
3253 cfg.setShowSingleChannelAsColor(m_displaySettings->chkChannelsAsColor->isChecked());
3254 cfg.setHidePopups(m_displaySettings->chkHidePopups->isChecked());
3255
3256 cfg.setHideDockersFullscreen(m_fullscreenSettings->chkDockers->checkState());
3257 cfg.setHideMenuFullscreen(m_fullscreenSettings->chkMenu->checkState());
3258 cfg.setHideScrollbarsFullscreen(m_fullscreenSettings->chkScrollbars->checkState());
3259 cfg.setHideStatusbarFullscreen(m_fullscreenSettings->chkStatusbar->checkState());
3260 cfg.setHideTitlebarFullscreen(m_fullscreenSettings->chkTitlebar->checkState());
3261 cfg.setHideToolbarFullscreen(m_fullscreenSettings->chkToolbar->checkState());
3262
3263 cfg.setCursorMainColor(m_general->cursorColorButton->color().toQColor());
3264 cfg.setEraserCursorMainColor(m_general->eraserCursorColorButton->color().toQColor());
3265 cfg.setPixelGridColor(m_displaySettings->pixelGridColorButton->color().toQColor());
3266 cfg.setPixelGridDrawingThreshold(m_displaySettings->pixelGridDrawingThresholdBox->value() / 100);
3267
3270
3271 cfg.logImportantSettings();
3272 cfg.writeEntry("forcedDpiForQtFontBugWorkaround", m_general->forcedFontDpi());
3273 }
3274
3275 return !m_cancelClicked;
3276}
QButtonGroup m_pasteBehaviourGroup
QPointer< QCheckBox > m_chkEnableCanvasColorSpaceManagement
QPointer< KisSqueezedComboBox > m_canvasSurfaceBitDepth
QPointer< KisSqueezedComboBox > m_canvasSurfaceColorSpace
WdgColorSettings * m_page
KisConfig::SessionOnStartup sessionOnStartup() const
bool kineticScrollingHiddenScrollbars()
bool saveSessionOnQuit() const
int colorSamplerPreviewCircleDiameter() const
bool autoZoomTimelineToPlaybackRange()
KisConfig::ColorSamplerPreviewStyle colorSamplerPreviewStyle() const
qreal colorSamplerZoomPreviewScale() const
bool colorSamplerPreviewCircleExtraCirclesEnabled() const
bool convertToImageColorspaceOnImport()
QButtonGroup m_pasteFormatGroup
OutlineStyle eraserOutlineStyle()
int kineticScrollingSensitivity()
KisCumulativeUndoData m_cumulativeUndoData
bool showOutlineWhilePainting()
CursorStyle eraserCursorStyle()
KisConfig::IconsInMenu iconsInMenu() const
KisConfig::ColorSamplerPreviewCirclePosition colorSamplerPreviewCirclePosition() const
bool colorSamplerPreviewCircleOutlineEnabled() const
bool colorSamplerZoomPreviewEnabled() const
OutlineStyle outlineStyle()
bool showEraserOutlineWhilePainting()
CursorStyle cursorStyle()
qreal colorSamplerPreviewCircleThickness() const
CanvasSurfaceBitDepthMode
Definition kis_config.h:206
KPageWidgetItem * getPage(Page page_enum)
void slotButtonClicked(QAbstractButton *button)
void switchTab(PageDesc tab)
void setRenameDuplicatedLayers(bool value)
void setRenameMergedLayers(bool value)
XcbGLProviderProtocol
Definition kis_opengl.h:63
static std::optional< XcbGLProviderProtocol > xcbGlProviderProtocol()
static void setUserPreferredOpenGLRendererConfig(OpenGLRenderer renderer)
static const QString resourceLocationKey
void setOpacity(quint8 alpha)
Definition KoColor.cpp:333
void toQColor(QColor *c) const
a convenience method for the above.
Definition KoColor.cpp:198
Definition KoID.h:30
QString id() const
Definition KoID.cpp:63
WdgTabletSettings * m_page
int toInt(const QString &str, bool *ok=nullptr)
constexpr auto has_value
Definition KisZug.h:67
static KoColorSpaceRegistry * instance()

References GeneralTab::adaptivePlaybackRange(), KoConfigAuthorPage::apply(), GeneralTab::autopinLayersToTimeline(), GeneralTab::autoSaveInterval(), GeneralTab::autoZoomTimelineToPlaybackRange(), GeneralTab::colorSamplerPreviewCircleDiameter(), GeneralTab::colorSamplerPreviewCircleExtraCirclesEnabled(), GeneralTab::colorSamplerPreviewCircleOutlineEnabled(), GeneralTab::colorSamplerPreviewCirclePosition(), GeneralTab::colorSamplerPreviewCircleThickness(), GeneralTab::colorSamplerPreviewStyle(), GeneralTab::colorSamplerZoomPreviewEnabled(), GeneralTab::colorSamplerZoomPreviewScale(), GeneralTab::compressKra(), GeneralTab::convertToImageColorspaceOnImport(), GeneralTab::cursorStyle(), KisConfig::defColorModel(), GeneralTab::eraserCursorStyle(), GeneralTab::eraserOutlineStyle(), GeneralTab::exportMimeType(), GeneralTab::forcedFontDpi(), getPage(), GeneralTab::iconsInMenu(), KoID::id(), KoColorSpaceRegistry::instance(), GeneralTab::kineticScrollingEnabled(), GeneralTab::kineticScrollingGesture(), GeneralTab::kineticScrollingHiddenScrollbars(), GeneralTab::kineticScrollingSensitivity(), KisConfig::logImportantSettings(), GeneralTab::longPressEnabled(), m_authorPage, m_cancelClicked, ColorSettingsTab::m_canvasSurfaceBitDepth, ColorSettingsTab::m_canvasSurfaceColorSpace, ColorSettingsTab::m_chkEnableCanvasColorSpaceManagement, ColorSettingsTab::m_colorManagedByOS, m_colorSettings, GeneralTab::m_cumulativeUndoData, m_displaySettings, m_fullscreenSettings, m_general, ColorSettingsTab::m_page, TabletSettingsTab::m_page, ColorSettingsTab::m_pasteBehaviourGroup, GeneralTab::m_pasteFormatGroup, m_performanceSettings, m_popupPaletteSettings, m_tabletSettings, GeneralTab::mdiMode(), GeneralTab::outlineStyle(), KisDlgPreferences::PageDesc::page, GeneralTab::renameDuplicatedLayers(), GeneralTab::renameMergedLayers(), GeneralTab::renamePastedLayers(), KisOpenGL::RendererNone, KisResourceLocator::resourceLocationKey, PerformanceTab::save(), PopupPaletteTab::save(), GeneralTab::saveSessionOnQuit(), GeneralTab::sessionOnStartup(), KisConfig::setActivateTransformToolAfterPaste(), KisConfig::setAdaptivePlaybackRange(), KisConfig::setAllowLCMSOptimization(), KisConfig::setAntialiasCurves(), KisConfig::setAntialiasSelectionOutline(), KisConfig::setAssistantsDrawMode(), KisConfig::setAutoPinLayersToTimeline(), KisConfig::setAutoSaveInterval(), KisConfig::setAutoZoomTimelineToPlaybackRange(), KisConfig::setBackupFile(), KisConfig::setCanvasBorderColor(), KisConfig::setCanvasState(), KisConfig::setCanvasSurfaceBitDepthMode(), KisConfig::setCanvasSurfaceColorSpaceManagementMode(), KisConfig::setCheckersColor1(), KisConfig::setCheckersColor2(), KisConfig::setCheckSize(), KisConfig::setColorSamplerPreviewCircleDiameter(), KisConfig::setColorSamplerPreviewCircleExtraCirclesEnabled(), KisConfig::setColorSamplerPreviewCircleOutlineEnabled(), KisConfig::setColorSamplerPreviewCirclePosition(), KisConfig::setColorSamplerPreviewCircleThickness(), KisConfig::setColorSamplerPreviewStyle(), KisConfig::setColorSamplerZoomPreviewEnabled(), KisConfig::setColorSamplerZoomPreviewScale(), KisConfig::setCompressKra(), KisConfig::setConvertToImageColorspaceOnImport(), KisConfig::setCumulativeUndoData(), KisConfig::setCumulativeUndoRedo(), KisConfig::setCursorMainColor(), KisConfig::setDefaultColorDepth(), KisImageConfig::setDefaultProofingConfig(), KisConfig::setEnableCanvasSurfaceColorSpaceManagement(), KisConfig::setEraserCursorMainColor(), KisConfig::setEraserCursorStyle(), KisConfig::setEraserOutlineStyle(), KisConfig::setExportMimeType(), KisConfig::setForceAlwaysFullSizedEraserOutline(), KisConfig::setForceAlwaysFullSizedOutline(), KisConfig::setForcePaletteColors(), KisConfig::setHideDockersFullscreen(), KisConfig::setHideMenuFullscreen(), KisConfig::setHidePopups(), KisConfig::setHideScrollbars(), KisConfig::setHideScrollbarsFullscreen(), KisConfig::setHideStatusbarFullscreen(), KisConfig::setHideTitlebarFullscreen(), KisConfig::setHideToolbarFullscreen(), KisConfig::setIconsInMenu(), KisConfig::setIgnoreHighFunctionKeys(), KisConfig::setKineticScrollingEnabled(), KisConfig::setKineticScrollingGesture(), KisConfig::setKineticScrollingHideScrollbars(), KisConfig::setKineticScrollingSensitivity(), KisConfig::setLongPressEnabled(), KisImageConfig::setMaxBrushSize(), KisConfig::setMDIBackgroundColor(), KisConfig::setMDIBackgroundImage(), KisConfig::setNewCursorStyle(), KisConfig::setNewOutlineStyle(), KoColor::setOpacity(), KisConfig::setOpenGLFilteringMode(), KisConfig::setPasteBehaviour(), KisConfig::setPasteFormat(), KisConfig::setPixelGridColor(), KisConfig::setPixelGridDrawingThreshold(), KisConfig::setPreferXcbEglProvider(), KisConfig::setPressureTabletCurve(), KisImageConfig::setRenameDuplicatedLayers(), KisImageConfig::setRenameMergedLayers(), KisConfig::setRenamePastedLayers(), KisConfig::setRenderIntent(), KisConfig::setRootSurfaceFormat(), KisConfig::setSaveSessionOnQuit(), KisConfig::setScrollingCheckers(), KisConfig::setSelectionActionBar(), KisImageConfig::setSelectionOutlineOpacity(), KisImageConfig::setSelectionOverlayMaskColor(), KisConfig::setSeparateEraserCursor(), KisConfig::setSessionOnStartup(), KisConfig::setShowCanvasMessages(), KisConfig::setShowEraserOutlineWhilePainting(), KisConfig::setShowOutlineWhilePainting(), KisConfig::setShowRootLayer(), KisConfig::setShowSingleChannelAsColor(), KisConfig::setSwitchSelectionCtrlAlt(), KisConfig::setToolOptionsInDocker(), KisConfig::setTouchPainting(), KisConfig::setTrimFramesImport(), KisConfig::setTrimKra(), KisConfig::setUndoStackLimit(), KisConfig::setUseBlackPointCompensation(), KisConfig::setUseDefaultColorSpace(), KisConfig::setUseOpenGLTextureBuffer(), KisConfig::setUseRightMiddleTabletButtonWorkaround(), KisOpenGL::setUserPreferredOpenGLRendererConfig(), KisConfig::setUseWin8PointerInput(), KisConfig::setUseZip64(), KisConfig::setWorkingColorSpace(), KisConfig::setZoomHorizontal(), KisConfig::setZoomMarginSize(), KisConfig::setZoomSteps(), GeneralTab::showCanvasMessages(), GeneralTab::showEraserOutlineWhilePainting(), GeneralTab::showOutlineWhilePainting(), GeneralTab::showRootLayer(), slotButtonClicked(), GeneralTab::switchSelectionCtrlAlt(), switchTab(), GeneralTab::toolOptionsInDocker(), KoColor::toQColor(), GeneralTab::trimFramesImport(), GeneralTab::trimKra(), GeneralTab::undoStackSize(), KisConfig::useDefaultColorSpace(), KisConfig::useOpenGL(), KisConfig::useWin8PointerInput(), GeneralTab::useZip64(), KisConfig::writeEntry(), KisOpenGL::XCB_EGL, KisOpenGL::xcbGlProviderProtocol(), GeneralTab::zoomMarginSize(), and GeneralTab::zoomSteps().

◆ getPage()

KPageWidgetItem * KisDlgPreferences::getPage ( Page page_enum)
private

Definition at line 2892 of file kis_dlg_preferences.cc.

2893{
2894 QString name = "";
2895 switch (page_enum) {
2896 case General:
2897 name = "general";
2898 break;
2899 case Shortucts:
2900 name = "shortcuts";
2901 break;
2902 case Color:
2903 name = "colormanagement";
2904 break;
2905 case Performance:
2906 name = "performance";
2907 break;
2908 case Display:
2909 name = "display";
2910 break;
2911 case Tablet:
2912 name = "tablet";
2913 break;
2914 case Fullscreen:
2915 name = "canvasonly";
2916 break;
2917 case Input:
2918 name = "canvasinput";
2919 break;
2920 case PopupPalette:
2921 name = "popuppalette";
2922 break;
2923 }
2924
2925 Q_FOREACH (KPageWidgetItem *page, m_pages) {
2926 if (page->objectName() == name) {
2927 return page;
2928 }
2929 }
2930 return nullptr;
2931}
const char * name(StandardAction id)

References Color, Display, Fullscreen, General, Input, m_pages, Performance, PopupPalette, Shortucts, and Tablet.

◆ showEvent()

void KisDlgPreferences::showEvent ( QShowEvent * event)
override

Definition at line 2844 of file kis_dlg_preferences.cc.

2844 {
2845 KPageDialog::showEvent(event);
2846 button(QDialogButtonBox::Cancel)->setAutoDefault(false);
2847 button(QDialogButtonBox::Ok)->setAutoDefault(false);
2848 button(QDialogButtonBox::RestoreDefaults)->setAutoDefault(false);
2849 button(QDialogButtonBox::Cancel)->setDefault(false);
2850 button(QDialogButtonBox::Ok)->setDefault(false);
2851 button(QDialogButtonBox::RestoreDefaults)->setDefault(false);
2852}

References button().

◆ slotButtonClicked

void KisDlgPreferences::slotButtonClicked ( QAbstractButton * button)
privateslot

Definition at line 2854 of file kis_dlg_preferences.cc.

2855{
2856 if (buttonBox()->buttonRole(button) == QDialogButtonBox::RejectRole) {
2857 m_cancelClicked = true;
2858 }
2859}

References button(), and m_cancelClicked.

◆ slotDefault

void KisDlgPreferences::slotDefault ( )
privateslot

Definition at line 2861 of file kis_dlg_preferences.cc.

2862{
2863 if (currentPage()->objectName() == "general") {
2865 }
2866 else if (currentPage()->objectName() == "shortcuts") {
2868 }
2869 else if (currentPage()->objectName() == "display") {
2871 }
2872 else if (currentPage()->objectName() == "colormanagement") {
2874 }
2875 else if (currentPage()->objectName() == "performance") {
2877 }
2878 else if (currentPage()->objectName() == "tablet") {
2880 }
2881 else if (currentPage()->objectName() == "canvasonly") {
2883 }
2884 else if (currentPage()->objectName() == "canvasinput") {
2886 }
2887 else if (currentPage()->objectName() == "popuppalette") {
2889 }
2890}
void load(bool requestDefault)

References PerformanceTab::load(), m_colorSettings, m_displaySettings, m_fullscreenSettings, m_general, m_inputConfiguration, m_performanceSettings, m_popupPaletteSettings, m_shortcutSettings, m_tabletSettings, GeneralTab::setDefault(), ShortcutSettingsTab::setDefault(), ColorSettingsTab::setDefault(), TabletSettingsTab::setDefault(), DisplaySettingsTab::setDefault(), FullscreenSettingsTab::setDefault(), PopupPaletteTab::setDefault(), and KisInputConfigurationPage::setDefaults().

◆ switchTab()

void KisDlgPreferences::switchTab ( PageDesc tab)
private

Definition at line 2933 of file kis_dlg_preferences.cc.

2934{
2935 switch (page.page) {
2936 case General: {
2937 QWidget *tab = nullptr;
2938 switch (page.tab) {
2939 case File:
2940 tab = m_general->File;
2941 break;
2942 case Pasting:
2943 tab = m_general->Pasting;
2944 break;
2945 case Window:
2946 tab = m_general->Window;
2947 break;
2948 case Cursor:
2949 tab = m_general->Cursor;
2950 break;
2951 case Tools:
2952 tab = m_general->Tools;
2953 break;
2954 case Animation:
2955 tab = m_general->Animation;
2956 break;
2957 case Resources:
2958 tab = m_general->Resources;
2959 break;
2961 tab = m_general->Miscellaneous;
2962 break;
2963 }
2964 m_general->tabWidget->setCurrentWidget(tab);
2965 } break;
2966 case Color: {
2967 QWidget *tab = nullptr;
2968 switch (page.tab) {
2969 case GeneralColor:
2970 tab = m_colorSettings->m_page->General;
2971 break;
2972 case DisplayTab:
2973 tab = m_colorSettings->m_page->Display;
2974 break;
2975 case SoftProofing:
2976 tab = m_colorSettings->m_page->SoftProofing;
2977 break;
2978 }
2979 m_colorSettings->m_page->tabWidget->setCurrentWidget(tab);
2980 } break;
2981 case Performance: {
2982 QWidget *tab = nullptr;
2983 switch (page.tab) {
2984 case GeneralPerformance:
2985 tab = m_performanceSettings->General;
2986 break;
2987 case Advanced:
2988 tab = m_performanceSettings->Advanced;
2989 break;
2990 case AnimationCache:
2991 tab = m_performanceSettings->AnimationCache;
2992 break;
2993 case InstantPreview:
2994 tab = m_performanceSettings->InstantPreview;
2995 break;
2996 }
2997 m_performanceSettings->tabWidget->setCurrentWidget(tab);
2998 } break;
2999 case Display: {
3000 QWidget *tab = nullptr;
3001 switch (page.tab) {
3002 case CanvasAcceleration:
3003 tab = m_displaySettings->CanvasAcceleration;
3004 break;
3005 case HDR:
3006 tab = m_displaySettings->HDR;
3007 break;
3008 case CanvasDecoration:
3009 tab = m_displaySettings->CanvasDecoration;
3010 break;
3012 tab = m_displaySettings->Miscellaneous;
3013 break;
3014 }
3015 m_displaySettings->tabWidget->setCurrentWidget(tab);
3016 } break;
3017
3018 default:
3019 break;
3020 }
3021}

References Advanced, Animation, AnimationCache, CanvasAcceleration, CanvasDecoration, Color, Cursor, Display, DisplayTab, File, General, GeneralColor, GeneralPerformance, HDR, InstantPreview, m_colorSettings, m_displaySettings, m_general, ColorSettingsTab::m_page, m_performanceSettings, MiscellaneousDisplay, MiscellaneousGeneral, KisDlgPreferences::PageDesc::page, Pasting, Performance, Resources, SoftProofing, KisDlgPreferences::PageDesc::tab, Tools, and Window.

Member Data Documentation

◆ m_authorPage

KoConfigAuthorPage* KisDlgPreferences::m_authorPage
private

Definition at line 476 of file kis_dlg_preferences.h.

◆ m_cancelClicked

bool KisDlgPreferences::m_cancelClicked {false}
private

Definition at line 487 of file kis_dlg_preferences.h.

487{false};

◆ m_colorSettings

ColorSettingsTab* KisDlgPreferences::m_colorSettings
private

Definition at line 469 of file kis_dlg_preferences.h.

◆ m_displaySettings

DisplaySettingsTab* KisDlgPreferences::m_displaySettings
private

Definition at line 471 of file kis_dlg_preferences.h.

◆ m_fullscreenSettings

FullscreenSettingsTab* KisDlgPreferences::m_fullscreenSettings
private

Definition at line 473 of file kis_dlg_preferences.h.

◆ m_general

GeneralTab* KisDlgPreferences::m_general
private

Definition at line 467 of file kis_dlg_preferences.h.

◆ m_inputConfiguration

KisInputConfigurationPage* KisDlgPreferences::m_inputConfiguration
private

Definition at line 474 of file kis_dlg_preferences.h.

◆ m_pages

QList<KPageWidgetItem*> KisDlgPreferences::m_pages
private

Definition at line 478 of file kis_dlg_preferences.h.

◆ m_performanceSettings

PerformanceTab* KisDlgPreferences::m_performanceSettings
private

Definition at line 470 of file kis_dlg_preferences.h.

◆ m_popupPaletteSettings

PopupPaletteTab* KisDlgPreferences::m_popupPaletteSettings
private

Definition at line 475 of file kis_dlg_preferences.h.

◆ m_shortcutSettings

ShortcutSettingsTab* KisDlgPreferences::m_shortcutSettings
private

Definition at line 468 of file kis_dlg_preferences.h.

◆ m_tabletSettings

TabletSettingsTab* KisDlgPreferences::m_tabletSettings
private

Definition at line 472 of file kis_dlg_preferences.h.


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