diff --git a/boxes/__init__.py b/boxes/__init__.py index 38c337139..ff2003d3e 100755 --- a/boxes/__init__.py +++ b/boxes/__init__.py @@ -401,6 +401,9 @@ def __init__(self) -> None: defaultgroup.add_argument( "--qr_code", action="store", type=boolarg, default=False, help="Add a QR Code with link or command line to the generated output") + defaultgroup.add_argument( + "--url", action="store", type=boolarg, default=False, + help="Add URL to generated output") defaultgroup.add_argument( "--inner_corners", action="store", type=str, default="loop", choices=["loop", "corner", "backarc"], @@ -470,18 +473,21 @@ def open(self): self.spacing = 2 * self.burn + self.spacing[0] * self.thickness + self.spacing[1] self.set_font("sans-serif") self._buildObjects() - if self.reference and self.format != 'svg_Ponoko': - self.move(self.reference, 10, "up", before=True) - self.ctx.rectangle(0, 0, self.reference, 10) - if self.reference < 80: - self.text(f"{self.reference:.1f}mm, burn:{self.burn:.2f}mm", self.reference + 5, 5, - fontsize=6, align="middle left", color=Color.ANNOTATIONS) - else: - self.text(f"{self.reference:.1f}mm, burn:{self.burn:.2f}mm", self.reference / 2.0, 5, - fontsize=6, align="middle center", color=Color.ANNOTATIONS) - self.move(self.reference, 10, "up") + if self.format != 'svg_Ponoko': + if self.reference: + self.move(self.reference, 10, "up", before=True) + self.ctx.rectangle(0, 0, self.reference, 10) + if self.reference < 80: + self.text(f"{self.reference:.1f}mm, burn:{self.burn:.2f}mm", self.reference + 5, 5, + fontsize=6, align="middle left", color=Color.ANNOTATIONS) + else: + self.text(f"{self.reference:.1f}mm, burn:{self.burn:.2f}mm", self.reference / 2.0, 5, + fontsize=6, align="middle center", color=Color.ANNOTATIONS) + self.move(self.reference, 10, "up") if self.qr_code: self.renderQrCode() + if self.url: + self.renderUrl() self.ctx.stroke() def renderQrCode(self): @@ -490,9 +496,15 @@ def renderQrCode(self): if content: with self.saved_context(): self.qrcode(content, box_size=size, move="right") - self.text(text=content, y=6, color=Color.ANNOTATIONS, fontsize=6) self.qrcode(content, box_size=size, move="up only") + def renderUrl(self): + content = self.metadata['url_short'] or self.metadata["cli_short"] + if self.url: + with self.saved_context(): + self.urltext(content, fontsize=6, color=Color.ANNOTATIONS) + self.urltext(content, fontsize=6, move="up only") + def buildArgParser(self, *l, **kw): """ Add commonly used arguments @@ -1674,6 +1686,14 @@ def qrcode(self, content: str, box_size: float = 1.0, color=Color.ETCHING, move: self.move(tw, th, move) + def urltext(self, content: str, fontsize: float = 6.0, color=Color.ANNOTATIONS, move: str | None = None): + tw, th = len(content), fontsize * 3 + if self.move(tw, th, move, True): + return + + self.text(text=content, y=6, color=color, fontsize=fontsize) + self.move(tw, th, move) + @restore def showBorderPoly(self,border,color=Color.ANNOTATIONS): """ diff --git a/boxes/scripts/boxesserver.py b/boxes/scripts/boxesserver.py index 8c7ef2e9c..ca07d7c71 100755 --- a/boxes/scripts/boxesserver.py +++ b/boxes/scripts/boxesserver.py @@ -91,7 +91,7 @@ def filter_url(url, non_default_args): return '' args = args.split('&') new_args = [] - args_to_ignore = ["qr_code", "format"] + args_to_ignore = ["qr_code", "url", "format"] for arg in args: a, b = arg.split('=') if a.strip() in args_to_ignore: diff --git a/locale/zh_CN/LC_MESSAGES/boxes.py.mo b/locale/zh_CN/LC_MESSAGES/boxes.py.mo index 4078915c2..fd0dc75bb 100644 Binary files a/locale/zh_CN/LC_MESSAGES/boxes.py.mo and b/locale/zh_CN/LC_MESSAGES/boxes.py.mo differ