from abaqusConstants import *


class LineStyle:
    """The LineStyle object is used to define the line style to be used for drawing XY-Plot
    objects.
    LineStyle objects can be created using the methods described below.

    Notes
    -----
    This object can be accessed by:

    .. code-block:: python

        import visualization
        session.charts[name].area.border
        session.charts[name].axes1[i].axisData.curves[i].lineStyle
        session.charts[name].axes1[i].lineStyle
        session.charts[name].axes1[i].tickStyle
        session.charts[name].axes2[i].axisData.curves[i].lineStyle
        session.charts[name].axes2[i].lineStyle
        session.charts[name].axes2[i].tickStyle
        session.charts[name].curves[name].lineStyle
        session.charts[name].gridArea.border
        session.charts[name].legend.area.border
        session.charts[name].majorAxis1GridStyle
        session.charts[name].majorAxis2GridStyle
        session.charts[name].minorAxis1GridStyle
        session.charts[name].minorAxis2GridStyle
        session.charts[name].tagBorder
        session.curves[name].lineStyle
        session.defaultChartOptions.defaultAxis1Options.axisData.curves[i].lineStyle
        session.defaultChartOptions.defaultAxis1Options.lineStyle
        session.defaultChartOptions.defaultAxis1Options.tickStyle
        session.defaultChartOptions.defaultAxis2Options.axisData.curves[i].lineStyle
        session.defaultChartOptions.defaultAxis2Options.lineStyle
        session.defaultChartOptions.defaultAxis2Options.tickStyle
        session.defaultChartOptions.gridArea.border
        session.defaultChartOptions.legend.area.border
        session.defaultChartOptions.majorAxis1GridStyle
        session.defaultChartOptions.majorAxis2GridStyle
        session.defaultChartOptions.minorAxis1GridStyle
        session.defaultChartOptions.minorAxis2GridStyle
        session.defaultChartOptions.tagBorder
        session.defaultPlot.area.border
        session.defaultPlot.title.area.border
        session.xyPlots[name].area.border
        session.xyPlots[name].charts[name].area.border
        session.xyPlots[name].charts[name].axes1[i].axisData.curves[i].lineStyle
        session.xyPlots[name].charts[name].axes1[i].lineStyle
        session.xyPlots[name].charts[name].axes1[i].tickStyle
        session.xyPlots[name].charts[name].axes2[i].axisData.curves[i].lineStyle
        session.xyPlots[name].charts[name].axes2[i].lineStyle
        session.xyPlots[name].charts[name].axes2[i].tickStyle
        session.xyPlots[name].charts[name].curves[name].lineStyle
        session.xyPlots[name].charts[name].gridArea.border
        session.xyPlots[name].charts[name].legend.area.border
        session.xyPlots[name].charts[name].majorAxis1GridStyle
        session.xyPlots[name].charts[name].majorAxis2GridStyle
        session.xyPlots[name].charts[name].minorAxis1GridStyle
        session.xyPlots[name].charts[name].minorAxis2GridStyle
        session.xyPlots[name].charts[name].tagBorder
        session.xyPlots[name].curves[name].lineStyle
        session.xyPlots[name].title.area.border
    """

    def __init__(
        self,
        color: str = "",
        show: Boolean = ON,
        style: SymbolicConstant = SOLID,
        thickness: float = 0,
    ):
        """This method creates a LineStyle.

        Notes
        -----
        This function can be accessed by:

        .. code-block:: python

            session.LineStyle
            xyPlot.LineStyle

        Parameters
        ----------
        color
            A String specifying the color to be used when drawing a line with this LineStyle object.
            The default value is "White".
        show
            A Boolean specifying whether to draw the line when using this LineStyle. The default
            value is ON.
        style
            A SymbolicConstant specifying the line style to be used when drawing lines using this
            LineStyle. Possible values are SOLID, DASHED, DOTTED, and DOT_DASH. The default value is
            SOLID.
        thickness
            A Float specifying the line thickness in mm to be used when drawing lines using this
            LineStyle. The default value is 0.2.

        Returns
        -------
        LineStyle
            A :py:class:`~abaqus.XY.LineStyle.LineStyle` object.

        Raises
        ------
        ColorError
        """
        pass

    def setValues(
        self,
        color: str = "",
        show: Boolean = ON,
        style: SymbolicConstant = SOLID,
        thickness: float = 0,
    ):
        """This method modifies the LineStyle object.

        Parameters
        ----------
        color
            A String specifying the color to be used when drawing a line with this LineStyle object.
            The default value is "White".
        show
            A Boolean specifying whether to draw the line when using this LineStyle. The default
            value is ON.
        style
            A SymbolicConstant specifying the line style to be used when drawing lines using this
            LineStyle. Possible values are SOLID, DASHED, DOTTED, and DOT_DASH. The default value is
            SOLID.
        thickness
            A Float specifying the line thickness in mm to be used when drawing lines using this
            LineStyle. The default value is 0.2.
        """
        pass
