from typing import Literal
from MillenniumUtils import (  # pyright: ignore[reportMissingImports]
    CheckBox,
    DefineSetting,
    DropDown,
    NumberTextInput,
    Settings,
    FloatSlider,
    StringTextInput,
    FloatTextInput,
    NumberSlider,
)
from logger import logger


class PluginSettings(metaclass=Settings):
    @DefineSetting(
        name="CheckBox Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=CheckBox(),
        default=True,
    )
    def checkboxInput(self):
        pass

    @DefineSetting(
        name="Dropdown Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=DropDown(items=["String Value", False, 69]),
        default="String Value",
    )
    def dropDownInput(self):
        pass

    @DefineSetting(
        name="Float Slider Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=FloatSlider(range=(0.0, 10.0), step=0.5),
        default=0.5,
    )
    def floatSliderInput(self):
        pass

    @DefineSetting(
        name="Number Slider Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=NumberSlider(range=(0, 10), step=1),
        default=5,
    )
    def numberSliderInput(self):
        pass

    @DefineSetting(
        name="Number Text Input Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=NumberTextInput(range=(0, 10000)),
        default=1234,
    )
    def numberTextInput(self):
        pass

    @DefineSetting(
        name="String Text Input Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=StringTextInput(),
        default="Hello World!",
    )
    def stringTextInput(self):
        pass

    @DefineSetting(
        name="Float Text Input Example",
        description="lorem ipsum dolor sit amet, consectetur adipiscing elit",
        style=FloatTextInput(range=(0, 10000)),
        default=1234.0,
    )
    def floatTextInput(self):
        pass
