diff --git a/printer.py b/printer.py index 8e377f1..0d164a2 100644 --- a/printer.py +++ b/printer.py @@ -67,8 +67,19 @@ class Split2Context: class ReceiptPrinter(CupsPrinter): def __init__(self, *args, autocut=True, **kwargs): self.autocut = autocut + self.is_open = False super().__init__(*args, **kwargs) + def open(self): + if not self.is_open: + super().open() + self.is_open = True + + def close(self): + if self.is_open: + super().close() + self.is_open = False + def __enter__(self): self.open() return self @@ -78,6 +89,14 @@ class ReceiptPrinter(CupsPrinter): self.cut() self.close() + def cut(self, *args, **kwargs): + if not self.is_open: + self.open() + super().cut(*args, **kwargs) + self.close() + else: + super().cut(*args, **kwargs) + def set(self, *args, **kwargs): super().set(*args, **kwargs) return CallbackContext(exit=super().set_with_default)