@ -13,12 +13,12 @@
constexpr auto const * DEFAULT_FONT = " Sans " ;
constexpr auto DEFAULT_FONT_SIZE = 12 ;
# define WRIT E_BOOL_PROP(var) xmlNode = saveProperty((const char*)#var, (var) ? "true" : "false", root)
# define WRIT E_STRING_PROP(var) xmlNode = saveProperty((const char*)#var, (var).empty() ? "" : (var).c_str(), root)
# define WRIT E_INT_PROP(var) xmlNode = saveProperty((const char*)#var, var, root)
# define WRIT E_UINT_PROP(var) xmlNode = savePropertyUnsigned((const char*)#var, var, root)
# define WRIT E_DOUBLE_PROP(var) xmlNode = savePropertyDouble((const char*)#var, var, root)
# define WRITE_COMMENT(var) \
# define SAV E_BOOL_PROP(var) xmlNode = saveProperty((const char*)#var, (var) ? "true" : "false", root)
# define SAV E_STRING_PROP(var) xmlNode = saveProperty((const char*)#var, (var).empty() ? "" : (var).c_str(), root)
# define SAV E_INT_PROP(var) xmlNode = saveProperty((const char*)#var, var, root)
# define SAV E_UINT_PROP(var) xmlNode = savePropertyUnsigned((const char*)#var, var, root)
# define SAV E_DOUBLE_PROP(var) xmlNode = savePropertyDouble((const char*)#var, var, root)
# define ATTACH_COMMENT(var) \
com = xmlNewComment ( ( const xmlChar * ) ( var ) ) ; \
xmlAddPrevSibling ( xmlNode , com ) ;
@ -779,63 +779,63 @@ void Settings::save() {
" the others are commented in this file, but handle with care! " ) ) ;
xmlAddPrevSibling ( root , com ) ;
WRIT E_BOOL_PROP( pressureSensitivity ) ;
WRIT E_DOUBLE_PROP( minimumPressure ) ;
WRIT E_DOUBLE_PROP( pressureMultiplier ) ;
SAV E_BOOL_PROP( pressureSensitivity ) ;
SAV E_DOUBLE_PROP( minimumPressure ) ;
SAV E_DOUBLE_PROP( pressureMultiplier ) ;
WRIT E_BOOL_PROP( zoomGesturesEnabled ) ;
SAV E_BOOL_PROP( zoomGesturesEnabled ) ;
WRIT E_STRING_PROP( selectedToolbar ) ;
SAV E_STRING_PROP( selectedToolbar ) ;
auto lastSavePath = this - > lastSavePath . u8string ( ) ;
auto lastOpenPath = this - > lastOpenPath . u8string ( ) ;
auto lastImagePath = this - > lastImagePath . u8string ( ) ;
WRIT E_STRING_PROP( lastSavePath ) ;
WRIT E_STRING_PROP( lastOpenPath ) ;
WRIT E_STRING_PROP( lastImagePath ) ;
WRIT E_DOUBLE_PROP( zoomStep ) ;
WRIT E_DOUBLE_PROP( zoomStepScroll ) ;
WRIT E_INT_PROP( displayDpi ) ;
WRIT E_INT_PROP( mainWndWidth ) ;
WRIT E_INT_PROP( mainWndHeight ) ;
WRIT E_BOOL_PROP( maximized ) ;
WRIT E_BOOL_PROP( showToolbar ) ;
WRIT E_BOOL_PROP( showSidebar ) ;
WRIT E_INT_PROP( sidebarWidth ) ;
WRIT E_BOOL_PROP( sidebarOnRight ) ;
WRIT E_BOOL_PROP( scrollbarOnLeft ) ;
WRIT E_BOOL_PROP( menubarVisible ) ;
WRIT E_INT_PROP( numColumns ) ;
WRIT E_INT_PROP( numRows ) ;
WRIT E_BOOL_PROP( viewFixedRows ) ;
WRIT E_BOOL_PROP( showPairedPages ) ;
WRIT E_BOOL_PROP( layoutVertical ) ;
WRIT E_BOOL_PROP( layoutRightToLeft ) ;
WRIT E_BOOL_PROP( layoutBottomToTop ) ;
WRIT E_INT_PROP( numPairsOffset ) ;
WRIT E_BOOL_PROP( presentationMode ) ;
WRIT E_STRING_PROP( fullscreenHideElements ) ;
WRITE _COMMENT( " Which gui elements are hidden if you are in Fullscreen mode, separated by a colon (,) " ) ;
WRIT E_STRING_PROP( presentationHideElements ) ;
WRITE _COMMENT( " Which gui elements are hidden if you are in Presentation mode, separated by a colon (,) " ) ;
SAV E_STRING_PROP( lastSavePath ) ;
SAV E_STRING_PROP( lastOpenPath ) ;
SAV E_STRING_PROP( lastImagePath ) ;
SAV E_DOUBLE_PROP( zoomStep ) ;
SAV E_DOUBLE_PROP( zoomStepScroll ) ;
SAV E_INT_PROP( displayDpi ) ;
SAV E_INT_PROP( mainWndWidth ) ;
SAV E_INT_PROP( mainWndHeight ) ;
SAV E_BOOL_PROP( maximized ) ;
SAV E_BOOL_PROP( showToolbar ) ;
SAV E_BOOL_PROP( showSidebar ) ;
SAV E_INT_PROP( sidebarWidth ) ;
SAV E_BOOL_PROP( sidebarOnRight ) ;
SAV E_BOOL_PROP( scrollbarOnLeft ) ;
SAV E_BOOL_PROP( menubarVisible ) ;
SAV E_INT_PROP( numColumns ) ;
SAV E_INT_PROP( numRows ) ;
SAV E_BOOL_PROP( viewFixedRows ) ;
SAV E_BOOL_PROP( showPairedPages ) ;
SAV E_BOOL_PROP( layoutVertical ) ;
SAV E_BOOL_PROP( layoutRightToLeft ) ;
SAV E_BOOL_PROP( layoutBottomToTop ) ;
SAV E_INT_PROP( numPairsOffset ) ;
SAV E_BOOL_PROP( presentationMode ) ;
SAV E_STRING_PROP( fullscreenHideElements ) ;
ATTACH _COMMENT( " Which gui elements are hidden if you are in Fullscreen mode, separated by a colon (,) " ) ;
SAV E_STRING_PROP( presentationHideElements ) ;
ATTACH _COMMENT( " Which gui elements are hidden if you are in Presentation mode, separated by a colon (,) " ) ;
xmlNode = saveProperty ( " stylusCursorType " , stylusCursorTypeToString ( this - > stylusCursorType ) , root ) ;
WRITE _COMMENT( " The cursor icon used with a stylus, allowed values are \" none \" , \" dot \" , \" big \" " ) ;
ATTACH _COMMENT( " The cursor icon used with a stylus, allowed values are \" none \" , \" dot \" , \" big \" " ) ;
WRIT E_BOOL_PROP( highlightPosition ) ;
WRIT E_UINT_PROP( cursorHighlightColor ) ;
WRIT E_UINT_PROP( cursorHighlightBorderColor ) ;
WRIT E_DOUBLE_PROP( cursorHighlightRadius ) ;
WRIT E_DOUBLE_PROP( cursorHighlightBorderWidth ) ;
WRIT E_BOOL_PROP( darkTheme ) ;
SAV E_BOOL_PROP( highlightPosition ) ;
SAV E_UINT_PROP( cursorHighlightColor ) ;
SAV E_UINT_PROP( cursorHighlightBorderColor ) ;
SAV E_DOUBLE_PROP( cursorHighlightRadius ) ;
SAV E_DOUBLE_PROP( cursorHighlightBorderWidth ) ;
SAV E_BOOL_PROP( darkTheme ) ;
WRIT E_BOOL_PROP( disableScrollbarFadeout ) ;
SAV E_BOOL_PROP( disableScrollbarFadeout ) ;
if ( this - > scrollbarHideType = = SCROLLBAR_HIDE_BOTH ) {
xmlNode = saveProperty ( " scrollbarHideType " , " both " , root ) ;
@ -846,99 +846,99 @@ void Settings::save() {
} else {
xmlNode = saveProperty ( " scrollbarHideType " , " none " , root ) ;
}
WRITE _COMMENT(
ATTACH _COMMENT(
" Hides scroolbars in the main window, allowed values: \" none \" , \" horizontal \" , \" vertical \" , \" both \" " ) ;
WRIT E_BOOL_PROP( autoloadPdfXoj ) ;
WRIT E_STRING_PROP( defaultSaveName ) ;
SAV E_BOOL_PROP( autoloadPdfXoj ) ;
SAV E_STRING_PROP( defaultSaveName ) ;
WRIT E_BOOL_PROP( autosaveEnabled ) ;
WRIT E_INT_PROP( autosaveTimeout ) ;
SAV E_BOOL_PROP( autosaveEnabled ) ;
SAV E_INT_PROP( autosaveTimeout ) ;
WRIT E_BOOL_PROP( addHorizontalSpace ) ;
WRIT E_INT_PROP( addHorizontalSpaceAmount ) ;
WRIT E_BOOL_PROP( addVerticalSpace ) ;
WRIT E_INT_PROP( addVerticalSpaceAmount ) ;
SAV E_BOOL_PROP( addHorizontalSpace ) ;
SAV E_INT_PROP( addHorizontalSpaceAmount ) ;
SAV E_BOOL_PROP( addVerticalSpace ) ;
SAV E_INT_PROP( addVerticalSpaceAmount ) ;
WRIT E_BOOL_PROP( drawDirModsEnabled ) ;
WRIT E_INT_PROP( drawDirModsRadius ) ;
SAV E_BOOL_PROP( drawDirModsEnabled ) ;
SAV E_INT_PROP( drawDirModsRadius ) ;
WRIT E_BOOL_PROP( snapRotation ) ;
WRIT E_DOUBLE_PROP( snapRotationTolerance ) ;
WRIT E_BOOL_PROP( snapGrid ) ;
WRIT E_DOUBLE_PROP( snapGridTolerance ) ;
WRIT E_DOUBLE_PROP( snapGridSize ) ;
SAV E_BOOL_PROP( snapRotation ) ;
SAV E_DOUBLE_PROP( snapRotationTolerance ) ;
SAV E_BOOL_PROP( snapGrid ) ;
SAV E_DOUBLE_PROP( snapGridTolerance ) ;
SAV E_DOUBLE_PROP( snapGridSize ) ;
WRIT E_BOOL_PROP( touchDrawing ) ;
WRIT E_BOOL_PROP( pressureGuessing ) ;
SAV E_BOOL_PROP( touchDrawing ) ;
SAV E_BOOL_PROP( pressureGuessing ) ;
WRIT E_UINT_PROP( selectionBorderColor ) ;
WRIT E_UINT_PROP( backgroundColor ) ;
WRIT E_UINT_PROP( selectionMarkerColor ) ;
SAV E_UINT_PROP( selectionBorderColor ) ;
SAV E_UINT_PROP( backgroundColor ) ;
SAV E_UINT_PROP( selectionMarkerColor ) ;
WRIT E_DOUBLE_PROP( touchZoomStartThreshold ) ;
WRIT E_DOUBLE_PROP( pageRerenderThreshold ) ;
SAV E_DOUBLE_PROP( touchZoomStartThreshold ) ;
SAV E_DOUBLE_PROP( pageRerenderThreshold ) ;
WRIT E_INT_PROP( pdfPageCacheSize ) ;
WRITE _COMMENT( " The count of rendered PDF pages which will be cached. " ) ;
WRIT E_UINT_PROP( preloadPagesBefore ) ;
WRIT E_UINT_PROP( preloadPagesAfter ) ;
WRIT E_BOOL_PROP( eagerPageCleanup ) ;
SAV E_INT_PROP( pdfPageCacheSize ) ;
ATTACH _COMMENT( " The count of rendered PDF pages which will be cached. " ) ;
SAV E_UINT_PROP( preloadPagesBefore ) ;
SAV E_UINT_PROP( preloadPagesAfter ) ;
SAV E_BOOL_PROP( eagerPageCleanup ) ;
WRIT E_STRING_PROP( pageTemplate ) ;
WRITE _COMMENT( " Config for new pages " ) ;
SAV E_STRING_PROP( pageTemplate ) ;
ATTACH _COMMENT( " Config for new pages " ) ;
WRIT E_STRING_PROP( sizeUnit ) ;
SAV E_STRING_PROP( sizeUnit ) ;
WRIT E_STRING_PROP( audioFolder ) ;
WRIT E_INT_PROP( audioInputDevice ) ;
WRIT E_INT_PROP( audioOutputDevice ) ;
WRIT E_DOUBLE_PROP( audioSampleRate ) ;
WRIT E_DOUBLE_PROP( audioGain ) ;
WRIT E_INT_PROP( defaultSeekTime ) ;
SAV E_STRING_PROP( audioFolder ) ;
SAV E_INT_PROP( audioInputDevice ) ;
SAV E_INT_PROP( audioOutputDevice ) ;
SAV E_DOUBLE_PROP( audioSampleRate ) ;
SAV E_DOUBLE_PROP( audioGain ) ;
SAV E_INT_PROP( defaultSeekTime ) ;
WRIT E_STRING_PROP( pluginEnabled ) ;
WRIT E_STRING_PROP( pluginDisabled ) ;
SAV E_STRING_PROP( pluginEnabled ) ;
SAV E_STRING_PROP( pluginDisabled ) ;
WRIT E_INT_PROP( strokeFilterIgnoreTime ) ;
WRIT E_DOUBLE_PROP( strokeFilterIgnoreLength ) ;
WRIT E_INT_PROP( strokeFilterSuccessiveTime ) ;
WRIT E_BOOL_PROP( strokeFilterEnabled ) ;
WRIT E_BOOL_PROP( doActionOnStrokeFiltered ) ;
WRIT E_BOOL_PROP( trySelectOnStrokeFiltered ) ;
SAV E_INT_PROP( strokeFilterIgnoreTime ) ;
SAV E_DOUBLE_PROP( strokeFilterIgnoreLength ) ;
SAV E_INT_PROP( strokeFilterSuccessiveTime ) ;
SAV E_BOOL_PROP( strokeFilterEnabled ) ;
SAV E_BOOL_PROP( doActionOnStrokeFiltered ) ;
SAV E_BOOL_PROP( trySelectOnStrokeFiltered ) ;
WRIT E_BOOL_PROP( snapRecognizedShapesEnabled ) ;
WRIT E_BOOL_PROP( restoreLineWidthEnabled ) ;
SAV E_BOOL_PROP( snapRecognizedShapesEnabled ) ;
SAV E_BOOL_PROP( restoreLineWidthEnabled ) ;
WRIT E_INT_PROP( numIgnoredStylusEvents ) ;
SAV E_INT_PROP( numIgnoredStylusEvents ) ;
WRIT E_BOOL_PROP( inputSystemTPCButton ) ;
WRIT E_BOOL_PROP( inputSystemDrawOutsideWindow ) ;
SAV E_BOOL_PROP( inputSystemTPCButton ) ;
SAV E_BOOL_PROP( inputSystemDrawOutsideWindow ) ;
WRIT E_STRING_PROP( preferredLocale ) ;
SAV E_STRING_PROP( preferredLocale ) ;
/**
* Stabilizer related settings
*/
saveProperty ( " stabilizerAveragingMethod " , static_cast < int > ( stabilizerAveragingMethod ) , root ) ;
saveProperty ( " stabilizerPreprocessor " , static_cast < int > ( stabilizerPreprocessor ) , root ) ;
WRIT E_UINT_PROP( stabilizerBuffersize ) ;
WRIT E_DOUBLE_PROP( stabilizerSigma ) ;
WRIT E_DOUBLE_PROP( stabilizerDeadzoneRadius ) ;
WRIT E_DOUBLE_PROP( stabilizerDrag ) ;
WRIT E_DOUBLE_PROP( stabilizerMass ) ;
WRIT E_BOOL_PROP( stabilizerCuspDetection ) ;
WRIT E_BOOL_PROP( stabilizerFinalizeStroke ) ;
SAV E_UINT_PROP( stabilizerBuffersize ) ;
SAV E_DOUBLE_PROP( stabilizerSigma ) ;
SAV E_DOUBLE_PROP( stabilizerDeadzoneRadius ) ;
SAV E_DOUBLE_PROP( stabilizerDrag ) ;
SAV E_DOUBLE_PROP( stabilizerMass ) ;
SAV E_BOOL_PROP( stabilizerCuspDetection ) ;
SAV E_BOOL_PROP( stabilizerFinalizeStroke ) ;
/**/
WRIT E_BOOL_PROP( latexSettings . autoCheckDependencies ) ;
// Inline WRIT E_STRING_PROP(latexSettings.globalTemplatePath) since it
SAV E_BOOL_PROP( latexSettings . autoCheckDependencies ) ;
// Inline SAV E_STRING_PROP(latexSettings.globalTemplatePath) since it
// breaks on Windows due to the native character representation being
// wchar_t instead of char
fs : : path & p = latexSettings . globalTemplatePath ;
xmlNode = saveProperty ( " latexSettings.globalTemplatePath " , p . empty ( ) ? " " : p . u8string ( ) . c_str ( ) , root ) ;
WRIT E_STRING_PROP( latexSettings . genCmd ) ;
SAV E_STRING_PROP( latexSettings . genCmd ) ;
xmlNodePtr xmlFont = nullptr ;
xmlFont = xmlNewChild ( root , nullptr , reinterpret_cast < const xmlChar * > ( " property " ) , nullptr ) ;