diff options
Diffstat (limited to '')
-rw-r--r-- | share/extensions/barcode/__init__.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/share/extensions/barcode/__init__.py b/share/extensions/barcode/__init__.py new file mode 100644 index 0000000..1bfe281 --- /dev/null +++ b/share/extensions/barcode/__init__.py @@ -0,0 +1,77 @@ +# coding=utf-8 +# +# Copyright (C) 2014 Martin Owens +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# pylint: disable=no-self-use +""" +Renderer for barcodes, SVG extension for Inkscape. + +For supported barcodes see Barcode module directory. +""" + +from inkex.localization import inkex_gettext as _ + +# This lists all known Barcodes missing from this package +# ===== UPC-Based Extensions ====== # +# Code11 +# ========= Code25-Based ========== # +# Codabar +# Postnet +# ITF25 +# ========= Alpha-numeric ========= # +# Code39Mod +# USPS128 +# =========== 2D Based ============ # +# PDF417 +# PDF417-Macro +# PDF417-Truncated +# PDF417-GLI + + +class NoBarcode: + """Simple class for no barcode""" + + def __init__(self, msg): + self.msg = msg + + def encode(self, text): + """Encode the text into a barcode pattern""" + raise ValueError(_("No barcode encoder: {}").format(self.msg)) + + def generate(self): + """Generate actual svg from the barcode pattern""" + return None + + +def get_barcode(code, **kw): + """Gets a barcode from a list of available barcode formats""" + if not code: + return NoBarcode(_("No barcode format given.")) + + code = str(code).replace("-", "").strip() + module = "barcode." + code + lst = ["barcode"] + try: + return getattr(__import__(module, fromlist=lst), code)(kw) + except ImportError as err: + if code in str(err): + return NoBarcode(_("Invalid type of barcode: {}.{}").format(module, code)) + raise + except AttributeError: + return NoBarcode( + _("Barcode module is missing barcode class: {}.{}").format(module, code) + ) |