add set_with_default

This commit is contained in:
Patrick Kanzler 2023-09-03 23:40:29 +02:00
parent 7ef6d96078
commit 741fdc3919
2 changed files with 108 additions and 36 deletions

View File

@ -862,19 +862,19 @@ class Escpos(object):
def set(
self,
align: Optional[str] = "left",
font: Optional[str] = "a",
bold: Optional[bool] = False,
underline: Optional[int] = 0,
width: Optional[int] = 1,
height: Optional[int] = 1,
density: Optional[int] = 9,
invert: Optional[bool] = False,
smooth: Optional[bool] = False,
flip: Optional[bool] = False,
double_width: Optional[bool] = False,
double_height: Optional[bool] = False,
custom_size: Optional[bool] = False,
align: Optional[str] = None,
font: Optional[str] = None,
bold: Optional[bool] = None,
underline: Optional[int] = None,
width: Optional[int] = None,
height: Optional[int] = None,
density: Optional[int] = None,
invert: Optional[bool] = None,
smooth: Optional[bool] = None,
flip: bool = None,
double_width: Optional[bool] = None,
double_height: Optional[bool] = None,
custom_size: Optional[bool] = None,
) -> None:
"""Set text properties by sending them to the printer.
@ -915,7 +915,7 @@ class Escpos(object):
:type height: int
:type density: int
"""
if custom_size:
if custom_size is not None and custom_size:
if (
isinstance(width, int)
and isinstance(height, int)
@ -926,7 +926,7 @@ class Escpos(object):
self._raw(TXT_SIZE + six.int2byte(size_byte))
else:
raise SetVariableError()
else:
elif custom_size is not None:
self._raw(TXT_NORMAL)
if double_width and double_height:
self._raw(TXT_STYLE["size"]["2x"])
@ -936,20 +936,92 @@ class Escpos(object):
self._raw(TXT_STYLE["size"]["2h"])
else:
self._raw(TXT_STYLE["size"]["normal"])
else:
pass
if flip is not None:
self._raw(TXT_STYLE["flip"][flip])
if smooth is not None:
self._raw(TXT_STYLE["smooth"][smooth])
if bold is not None:
self._raw(TXT_STYLE["bold"][bold])
if underline is not None:
self._raw(TXT_STYLE["underline"][underline])
if font is not None:
self._raw(SET_FONT(six.int2byte(self.profile.get_font(font))))
if align is not None:
self._raw(TXT_STYLE["align"][align])
if density != 9:
if density is not None and density != 9:
self._raw(TXT_STYLE["density"][density])
if invert is not None:
self._raw(TXT_STYLE["invert"][invert])
def set_with_default(
self,
align: Optional[str] = "left",
font: Optional[str] = "a",
bold: Optional[bool] = False,
underline: Optional[int] = 0,
width: Optional[int] = 1,
height: Optional[int] = 1,
density: Optional[int] = 9,
invert: Optional[bool] = False,
smooth: bool = False,
flip: bool = False,
double_width: Optional[bool] = False,
double_height: Optional[bool] = False,
custom_size: Optional[bool] = False,
) -> None:
"""Set default text properties by sending them to the printer.
This function has the behavior of the `set()`-method from before
version 3.
If a parameter to this method is not supplied, a default value
will be sent.
Otherwise this method forwards the values to the
:py:meth:`escpos.Escpos.set()`.
:param align: horizontal position for text, possible values are:
* 'center'
* 'left'
* 'right'
*default*: 'left'
:param font: font given as an index, a name, or one of the
special values 'a' or 'b', referring to fonts 0 and 1.
:param bold: text in bold, *default*: False
:param underline: underline mode for text, decimal range 0-2, *default*: 0
:param double_height: doubles the height of the text
:param double_width: doubles the width of the text
:param custom_size: uses custom size specified by width and height
parameters. Cannot be used with double_width or double_height.
:param width: text width multiplier when custom_size is used, decimal range 1-8, *default*: 1
:param height: text height multiplier when custom_size is used, decimal range 1-8, *default*: 1
:param density: print density, value from 0-8, if something else is supplied the density remains unchanged
:param invert: True enables white on black printing, *default*: False
:param smooth: True enables text smoothing. Effective on 4x4 size text and larger, *default*: False
:param flip: True enables upside-down printing, *default*: False
"""
self.set(
align=align,
font=font,
bold=bold,
underline=underline,
width=width,
height=height,
density=density,
invert=invert,
smooth=smooth,
flip=flip,
double_width=double_width,
double_height=double_height,
custom_size=custom_size,
)
def line_spacing(self, spacing: Optional[int] = None, divisor: int = 180) -> None:
"""Set line character spacing.

View File

@ -8,7 +8,7 @@ from escpos.constants import SET_FONT, TXT_NORMAL, TXT_SIZE, TXT_STYLE
def test_default_values():
instance = printer.Dummy()
instance.set()
instance.set_with_default()
expected_sequence = (
TXT_NORMAL,
@ -30,7 +30,7 @@ def test_default_values():
def test_set_size_2h():
instance = printer.Dummy()
instance.set(double_height=True)
instance.set_with_default(double_height=True)
expected_sequence = (
TXT_NORMAL,
@ -49,7 +49,7 @@ def test_set_size_2h():
def test_set_size_2w():
instance = printer.Dummy()
instance.set(double_width=True)
instance.set_with_default(double_width=True)
expected_sequence = (
TXT_NORMAL,
@ -68,7 +68,7 @@ def test_set_size_2w():
def test_set_size_2x():
instance = printer.Dummy()
instance.set(double_height=True, double_width=True)
instance.set_with_default(double_height=True, double_width=True)
expected_sequence = (
TXT_NORMAL,
@ -87,7 +87,7 @@ def test_set_size_2x():
def test_set_size_custom():
instance = printer.Dummy()
instance.set(custom_size=True, width=8, height=7)
instance.set_with_default(custom_size=True, width=8, height=7)
expected_sequence = (
TXT_SIZE, # Custom text size, no normal reset
@ -109,7 +109,7 @@ def test_set_size_custom():
def test_set_flip():
instance = printer.Dummy()
instance.set(flip=True)
instance.set_with_default(flip=True)
expected_sequence = (
TXT_NORMAL,
@ -131,7 +131,7 @@ def test_set_flip():
def test_smooth():
instance = printer.Dummy()
instance.set(smooth=True)
instance.set_with_default(smooth=True)
expected_sequence = (
TXT_NORMAL,
@ -153,7 +153,7 @@ def test_smooth():
def test_set_bold():
instance = printer.Dummy()
instance.set(bold=True)
instance.set_with_default(bold=True)
expected_sequence = (
TXT_NORMAL,
@ -172,7 +172,7 @@ def test_set_bold():
def test_set_underline():
instance = printer.Dummy()
instance.set(underline=1)
instance.set_with_default(underline=1)
expected_sequence = (
TXT_NORMAL,
@ -191,7 +191,7 @@ def test_set_underline():
def test_set_underline2():
instance = printer.Dummy()
instance.set(underline=2)
instance.set_with_default(underline=2)
expected_sequence = (
TXT_NORMAL,
@ -213,7 +213,7 @@ def test_set_underline2():
def test_align_center():
instance = printer.Dummy()
instance.set(align="center")
instance.set_with_default(align="center")
expected_sequence = (
TXT_NORMAL,
@ -232,7 +232,7 @@ def test_align_center():
def test_align_right():
instance = printer.Dummy()
instance.set(align="right")
instance.set_with_default(align="right")
expected_sequence = (
TXT_NORMAL,
@ -255,7 +255,7 @@ def test_align_right():
def test_densities():
for density in range(8):
instance = printer.Dummy()
instance.set(density=density)
instance.set_with_default(density=density)
expected_sequence = (
TXT_NORMAL,
@ -278,7 +278,7 @@ def test_densities():
def test_invert():
instance = printer.Dummy()
instance.set(invert=True)
instance.set_with_default(invert=True)
expected_sequence = (
TXT_NORMAL,