added support for printing simple labels

This commit is contained in:
Hubert Bryłkowski 2023-07-09 17:32:08 +02:00 committed by Piotr Gaczkowski
parent 92bf65dc62
commit aad7c67d48
6 changed files with 151 additions and 14 deletions

View file

@ -1,4 +1,11 @@
from labeler.domain.objects import Label, LabelRequest, LabelDefinition, MediaDefinition
from labeler.domain.objects import (
Label,
LabelRequest,
LabelDefinition,
MediaDefinition,
Dimension,
Image,
)
from labeler.interfaces import Renderer, Printer
@ -7,16 +14,16 @@ class Application:
self.renderer = renderer
self.printer = printer
def render_preview(self, label_request: LabelRequest):
def render_preview(self, text: str, length: int = None) -> Label:
media = self.printer.get_installed_media()
if label_request.length is not None:
label_length = label_request.length - 2 * media.minimal_margin_horizontal
if length != 0:
label_length = Dimension(mm=length) - 2 * media.minimal_margin_horizontal
else:
label_length = media.printable_length
label_length = None
label_definition = LabelDefinition(
text=label_request.text,
text=text,
length=label_length,
width=media.printable_width,
dpi=media.dpi,
@ -24,5 +31,24 @@ class Application:
self.renderer.render_label(label_definition)
def print_label(self, text: str, length: int = None) -> Image:
media = self.printer.get_installed_media()
if length != 0:
label_length = Dimension(mm=length) - 2 * media.minimal_margin_horizontal
else:
label_length = None
label_definition = LabelDefinition(
text=text,
length=label_length,
width=media.printable_width,
dpi=media.dpi,
)
label = self.renderer.render_label(label_definition)
self.printer.print_label(label)
return label
def get_installed_media(self) -> MediaDefinition:
return self.printer.get_installed_media()