// This file is generated by kconfig_compiler_kf6 from kmplot.kcfg.
// All changes you do to this file will be lost.
#ifndef SETTINGS_H
#define SETTINGS_H

#include <kconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>

#include <QFontDatabase>

class Settings : public KConfigSkeleton
{
  public:
    class EnumDefaultEquationForm
    {
      public:
      enum type { Function, Implicit, COUNT };
    };

    static Settings *self();
    ~Settings() override;

    /**
      Set Axis-line width
    */
    static
    void setAxesLineWidth( double v )
    {
      if (!self()->isAxesLineWidthImmutable())
        self()->mAxesLineWidth = v;
    }

    /**
      Get Axis-line width
    */
    static
    double axesLineWidth()
    {
      return self()->mAxesLineWidth;
    }

    /**
      Is Axis-line width Immutable
    */
    static
    bool isAxesLineWidthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AxesLineWidth" ) );
    }

    /**
      Set Checked if labels are visible
    */
    static
    void setShowLabel( bool v )
    {
      if (!self()->isShowLabelImmutable())
        self()->mShowLabel = v;
    }

    /**
      Get Checked if labels are visible
    */
    static
    bool showLabel()
    {
      return self()->mShowLabel;
    }

    /**
      Is Checked if labels are visible Immutable
    */
    static
    bool isShowLabelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowLabel" ) );
    }

    /**
      Set Checked if axes are visible
    */
    static
    void setShowAxes( bool v )
    {
      if (!self()->isShowAxesImmutable())
        self()->mShowAxes = v;
    }

    /**
      Get Checked if axes are visible
    */
    static
    bool showAxes()
    {
      return self()->mShowAxes;
    }

    /**
      Is Checked if axes are visible Immutable
    */
    static
    bool isShowAxesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowAxes" ) );
    }

    /**
      Set Checked if arrows are visible
    */
    static
    void setShowArrows( bool v )
    {
      if (!self()->isShowArrowsImmutable())
        self()->mShowArrows = v;
    }

    /**
      Get Checked if arrows are visible
    */
    static
    bool showArrows()
    {
      return self()->mShowArrows;
    }

    /**
      Is Checked if arrows are visible Immutable
    */
    static
    bool isShowArrowsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "ShowArrows" ) );
    }

    /**
      Set Grid Line Width
    */
    static
    void setGridLineWidth( double v )
    {
      if (!self()->isGridLineWidthImmutable())
        self()->mGridLineWidth = v;
    }

    /**
      Get Grid Line Width
    */
    static
    double gridLineWidth()
    {
      return self()->mGridLineWidth;
    }

    /**
      Is Grid Line Width Immutable
    */
    static
    bool isGridLineWidthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "GridLineWidth" ) );
    }

    /**
      Set Grid Style
    */
    static
    void setGridStyle( int v )
    {
      if (!self()->isGridStyleImmutable())
        self()->mGridStyle = v;
    }

    /**
      Get Grid Style
    */
    static
    int gridStyle()
    {
      return self()->mGridStyle;
    }

    /**
      Is Grid Style Immutable
    */
    static
    bool isGridStyleImmutable()
    {
      return self()->isImmutable( QStringLiteral( "GridStyle" ) );
    }

    /**
      Set Tic length
    */
    static
    void setTicLength( double v )
    {
      if (!self()->isTicLengthImmutable())
        self()->mTicLength = v;
    }

    /**
      Get Tic length
    */
    static
    double ticLength()
    {
      return self()->mTicLength;
    }

    /**
      Is Tic length Immutable
    */
    static
    bool isTicLengthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TicLength" ) );
    }

    /**
      Set Tic width
    */
    static
    void setTicWidth( double v )
    {
      if (!self()->isTicWidthImmutable())
        self()->mTicWidth = v;
    }

    /**
      Get Tic width
    */
    static
    double ticWidth()
    {
      return self()->mTicWidth;
    }

    /**
      Is Tic width Immutable
    */
    static
    bool isTicWidthImmutable()
    {
      return self()->isImmutable( QStringLiteral( "TicWidth" ) );
    }

    /**
      Set Left boundary
    */
    static
    void setXMin( const QString & v )
    {
      if (!self()->isXMinImmutable())
        self()->mXMin = v;
    }

    /**
      Get Left boundary
    */
    static
    QString xMin()
    {
      return self()->mXMin;
    }

    /**
      Is Left boundary Immutable
    */
    static
    bool isXMinImmutable()
    {
      return self()->isImmutable( QStringLiteral( "XMin" ) );
    }

    /**
      Set Right boundary
    */
    static
    void setXMax( const QString & v )
    {
      if (!self()->isXMaxImmutable())
        self()->mXMax = v;
    }

    /**
      Get Right boundary
    */
    static
    QString xMax()
    {
      return self()->mXMax;
    }

    /**
      Is Right boundary Immutable
    */
    static
    bool isXMaxImmutable()
    {
      return self()->isImmutable( QStringLiteral( "XMax" ) );
    }

    /**
      Set Lower boundary
    */
    static
    void setYMin( const QString & v )
    {
      if (!self()->isYMinImmutable())
        self()->mYMin = v;
    }

    /**
      Get Lower boundary
    */
    static
    QString yMin()
    {
      return self()->mYMin;
    }

    /**
      Is Lower boundary Immutable
    */
    static
    bool isYMinImmutable()
    {
      return self()->isImmutable( QStringLiteral( "YMin" ) );
    }

    /**
      Set Upper boundary
    */
    static
    void setYMax( const QString & v )
    {
      if (!self()->isYMaxImmutable())
        self()->mYMax = v;
    }

    /**
      Get Upper boundary
    */
    static
    QString yMax()
    {
      return self()->mYMax;
    }

    /**
      Is Upper boundary Immutable
    */
    static
    bool isYMaxImmutable()
    {
      return self()->isImmutable( QStringLiteral( "YMax" ) );
    }

    /**
      Set Label to Horizontal Axis
    */
    static
    void setLabelHorizontalAxis( const QString & v )
    {
      if (!self()->isLabelHorizontalAxisImmutable())
        self()->mLabelHorizontalAxis = v;
    }

    /**
      Get Label to Horizontal Axis
    */
    static
    QString labelHorizontalAxis()
    {
      return self()->mLabelHorizontalAxis;
    }

    /**
      Is Label to Horizontal Axis Immutable
    */
    static
    bool isLabelHorizontalAxisImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LabelHorizontalAxis" ) );
    }

    /**
      Set Label to Vertical Axis
    */
    static
    void setLabelVerticalAxis( const QString & v )
    {
      if (!self()->isLabelVerticalAxisImmutable())
        self()->mLabelVerticalAxis = v;
    }

    /**
      Get Label to Vertical Axis
    */
    static
    QString labelVerticalAxis()
    {
      return self()->mLabelVerticalAxis;
    }

    /**
      Is Label to Vertical Axis Immutable
    */
    static
    bool isLabelVerticalAxisImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LabelVerticalAxis" ) );
    }

    /**
      Set Whether to use automatic or custom scaling.
    */
    static
    void setXScalingMode( int v )
    {
      if (!self()->isXScalingModeImmutable())
        self()->mXScalingMode = v;
    }

    /**
      Get Whether to use automatic or custom scaling.
    */
    static
    int xScalingMode()
    {
      return self()->mXScalingMode;
    }

    /**
      Is Whether to use automatic or custom scaling. Immutable
    */
    static
    bool isXScalingModeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "XScalingMode" ) );
    }

    /**
      Set Whether to use automatic or custom scaling.
    */
    static
    void setYScalingMode( int v )
    {
      if (!self()->isYScalingModeImmutable())
        self()->mYScalingMode = v;
    }

    /**
      Get Whether to use automatic or custom scaling.
    */
    static
    int yScalingMode()
    {
      return self()->mYScalingMode;
    }

    /**
      Is Whether to use automatic or custom scaling. Immutable
    */
    static
    bool isYScalingModeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "YScalingMode" ) );
    }

    /**
      Set Width of a unit from tic to tic
    */
    static
    void setXScaling( const QString & v )
    {
      if (!self()->isXScalingImmutable())
        self()->mXScaling = v;
    }

    /**
      Get Width of a unit from tic to tic
    */
    static
    QString xScaling()
    {
      return self()->mXScaling;
    }

    /**
      Is Width of a unit from tic to tic Immutable
    */
    static
    bool isXScalingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "XScaling" ) );
    }

    /**
      Set Height of a unit from tic to tic
    */
    static
    void setYScaling( const QString & v )
    {
      if (!self()->isYScalingImmutable())
        self()->mYScaling = v;
    }

    /**
      Get Height of a unit from tic to tic
    */
    static
    QString yScaling()
    {
      return self()->mYScaling;
    }

    /**
      Is Height of a unit from tic to tic Immutable
    */
    static
    bool isYScalingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "YScaling" ) );
    }

    /**
      Set Font of the axis labels
    */
    static
    void setAxesFont( const QFont & v )
    {
      if (!self()->isAxesFontImmutable())
        self()->mAxesFont = v;
    }

    /**
      Get Font of the axis labels
    */
    static
    QFont axesFont()
    {
      return self()->mAxesFont;
    }

    /**
      Is Font of the axis labels Immutable
    */
    static
    bool isAxesFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AxesFont" ) );
    }

    /**
      Set Font of the printed header table
    */
    static
    void setHeaderTableFont( const QFont & v )
    {
      if (!self()->isHeaderTableFontImmutable())
        self()->mHeaderTableFont = v;
    }

    /**
      Get Font of the printed header table
    */
    static
    QFont headerTableFont()
    {
      return self()->mHeaderTableFont;
    }

    /**
      Is Font of the printed header table Immutable
    */
    static
    bool isHeaderTableFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "HeaderTableFont" ) );
    }

    /**
      Set Font of diagram labels
    */
    static
    void setLabelFont( const QFont & v )
    {
      if (!self()->isLabelFontImmutable())
        self()->mLabelFont = v;
    }

    /**
      Get Font of diagram labels
    */
    static
    QFont labelFont()
    {
      return self()->mLabelFont;
    }

    /**
      Is Font of diagram labels Immutable
    */
    static
    bool isLabelFontImmutable()
    {
      return self()->isImmutable( QStringLiteral( "LabelFont" ) );
    }

    /**
      Set Axis-line color
    */
    static
    void setAxesColor( const QColor & v )
    {
      if (!self()->isAxesColorImmutable())
        self()->mAxesColor = v;
    }

    /**
      Get Axis-line color
    */
    static
    QColor axesColor()
    {
      return self()->mAxesColor;
    }

    /**
      Is Axis-line color Immutable
    */
    static
    bool isAxesColorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AxesColor" ) );
    }

    /**
      Set Grid Color
    */
    static
    void setGridColor( const QColor & v )
    {
      if (!self()->isGridColorImmutable())
        self()->mGridColor = v;
    }

    /**
      Get Grid Color
    */
    static
    QColor gridColor()
    {
      return self()->mGridColor;
    }

    /**
      Is Grid Color Immutable
    */
    static
    bool isGridColorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "GridColor" ) );
    }

    /**
      Set Color of function 1
    */
    static
    void setColor0( const QColor & v )
    {
      if (!self()->isColor0Immutable())
        self()->mColor0 = v;
    }

    /**
      Get Color of function 1
    */
    static
    QColor color0()
    {
      return self()->mColor0;
    }

    /**
      Is Color of function 1 Immutable
    */
    static
    bool isColor0Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color0" ) );
    }

    /**
      Set Color of function 2
    */
    static
    void setColor1( const QColor & v )
    {
      if (!self()->isColor1Immutable())
        self()->mColor1 = v;
    }

    /**
      Get Color of function 2
    */
    static
    QColor color1()
    {
      return self()->mColor1;
    }

    /**
      Is Color of function 2 Immutable
    */
    static
    bool isColor1Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color1" ) );
    }

    /**
      Set Color of function 3
    */
    static
    void setColor2( const QColor & v )
    {
      if (!self()->isColor2Immutable())
        self()->mColor2 = v;
    }

    /**
      Get Color of function 3
    */
    static
    QColor color2()
    {
      return self()->mColor2;
    }

    /**
      Is Color of function 3 Immutable
    */
    static
    bool isColor2Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color2" ) );
    }

    /**
      Set Color of function 4
    */
    static
    void setColor3( const QColor & v )
    {
      if (!self()->isColor3Immutable())
        self()->mColor3 = v;
    }

    /**
      Get Color of function 4
    */
    static
    QColor color3()
    {
      return self()->mColor3;
    }

    /**
      Is Color of function 4 Immutable
    */
    static
    bool isColor3Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color3" ) );
    }

    /**
      Set Color of function 5
    */
    static
    void setColor4( const QColor & v )
    {
      if (!self()->isColor4Immutable())
        self()->mColor4 = v;
    }

    /**
      Get Color of function 5
    */
    static
    QColor color4()
    {
      return self()->mColor4;
    }

    /**
      Is Color of function 5 Immutable
    */
    static
    bool isColor4Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color4" ) );
    }

    /**
      Set Color of function 6
    */
    static
    void setColor5( const QColor & v )
    {
      if (!self()->isColor5Immutable())
        self()->mColor5 = v;
    }

    /**
      Get Color of function 6
    */
    static
    QColor color5()
    {
      return self()->mColor5;
    }

    /**
      Is Color of function 6 Immutable
    */
    static
    bool isColor5Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color5" ) );
    }

    /**
      Set Color of function 7
    */
    static
    void setColor6( const QColor & v )
    {
      if (!self()->isColor6Immutable())
        self()->mColor6 = v;
    }

    /**
      Get Color of function 7
    */
    static
    QColor color6()
    {
      return self()->mColor6;
    }

    /**
      Is Color of function 7 Immutable
    */
    static
    bool isColor6Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color6" ) );
    }

    /**
      Set Color of function 8
    */
    static
    void setColor7( const QColor & v )
    {
      if (!self()->isColor7Immutable())
        self()->mColor7 = v;
    }

    /**
      Get Color of function 8
    */
    static
    QColor color7()
    {
      return self()->mColor7;
    }

    /**
      Is Color of function 8 Immutable
    */
    static
    bool isColor7Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color7" ) );
    }

    /**
      Set Color of function 9
    */
    static
    void setColor8( const QColor & v )
    {
      if (!self()->isColor8Immutable())
        self()->mColor8 = v;
    }

    /**
      Get Color of function 9
    */
    static
    QColor color8()
    {
      return self()->mColor8;
    }

    /**
      Is Color of function 9 Immutable
    */
    static
    bool isColor8Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color8" ) );
    }

    /**
      Set Color of function 10
    */
    static
    void setColor9( const QColor & v )
    {
      if (!self()->isColor9Immutable())
        self()->mColor9 = v;
    }

    /**
      Get Color of function 10
    */
    static
    QColor color9()
    {
      return self()->mColor9;
    }

    /**
      Is Color of function 10 Immutable
    */
    static
    bool isColor9Immutable()
    {
      return self()->isImmutable( QStringLiteral( "Color9" ) );
    }

    /**
      Set Radians instead of degrees
    */
    static
    void setAnglemode( int v )
    {
      if (!self()->isAnglemodeImmutable())
        self()->mAnglemode = v;
    }

    /**
      Get Radians instead of degrees
    */
    static
    int anglemode()
    {
      return self()->mAnglemode;
    }

    /**
      Is Radians instead of degrees Immutable
    */
    static
    bool isAnglemodeImmutable()
    {
      return self()->isImmutable( QStringLiteral( "anglemode" ) );
    }

    /**
      Set Background color
    */
    static
    void setBackgroundcolor( const QColor & v )
    {
      if (!self()->isBackgroundcolorImmutable())
        self()->mBackgroundcolor = v;
    }

    /**
      Get Background color
    */
    static
    QColor backgroundcolor()
    {
      return self()->mBackgroundcolor;
    }

    /**
      Is Background color Immutable
    */
    static
    bool isBackgroundcolorImmutable()
    {
      return self()->isImmutable( QStringLiteral( "backgroundcolor" ) );
    }

    /**
      Set Zoom-in step
    */
    static
    void setZoomInStep( int v )
    {
      if (!self()->isZoomInStepImmutable())
        self()->mZoomInStep = v;
    }

    /**
      Get Zoom-in step
    */
    static
    int zoomInStep()
    {
      return self()->mZoomInStep;
    }

    /**
      Is Zoom-in step Immutable
    */
    static
    bool isZoomInStepImmutable()
    {
      return self()->isImmutable( QStringLiteral( "zoomInStep" ) );
    }

    /**
      Set Zoom-out step
    */
    static
    void setZoomOutStep( int v )
    {
      if (!self()->isZoomOutStepImmutable())
        self()->mZoomOutStep = v;
    }

    /**
      Get Zoom-out step
    */
    static
    int zoomOutStep()
    {
      return self()->mZoomOutStep;
    }

    /**
      Is Zoom-out step Immutable
    */
    static
    bool isZoomOutStepImmutable()
    {
      return self()->isImmutable( QStringLiteral( "zoomOutStep" ) );
    }

    /**
      Set Extra detail when tracing
    */
    static
    void setDetailedTracing( bool v )
    {
      if (!self()->isDetailedTracingImmutable())
        self()->mDetailedTracing = v;
    }

    /**
      Get Extra detail when tracing
    */
    static
    bool detailedTracing()
    {
      return self()->mDetailedTracing;
    }

    /**
      Is Extra detail when tracing Immutable
    */
    static
    bool isDetailedTracingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DetailedTracing" ) );
    }

    /**
      Set DefaultEquationForm
    */
    static
    void setDefaultEquationForm( int v )
    {
      if (!self()->isDefaultEquationFormImmutable())
        self()->mDefaultEquationForm = v;
    }

    /**
      Get DefaultEquationForm
    */
    static
    int defaultEquationForm()
    {
      return self()->mDefaultEquationForm;
    }

    /**
      Is DefaultEquationForm Immutable
    */
    static
    bool isDefaultEquationFormImmutable()
    {
      return self()->isImmutable( QStringLiteral( "DefaultEquationForm" ) );
    }

  protected:
    Settings();
    friend class SettingsHelper;


    // Coordinate System
    double mAxesLineWidth;
    bool mShowLabel;
    bool mShowAxes;
    bool mShowArrows;
    double mGridLineWidth;
    int mGridStyle;
    double mTicLength;
    double mTicWidth;
    QString mXMin;
    QString mXMax;
    QString mYMin;
    QString mYMax;
    QString mLabelHorizontalAxis;
    QString mLabelVerticalAxis;

    // Scaling
    int mXScalingMode;
    int mYScalingMode;
    QString mXScaling;
    QString mYScaling;

    // Fonts
    QFont mAxesFont;
    QFont mHeaderTableFont;
    QFont mLabelFont;

    // Colors
    QColor mAxesColor;
    QColor mGridColor;
    QColor mColor0;
    QColor mColor1;
    QColor mColor2;
    QColor mColor3;
    QColor mColor4;
    QColor mColor5;
    QColor mColor6;
    QColor mColor7;
    QColor mColor8;
    QColor mColor9;

    // General
    int mAnglemode;
    QColor mBackgroundcolor;
    int mZoomInStep;
    int mZoomOutStep;
    bool mDetailedTracing;
    int mDefaultEquationForm;
};

#endif

