This commit is contained in:
2026-02-21 23:57:03 +01:00
commit 2d9e3a6044
26 changed files with 6716 additions and 0 deletions

23
backend/logger.py Normal file
View File

@@ -0,0 +1,23 @@
import PluginUtils # type: ignore[import]
class Logger:
def __init__(self):
self._logger = PluginUtils.Logger()
def info(self, message: str) -> None:
"""Log an info message"""
self._logger.log(message)
def error(self, message: str) -> None:
"""Log an error message"""
self._logger.log(f"ERROR: {message}")
def warning(self, message: str) -> None:
"""Log a warning message"""
self._logger.log(f"WARNING: {message}")
def debug(self, message: str) -> None:
"""Log a debug message"""
self._logger.log(f"DEBUG: {message}")
logger = Logger()

28
backend/main.py Normal file
View File

@@ -0,0 +1,28 @@
import Millennium # pyright: ignore[reportMissingImports]
from logger import logger
class Plugin:
def _load(self) -> None:
try:
logger.info("Leetify Extension: Starting plugin initialization...")
Millennium.ready()
logger.info("Leetify Extension: Plugin loaded successfully")
except Exception as e:
logger.error(f"Leetify Extension: Failed to load plugin: {str(e)}")
raise
def _front_end_loaded(self) -> None:
try:
logger.info("Leetify Extension: Frontend loaded successfully")
# Add any frontend-specific initialization logic here if needed
except Exception as e:
logger.error(f"Leetify Extension: Error during frontend load: {str(e)}")
def _unload(self) -> None:
try:
logger.info("Leetify Extension: Plugin unloading...")
# Add any cleanup logic here if needed
logger.info("Leetify Extension: Plugin unloaded successfully")
except Exception as e:
logger.error(f"Leetify Extension: Error during plugin unload: {str(e)}")

78
backend/settings.py Normal file
View File

@@ -0,0 +1,78 @@
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