* feat: Run ShakeTune as an in-process Klipper module * feat: install shaketune dependencies to klipper venv * refactor: replace print_with_c_locale with klipper console output with stdout fallback
25 lines
668 B
Python
25 lines
668 B
Python
import io
|
|
from typing import Callable, Optional
|
|
|
|
|
|
class ConsoleOutput:
|
|
"""
|
|
Print output to stdout or to an alternative like the Klipper console through a callback
|
|
"""
|
|
|
|
_output_func: Optional[Callable[[str], None]] = None
|
|
|
|
@classmethod
|
|
def register_output_callback(cls, output_func: Optional[Callable[[str], None]]):
|
|
cls._output_func = output_func
|
|
|
|
@classmethod
|
|
def print(cls, *args, **kwargs):
|
|
if not cls._output_func:
|
|
print(*args, **kwargs)
|
|
return
|
|
|
|
with io.StringIO() as mem_output:
|
|
print(*args, file=mem_output, **kwargs)
|
|
cls._output_func(mem_output.getvalue())
|