From 2141502bd6eca6293ce4031afe46e8213ef67656 Mon Sep 17 00:00:00 2001 From: Jason Dunsmore <53437+jasondunsmore@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:39:09 -0600 Subject: [PATCH] Add new url setting to display the short URL Also, separate url from qr_code, and separate url and qr_code from reference. Fixes: #901 --- boxes/__init__.py | 42 ++++++++++++++++++++------- boxes/scripts/boxesserver.py | 2 +- locale/zh_CN/LC_MESSAGES/boxes.py.mo | Bin 230874 -> 230881 bytes 3 files changed, 32 insertions(+), 12 deletions(-) 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 4078915c22f147c25fcec3380d3ab98b8f74c666..fd0dc75bbeb0148d7a7f98c2ae84847b89db2cce 100644 GIT binary patch delta 31543 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 delta 31465 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