From 2621f934e2f981916e057f1bd5bbb50feedbce7e Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Mon, 16 Sep 2019 10:42:29 -0500 Subject: [PATCH] Fix #1 --- conf.py | 60 +++++++++++++++++++++++++++++-- easymacro.py | 3 -- files/ZAZBarCode_v0.2.1.oxt | Bin 270092 -> 270583 bytes source/META-INF/manifest.xml | 1 + source/Office/Accelerators.xcu | 39 ++++++++++++++++++++ source/pythonpath/easymacro.py | 3 -- source/pythonpath/qrcode/main.py | 12 ++++--- zaz.py | 18 +++++++++- 8 files changed, 122 insertions(+), 14 deletions(-) create mode 100644 source/Office/Accelerators.xcu diff --git a/conf.py b/conf.py index 92bb509..614eab2 100644 --- a/conf.py +++ b/conf.py @@ -114,7 +114,7 @@ CONTEXT = { # ~ SHIFT is mapped to Shift on all platforms. # ~ MOD1 is mapped to Ctrl on Windows/Linux, while it is mapped to Cmd on Mac. # ~ MOD2 is mapped to Alt on all platforms. -# ~ For example: Shift+Ctrl+Alt+M -> M_SHIFT_MOD1_MOD2 +# ~ For example: Shift+Ctrl+Alt+T -> T_SHIFT_MOD1_MOD2 PARENT = 'OfficeMenuBar' MENU_MAIN = { 'en': 'ZAZ BarCode', @@ -127,6 +127,7 @@ MENUS = ( 'context': 'calc,writer,impress,draw', 'icon': 'barcode', 'toolbar': False, + 'shortcut': 'I_SHIFT_MOD1_MOD2', }, { 'title': {'en': 'Insert CODE39', 'es': 'Insertar CODE39'}, @@ -276,8 +277,9 @@ DIRS = { 'images': 'images', 'registration': 'registration', 'files': 'files', - 'pythonpath': True, + 'office': 'Office', 'locales': PATH_LOCALES, + 'pythonpath': True, } @@ -293,6 +295,7 @@ FILES = { 'rdb': f'X{NAME}.rdb', 'update': f'{NAME.lower()}.update.xml', 'addin': 'CalcAddIn.xcu', + 'shortcut': 'Accelerators.xcu', 'easymacro': True, } @@ -545,7 +548,8 @@ if TYPE_EXTENSION == 3: FILE_MANIFEST = f""" - {NODE_ADDONS} + + {NODE_ADDONS} """ @@ -686,6 +690,55 @@ FILE_ADDIN = f""" """ +NODE_SHORTCUT = """ {0} + {0} + {0}service:{2}?{3} + {0} + {0} +""" + + +NODE_SHORTCUTS = '' +if TYPE_EXTENSION == 1: + node_global = [] + node_module = {} + for m in MENUS: + if not m.get('shortcut', ''): + continue + if m['context']: + for c in m['context'].split(','): + if not c in node_module: + node_module[c] = [] + node = NODE_SHORTCUT.format(' ', m['shortcut'], ID, m['argument']) + node_module[c].append(node) + continue + node = NODE_SHORTCUT.format('', m['shortcut'], ID, m['argument']) + node_global.append(node) + if node_global: + NODE_SHORTCUTS = ' \n' + NODE_SHORTCUTS += '\n'.join(node_global) + NODE_SHORTCUTS += ' ' + if node_module: + NODE_SHORTCUTS += ' \n' + for c, n in node_module.items(): + NODE_SHORTCUTS += ' \n'.format(CONTEXT[c]) + NODE_SHORTCUTS += '\n'.join(n) + NODE_SHORTCUTS += ' \n' + NODE_SHORTCUTS += ' ' + +FILE_SHORTCUTS = f""" + + +{NODE_SHORTCUTS} + + +""" + + DATA = { 'py': FILE_PY, 'manifest': FILE_MANIFEST, @@ -694,6 +747,7 @@ DATA = { 'update': FILE_UPDATE, 'idl': FILE_IDL, 'addin': FILE_ADDIN, + 'shortcut': FILE_SHORTCUTS, } diff --git a/easymacro.py b/easymacro.py index 1a3a224..e6ca331 100644 --- a/easymacro.py +++ b/easymacro.py @@ -68,9 +68,6 @@ MSG_LANG = { FILE_NAME_DEBUG = 'zaz-debug.log' LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s' LOG_DATE = '%d/%m/%Y %H:%M:%S' -# ~ LEVEL_ERROR = logging.getLevelName(logging.ERROR) -# ~ LEVEL_DEBUG = logging.getLevelName(logging.DEBUG) -# ~ LEVEL_INFO = logging.getLevelName(logging.INFO) logging.addLevelName(logging.ERROR, '\033[1;41mERROR\033[1;0m') logging.addLevelName(logging.DEBUG, '\x1b[33mDEBUG\033[1;0m') logging.addLevelName(logging.INFO, '\x1b[32mINFO\033[1;0m') diff --git a/files/ZAZBarCode_v0.2.1.oxt b/files/ZAZBarCode_v0.2.1.oxt index eaf82f73004d8540ec4f549e9e315fa7ebfeb180..3c23dcce7289c3f705025ef31b4a19f0e679cb80 100644 GIT binary patch delta 13250 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 delta 12770 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 + diff --git a/source/Office/Accelerators.xcu b/source/Office/Accelerators.xcu new file mode 100644 index 0000000..d290b14 --- /dev/null +++ b/source/Office/Accelerators.xcu @@ -0,0 +1,39 @@ + + + + + + + + service:net.elmau.zaz.BarCode?ask + + + + + + + service:net.elmau.zaz.BarCode?ask + + + + + + + service:net.elmau.zaz.BarCode?ask + + + + + + + service:net.elmau.zaz.BarCode?ask + + + + + + diff --git a/source/pythonpath/easymacro.py b/source/pythonpath/easymacro.py index 1a3a224..e6ca331 100644 --- a/source/pythonpath/easymacro.py +++ b/source/pythonpath/easymacro.py @@ -68,9 +68,6 @@ MSG_LANG = { FILE_NAME_DEBUG = 'zaz-debug.log' LOG_FORMAT = '%(asctime)s - %(levelname)s - %(message)s' LOG_DATE = '%d/%m/%Y %H:%M:%S' -# ~ LEVEL_ERROR = logging.getLevelName(logging.ERROR) -# ~ LEVEL_DEBUG = logging.getLevelName(logging.DEBUG) -# ~ LEVEL_INFO = logging.getLevelName(logging.INFO) logging.addLevelName(logging.ERROR, '\033[1;41mERROR\033[1;0m') logging.addLevelName(logging.DEBUG, '\x1b[33mDEBUG\033[1;0m') logging.addLevelName(logging.INFO, '\x1b[32mINFO\033[1;0m') diff --git a/source/pythonpath/qrcode/main.py b/source/pythonpath/qrcode/main.py index 7317372..5cbc2a8 100644 --- a/source/pythonpath/qrcode/main.py +++ b/source/pythonpath/qrcode/main.py @@ -1,8 +1,12 @@ +import struct +from bisect import bisect_left + from qrcode import constants, exceptions, util from qrcode.image.base import BaseImage -import six -from bisect import bisect_left + +def int2byte(value): + return struct.Struct('>B').pack(value) def make(data=None, **kwargs): @@ -236,7 +240,7 @@ class QRCode(object): self.make() modcount = self.modules_count - codes = [six.int2byte(code).decode('cp437') + codes = [int2byte(code).decode('cp437') for code in (255, 223, 220, 219)] if tty: invert = True @@ -377,7 +381,7 @@ class QRCode(object): data_len = len(data) - for col in six.moves.xrange(self.modules_count - 1, 0, -2): + for col in range(self.modules_count - 1, 0, -2): if col <= 6: col -= 1 diff --git a/zaz.py b/zaz.py index 92c0533..5669ec1 100644 --- a/zaz.py +++ b/zaz.py @@ -20,6 +20,7 @@ import argparse import os import sys +from pathlib import Path from shutil import copyfile from subprocess import call import zipfile @@ -32,6 +33,7 @@ from conf import ( INFO, PATHS, TYPE_EXTENSION, + USE_LOCALES, log) @@ -44,7 +46,7 @@ def _join(*paths): def _mkdir(path): - return os.mkdir(path) + return Path(path).mkdir(parents=True, exist_ok=True) def _save(path, data): @@ -112,6 +114,8 @@ def _create_new_directories(): _mkdir(path) path = _join(path_source, DIRS['registration']) _mkdir(path) + path = _join(path_source, DIRS['office']) + _mkdir(path) if FILES['easymacro'] or DIRS['pythonpath']: path = _join(path_source, 'pythonpath') @@ -221,6 +225,11 @@ def _update_files(): path = _join(path_source, DIRS['meta'], FILES['manifest']) _save(path, DATA['manifest']) + path = _join(path_source, DIRS['office']) + _mkdir(path) + path = _join(path_source, DIRS['office'], FILES['shortcut']) + _save(path, DATA['shortcut']) + path = _join(path_source, FILES['addons']) _save(path, DATA['addons']) @@ -231,6 +240,13 @@ def _update_files(): path = _join(path_source, FILES['addin']) _save(path, DATA['addin']) + if USE_LOCALES: + msg = "Don't forget generate DOMAIN.pot for locales" + log.info(msg) + for lang in EXTENSION['languages']: + path = _join(path_source, DIRS['locales'], lang, 'LC_MESSAGES') + Path(path).mkdir(parents=True, exist_ok=True) + _compile_idl() return