From 614d80e479b85aea21aec96ea62ddf5e106ffb69 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Mon, 9 Sep 2019 22:42:38 -0500 Subject: [PATCH] Initial version --- LICENSE | 674 +++++++++++ README.md | 38 + VERSION | 1 + __pycache__/conf.cpython-37.pyc | Bin 0 -> 14789 bytes __pycache__/easymacro.cpython-37.pyc | Bin 0 -> 31797 bytes conf.py | 672 +++++++++++ easymacro.py | 1000 +++++++++++++++++ files/ZAZBarCode_v0.1.0.oxt | Bin 0 -> 263703 bytes images/barcode.png | Bin 0 -> 321 bytes images/barcode_16.bmp | Bin 0 -> 822 bytes images/logo.png | Bin 0 -> 26700 bytes source/Addons.xcu | 325 ++++++ source/META-INF/manifest.xml | 5 + source/ZAZBarCode.py | 216 ++++ source/description.xml | 26 + source/description/desc_en.txt | 1 + source/description/desc_es.txt | 1 + source/images/barcode_16.bmp | Bin 0 -> 822 bytes source/images/zazbarcode.png | Bin 0 -> 26700 bytes source/pythonpath/barcode/DejaVuSansMono.ttf | Bin 0 -> 321524 bytes source/pythonpath/barcode/__init__.py | 84 ++ source/pythonpath/barcode/base.py | 115 ++ .../pythonpath/barcode/charsets/__init__.py | 0 source/pythonpath/barcode/charsets/code128.py | 64 ++ source/pythonpath/barcode/charsets/code39.py | 34 + source/pythonpath/barcode/charsets/ean.py | 17 + source/pythonpath/barcode/charsets/itf.py | 12 + source/pythonpath/barcode/charsets/upc.py | 13 + source/pythonpath/barcode/codex.py | 282 +++++ source/pythonpath/barcode/ean.py | 199 ++++ source/pythonpath/barcode/errors.py | 33 + source/pythonpath/barcode/isxn.py | 135 +++ source/pythonpath/barcode/itf.py | 81 ++ source/pythonpath/barcode/pybarcode.py | 123 ++ source/pythonpath/barcode/upc.py | 114 ++ source/pythonpath/barcode/version.py | 4 + source/pythonpath/barcode/writer.py | 337 ++++++ source/pythonpath/easymacro.py | 1000 +++++++++++++++++ source/pythonpath/qrcode/LUT.py | 50 + source/pythonpath/qrcode/__init__.py | 25 + source/pythonpath/qrcode/base.py | 356 ++++++ source/pythonpath/qrcode/console_scripts.py | 100 ++ source/pythonpath/qrcode/constants.py | 5 + source/pythonpath/qrcode/exceptions.py | 2 + source/pythonpath/qrcode/image/__init__.py | 0 source/pythonpath/qrcode/image/base.py | 64 ++ source/pythonpath/qrcode/image/pil.py | 52 + source/pythonpath/qrcode/image/pure.py | 49 + source/pythonpath/qrcode/image/svg.py | 159 +++ source/pythonpath/qrcode/main.py | 434 +++++++ source/pythonpath/qrcode/release.py | 41 + source/pythonpath/qrcode/util.py | 599 ++++++++++ source/registration/license_en.txt | 14 + source/registration/license_es.txt | 14 + zaz.py | 279 +++++ 55 files changed, 7849 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 VERSION create mode 100644 __pycache__/conf.cpython-37.pyc create mode 100644 __pycache__/easymacro.cpython-37.pyc create mode 100644 conf.py create mode 100644 easymacro.py create mode 100644 files/ZAZBarCode_v0.1.0.oxt create mode 100644 images/barcode.png create mode 100644 images/barcode_16.bmp create mode 100644 images/logo.png create mode 100644 source/Addons.xcu create mode 100644 source/META-INF/manifest.xml create mode 100644 source/ZAZBarCode.py create mode 100644 source/description.xml create mode 100644 source/description/desc_en.txt create mode 100644 source/description/desc_es.txt create mode 100644 source/images/barcode_16.bmp create mode 100644 source/images/zazbarcode.png create mode 100755 source/pythonpath/barcode/DejaVuSansMono.ttf create mode 100644 source/pythonpath/barcode/__init__.py create mode 100644 source/pythonpath/barcode/base.py create mode 100644 source/pythonpath/barcode/charsets/__init__.py create mode 100644 source/pythonpath/barcode/charsets/code128.py create mode 100644 source/pythonpath/barcode/charsets/code39.py create mode 100644 source/pythonpath/barcode/charsets/ean.py create mode 100644 source/pythonpath/barcode/charsets/itf.py create mode 100644 source/pythonpath/barcode/charsets/upc.py create mode 100644 source/pythonpath/barcode/codex.py create mode 100644 source/pythonpath/barcode/ean.py create mode 100644 source/pythonpath/barcode/errors.py create mode 100644 source/pythonpath/barcode/isxn.py create mode 100644 source/pythonpath/barcode/itf.py create mode 100644 source/pythonpath/barcode/pybarcode.py create mode 100644 source/pythonpath/barcode/upc.py create mode 100644 source/pythonpath/barcode/version.py create mode 100644 source/pythonpath/barcode/writer.py create mode 100644 source/pythonpath/easymacro.py create mode 100644 source/pythonpath/qrcode/LUT.py create mode 100644 source/pythonpath/qrcode/__init__.py create mode 100644 source/pythonpath/qrcode/base.py create mode 100755 source/pythonpath/qrcode/console_scripts.py create mode 100644 source/pythonpath/qrcode/constants.py create mode 100644 source/pythonpath/qrcode/exceptions.py create mode 100644 source/pythonpath/qrcode/image/__init__.py create mode 100644 source/pythonpath/qrcode/image/base.py create mode 100644 source/pythonpath/qrcode/image/pil.py create mode 100644 source/pythonpath/qrcode/image/pure.py create mode 100644 source/pythonpath/qrcode/image/svg.py create mode 100644 source/pythonpath/qrcode/main.py create mode 100644 source/pythonpath/qrcode/release.py create mode 100644 source/pythonpath/qrcode/util.py create mode 100644 source/registration/license_en.txt create mode 100644 source/registration/license_es.txt create mode 100644 zaz.py diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..59fa655 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + empresa-libre + Copyright (C) 2016 Mauricio Baeza + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + empresa-libre Copyright (C) 2016 Mauricio Baeza + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1970a9a --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +ZAZ BarCode + +Extension for insert barcode in LibreOffice documents + +Barcodes provided + +* code39 +* code128 +* ean +* ean13 +* ean8 +* gs1 +* gtin +* isbn +* isbn10 +* isbn13 +* issn +* jan +* pzn +* upc +* upca +* qrcode + + +Thanks! + +https://gitlab.com/mauriciobaeza/zaz + +https://github.com/WhyNotHugo/python-barcode + +https://github.com/lincolnloop/python-qrcode + + +This extension have a cost of maintenance of 1 euro every year. + +BCH: `1RPLWHJW34p7pMQV1ft4x7eWhAYw69Dsb` + +BTC: `3Fe4JuADrAK8Qs7GDAxbSXR8E54avwZJLW` diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..6e8bf73 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.1.0 diff --git a/__pycache__/conf.cpython-37.pyc b/__pycache__/conf.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcd4199b85bce3ce38f73024fdd1a551134a4774 GIT binary patch literal 14789 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 literal 0 HcmV?d00001 diff --git a/__pycache__/easymacro.cpython-37.pyc b/__pycache__/easymacro.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd877f2cb6cc272da95a13d2a09ef94cad4ecf7a GIT binary patch literal 31797 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. + + +import logging + + +# ~ Type extension: +# ~ 1 = normal extension +# ~ 2 = new component +# ~ 3 = Calc addin +TYPE_EXTENSION = 1 + +# ~ https://semver.org/ +VERSION = '0.1.0' + +# ~ Your great extension name, not used spaces +NAME = 'ZAZBarCode' + +# ~ Should be unique, used URL inverse +ID = 'net.elmau.zaz.BarCode' + +PUBLISHER = { + 'en': {'text': 'El Mau', 'link': 'https://gitlab.com/mauriciobaeza'}, + 'es': {'text': 'El Mau', 'link': 'https://gitlab.com/mauriciobaeza'}, +} + +# ~ Name in this folder for copy +ICON = 'images/logo.png' +# ~ Name inside extensions +ICON_EXT = f'{NAME.lower()}.png' + +# ~ For example +# ~ DEPENDENCIES_MINIMAL = '6.0' +DEPENDENCIES_MINIMAL = '' + +# ~ Change for you favorite license +LICENSE_EN = f"""This file is part of {NAME}. + + {NAME} 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 3 of the License, or + (at your option) any later version. + + {NAME} 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 {NAME}. If not, see . +""" +LICENSE_ES = LICENSE_EN + + +INFO = { + 'en': { + 'display_name': 'ZAZ Bar Code', + 'description': 'Generate and insert barcode in documents', + 'license': LICENSE_EN, + }, + 'es': { + 'display_name': 'ZAZ Códigos de Barras', + 'description': 'Genera e inserta codigos de barras en documentos', + 'license': LICENSE_ES, + }, +} + + +CONTEXT = { + 'calc': 'com.sun.star.sheet.SpreadsheetDocument', + 'writer': 'com.sun.star.text.TextDocument', + 'impress': 'com.sun.star.presentation.PresentationDocument', + 'draw': 'com.sun.star.drawing.DrawingDocument', + 'base': 'com.sun.star.sdb.OfficeDatabaseDocument', + 'math': 'com.sun.star.formula.FormulaProperties', + 'basic': 'com.sun.star.script.BasicIDE', +} + + +# ~ Menus, only for TYPE_EXTENSION = 1 +# ~ Parent can be: AddonMenu or OfficeMenuBar +# ~ For icons con name: NAME_16.bmp, used only NAME +# ~ PARENT = 'AddonMenu' +# ~ MENU_MAIN = '' +PARENT = 'OfficeMenuBar' +MENU_MAIN = { + 'en': 'ZAZ BarCode', + 'es': 'ZAZ BarCode', +} +MENUS = ( + { + 'title': {'en': 'Insert BarCode', 'es': 'Insertar Código'}, + 'argument': 'ask', + 'context': 'calc,writer,impress,draw', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert CODE39', 'es': 'Insertar CODE39'}, + 'argument': 'code39', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert CODE128', 'es': 'Insertar CODE128'}, + 'argument': 'code128', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert EAN', 'es': 'Insertar EAN'}, + 'argument': 'ean', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert EAN8', 'es': 'Insertar EAN8'}, + 'argument': 'ean8', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert EAN13', 'es': 'Insertar EAN13'}, + 'argument': 'ean13', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert GS1', 'es': 'Insertar GS1'}, + 'argument': 'gs1', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert GTIN', 'es': 'Insertar GTIN'}, + 'argument': 'gtin', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert ISBN', 'es': 'Insertar ISBN'}, + 'argument': 'isbn', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert ISBN10', 'es': 'Insertar ISBN10'}, + 'argument': 'isbn10', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert ISBN13', 'es': 'Insertar ISBN13'}, + 'argument': 'isbn13', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert ISSN', 'es': 'Insertar ISSN'}, + 'argument': 'issn', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert JAN', 'es': 'Insertar JAN'}, + 'argument': 'jan', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert PZN', 'es': 'Insertar PZN'}, + 'argument': 'pzn', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert UPC', 'es': 'Insertar UPC'}, + 'argument': 'upc', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert UPCA', 'es': 'Insertar UPCA'}, + 'argument': 'upca', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, + { + 'title': {'en': 'Insert QRCODE', 'es': 'Insertar QRCODE'}, + 'argument': 'qrcode', + 'context': 'calc,writer', + 'icon': 'barcode', + 'toolbar': False, + }, +) + + +# ~ Functions, only for TYPE_EXTENSION = 3 +FUNCTIONS = { + 'test': { + 'displayname': {'en': 'test', 'es': 'prueba'}, + 'description': {'en': 'My test', 'es': 'Mi prueba'}, + 'parameters': { + 'value': { + 'displayname': {'en': 'value', 'es': 'valor'}, + 'description': {'en': 'The value', 'es': 'El valor'}, + }, + }, + }, +} +# ~ FUNCTIONS = {} + +EXTENSION = { + 'version': VERSION, + 'name': NAME, + 'id': ID, + 'icon': (ICON, ICON_EXT), +} + + +# ~ If used more libraries set python path in True and copy inside +# ~ If used easymacro pythonpath always is True +DIRS = { + 'meta': 'META-INF', + 'source': 'source', + 'description': 'description', + 'images': 'images', + 'registration': 'registration', + 'files': 'files', + 'pythonpath': False, +} + + +FILES = { + 'oxt': f'{NAME}_v{VERSION}.oxt', + 'py': f'{NAME}.py', + 'ext_desc': 'desc_{}.txt', + 'manifest': 'manifest.xml', + 'description': 'description.xml', + 'idl': f'X{NAME}.idl', + 'addons': 'Addons.xcu', + 'urd': f'X{NAME}.urd', + 'rdb': f'X{NAME}.rdb', + 'update': f'{NAME.lower()}.update.xml', + 'addin': 'CalcAddIn.xcu', + 'easymacro': True, +} + + +# ~ URLs for update for example +# ~ URL_XML_UPDATE = 'https://gitlab.com/USER/PROYECT/raw/BRANCH/FOLDERs/FILE_NAME' +URL_XML_UPDATE = '' +URL_OXT = '' + + +FILE_TEST = '/home/mau/test/test.ods' +PATHS = { + 'idlc': '/usr/lib/libreoffice/sdk/bin/idlc', + 'include': '/usr/share/idl/libreoffice', + 'regmerge': '/usr/lib/libreoffice/program/regmerge', + 'soffice': ('soffice', '--calc', FILE_TEST), + 'install': ('unopkg', 'add', '-v', '-f', '-s'), +} + + +SERVICES = { + 'job': "('com.sun.star.task.Job',)", + 'addin': "('com.sun.star.sheet.AddIn',)", +} + + +FORMAT = '%(asctime)s - %(levelname)s - %(message)s' +DATE = '%d/%m/%Y %H:%M:%S' +LEVEL_ERROR = logging.getLevelName(logging.ERROR) +LEVEL_INFO = logging.getLevelName(logging.INFO) +logging.addLevelName(logging.ERROR, f'\033[1;41m{LEVEL_ERROR}\033[1;0m') +logging.addLevelName(logging.INFO, f'\x1b[32m{LEVEL_INFO}\033[1;0m') +logging.basicConfig(level=logging.DEBUG, format=FORMAT, datefmt=DATE) +log = logging.getLogger(NAME) + + +def _methods(): + template = """ def {0}(self, {1}): + print({1}) + return 'ok'\n""" + functions = '' + for k, v in FUNCTIONS.items(): + args = ','.join(v['parameters'].keys()) + functions += template.format(k, args) + return functions + + +SRV = SERVICES['job'] +XSRV = 'XJobExecutor' +SRV_IMPORT = f'from com.sun.star.task import {XSRV}' +METHODS = """ def trigger(self, args='pyUNO'): + print('Hello World', args) + return\n""" + +if TYPE_EXTENSION > 1: + MENUS = () + XSRV = f'X{NAME}' + SRV_IMPORT = f'from {ID} import {XSRV}' +if TYPE_EXTENSION == 2: + SRV = f"('{ID}',)" + METHODS = """ def test(self, args='pyUNO'): + print('Hello World', args) + return\n""" +elif TYPE_EXTENSION == 3: + SRV = SERVICES['addin'] + METHODS = _methods() + + +FILE_PY = f"""import uno +import unohelper +{SRV_IMPORT} + + +ID_EXTENSION = '{ID}' +SERVICE = {SRV} + + +class {NAME}(unohelper.Base, {XSRV}): + + def __init__(self, ctx): + self.ctx = ctx + +{METHODS} + +g_ImplementationHelper = unohelper.ImplementationHelper() +g_ImplementationHelper.addImplementation({NAME}, ID_EXTENSION, SERVICE) +""" + + +tmp = ' {}' +node = [tmp.format(k, v['display_name']) for k, v in INFO.items()] +NODE_DISPLAY_NAME = '\n'.join(node) + +tmp = ' ' +node = [tmp.format(k) for k, v in INFO.items()] +NODE_EXTENSION_DESCRIPTION = '\n'.join(node) + +NODE_ICON = '' +if ICON: + NODE_ICON = f' ' + +NODE_PUBLISHER = '' +if PUBLISHER: + tmp = ' {}' + node = [tmp.format(v['link'], k, v['text']) for k, v in PUBLISHER.items()] + NODE_PUBLISHER = '\n'.join(node) + +NODE_DEPENDENCIES_MINIMAL = '' +if DEPENDENCIES_MINIMAL: + NODE_DEPENDENCIES_MINIMAL = f"""\n + + """ + +tmp = ' ' +node = [tmp.format(DIRS['registration'], k) for k in INFO.keys()] +NODE_LICENSE = '\n'.join(node) + +NODE_UPDATE = '' +if URL_XML_UPDATE: + NODE_UPDATE = f""" + + + """ + +FILE_DESCRIPTION = f""" + + + + +{NODE_DISPLAY_NAME} + + +{NODE_EXTENSION_DESCRIPTION} + + +{NODE_ICON} + + +{NODE_PUBLISHER} + + + +{NODE_LICENSE} + + {NODE_DEPENDENCIES_MINIMAL}{NODE_UPDATE} + +""" + +NODE_MENU = """ + +{titles} + + + service:{id}?{argument} + + + _self + + + {context} + + + %origin%/{folder}/{icon} + + """ + +opt = 'fuse' +if PARENT == 'OfficeMenuBar': + opt = 'replace' + + +def _get_context(args): + c = [] + for v in args.split(','): + c.append(CONTEXT[v]) + return ','.join(c) + + +menus = [] +toolbar = [] +tmp = ' {}' +for i, m in enumerate(MENUS): + titles = [tmp.format(k, v) for k, v in m['title'].items()] + values = { + 'id': ID, + 'index': i+101, + 'opt': opt, + 'titles': '\n'.join(titles), + 'argument': m['argument'], + 'context': _get_context(m['context']), + 'folder': DIRS['images'], + 'icon': m['icon'], + } + menus.append(NODE_MENU.format(**values)) + if m['toolbar']: + values['index'] = f't{i+1}' + toolbar.append(NODE_MENU.format(**values)) + +NODE_TOOLBAR = '' +if PARENT == 'AddonMenu': + NODE_MENUS = '\n'.join(menus) +else: + tmp = ' {}' + titles = '\n'.join([tmp.format(k, v) for k, v in MENU_MAIN.items()]) + SUBMENUS = '\n ' + '\n'.join(menus) + '\n ' + NODE_MENUS = f""" + +{titles} + + + _self + + {SUBMENUS} + """ + + if toolbar: + node_toolbars = '\n'.join(toolbar) + NODE_TOOLBAR = f""" + +{node_toolbars} + + """ + +FILE_ADDONS = f""" + + + +{NODE_MENUS} + +{NODE_TOOLBAR} + + +""" + + +NODE_ADDONS = '\n ' +if TYPE_EXTENSION > 1: + NODE_ADDONS = f'\n ' +if TYPE_EXTENSION == 3: + NODE_ADDONS += '\n ' + +FILE_MANIFEST = f""" + + {NODE_ADDONS} + +""" + + +FILE_UPDATE = '' +if URL_XML_UPDATE: + FILE_UPDATE = f""" + + + + + + + + + + + +""" + + +def _functions(): + a = '[in] any {}' + t = ' any {}({});' + f = '' + for k, v in FUNCTIONS.items(): + args = ','.join([a.format(k) for k, v in v['parameters'].items()]) + f += t.format(k, args) + return f + + +FILE_IDL = '' +if TYPE_EXTENSION > 1: + id_ext = ID.replace('.', '_') + interface = f'X{NAME}' + module = '' + for i, P in enumerate(ID.split('.')): + module += f'module {P} {{ ' + close_module = '}; ' * (i + 1) + functions = ' void test([in] any argument);' + if TYPE_EXTENSION == 3: + functions = _functions() + + FILE_IDL = f"""#ifndef __{id_ext}_idl__ +#define __{id_ext}_idl__ + +#include + +{module} + + interface {interface} : com::sun::star::uno::XInterface + {{ +{functions} + }}; + + service {P} {{ + interface {interface}; + }}; + +{close_module} +#endif +""" + + +def _parameters(args): + NODE = """ + +{displayname} + + +{description} + + """ + line = '{}{}' + node = '' + for k, v in args.items(): + displayname = '\n'.join( + [line.format(' ' * 16, k, v) for k, v in v['displayname'].items()]) + description = '\n'.join( + [line.format(' ' * 16, k, v) for k, v in v['description'].items()]) + values = { + 'name': k, + 'displayname': displayname, + 'description': description, + } + node += NODE.format(**values) + return node + + +NODE_FUNCTIONS = '' +if TYPE_EXTENSION == 3: + tmp = '{}{}' + NODE_FUNCTION = """ + +{displayname} + + +{description} + + + Add-In + + + AutoAddIn.{name} + + +{parameters} + + """ + + for k, v in FUNCTIONS.items(): + displayname = '\n'.join( + [tmp.format(' ' * 12, k, v) for k, v in v['displayname'].items()]) + description = '\n'.join( + [tmp.format(' ' * 12, k, v) for k, v in v['description'].items()]) + parameters = _parameters(v['parameters']) + values = { + 'name': k, + 'displayname': displayname, + 'description': description, + 'parameters': parameters, + } + NODE_FUNCTIONS += NODE_FUNCTION.format(**values) + + +FILE_ADDIN = f""" + + + + +{NODE_FUNCTIONS} + + + +""" + + +DATA = { + 'py': FILE_PY, + 'manifest': FILE_MANIFEST, + 'description': FILE_DESCRIPTION, + 'addons': FILE_ADDONS, + 'update': FILE_UPDATE, + 'idl': FILE_IDL, + 'addin': FILE_ADDIN, +} + + +# ~ LICENSE_ACCEPT_BY = 'admin' # or admin +# ~ LICENSE_SUPPRESS_ON_UPDATE = True diff --git a/easymacro.py b/easymacro.py new file mode 100644 index 0000000..76de6cf --- /dev/null +++ b/easymacro.py @@ -0,0 +1,1000 @@ +#!/usr/bin/env python3 + +# == Rapid Develop Macros in LibreOffice == + +# ~ This file is part of ZAZ. + +# ~ ZAZ 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 3 of the License, or +# ~ (at your option) any later version. + +# ~ ZAZ 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 ZAZ. If not, see . + + +import getpass +import logging +import os +import platform +import sys +import tempfile +import threading +import time +from functools import wraps + +import uno +import unohelper +from com.sun.star.beans import PropertyValue +from com.sun.star.awt import MessageBoxButtons as MSG_BUTTONS +from com.sun.star.awt.MessageBoxResults import YES +from com.sun.star.awt.PosSize import POSSIZE, SIZE +from com.sun.star.awt import Size, Point +from com.sun.star.table.CellContentType import EMPTY, VALUE, TEXT, FORMULA + +from com.sun.star.text.TextContentAnchorType import AS_CHARACTER + +from com.sun.star.lang import XEventListener +from com.sun.star.awt import XActionListener +from com.sun.star.awt import XMouseListener + + +FILE_NAME_DEBUG = 'debug.log' +MSG_LANG = { + 'es': { + 'OK': 'Aceptar', + 'Cancel': 'Cancelar', + } +} + +FORMAT = '%(asctime)s - %(levelname)s - %(message)s' +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, f'\033[1;41m{LEVEL_ERROR}\033[1;0m') +logging.addLevelName(logging.DEBUG, f'\x1b[33m{LEVEL_DEBUG}\033[1;0m') +logging.addLevelName(logging.INFO, f'\x1b[32m{LEVEL_INFO}\033[1;0m') +logging.basicConfig(level=logging.DEBUG, format=FORMAT, datefmt=DATE) +log = logging.getLogger(__name__) + + +OBJ_CELL = 'ScCellObj' +OBJ_RANGE = 'ScCellRangeObj' +OBJ_RANGES = 'ScCellRangesObj' +OBJ_TYPE_RANGES = (OBJ_CELL, OBJ_RANGE, OBJ_RANGES) + +CTX = uno.getComponentContext() +SM = CTX.getServiceManager() + + +def create_instance(name, with_context=False): + if with_context: + instance = SM.createInstanceWithContext(name, CTX) + else: + instance = SM.createInstance(name) + return instance + + +def _get_config(key, node_name): + name = 'com.sun.star.configuration.ConfigurationProvider' + service = 'com.sun.star.configuration.ConfigurationAccess' + cp = create_instance(name, True) + node = PropertyValue(Name='nodepath', Value=node_name) + try: + ca = cp.createInstanceWithArguments(service, (node,)) + if ca and (ca.hasByName(key)): + data = ca.getPropertyValue(key) + return data + except Exception as e: + log.error(e) + return '' + + +OS = sys.platform +USER = getpass.getuser() +PC = platform.node() + +LANGUAGE = _get_config('ooLocale', 'org.openoffice.Setup/L10N/') +NAME = TITLE = _get_config('ooName', 'org.openoffice.Setup/Product') +VERSION = _get_config('ooSetupVersion', 'org.openoffice.Setup/Product') +# ~ DESKTOP = create_instance('com.sun.star.frame.Desktop', True) + +INFO_DEBUG = '{}\n\n{}\n\n{}'.format( + sys.version, platform.platform(), '\n'.join(sys.path)) + + +def mri(obj): + m = create_instance('mytools.Mri') + if m is None: + msg = 'Extension MRI not found' + error(msg) + return + + m.inspect(obj) + return + + +def debug(info): + log.debug(info) + return + + +def error(info): + log.error(info) + return + + +def catch_exception(f): + @wraps(f) + def func(*args, **kwargs): + try: + return f(*args, **kwargs) + except Exception as e: + log.error(f.__name__, exc_info=True) + return func + + +def run_in_thread(fn): + def run(*k, **kw): + t = threading.Thread(target=fn, args=k, kwargs=kw) + t.start() + return t + return run + + +def _(msg): + L = LANGUAGE.split('-')[0] + if L == 'en': + return msg + + if not L in MSG_LANG: + return msg + + return MSG_LANG[L][msg] + + +def msgbox(message, title=TITLE, buttons=MSG_BUTTONS.BUTTONS_OK, type_msg='infobox'): + """ Create message box + type_msg: infobox, warningbox, errorbox, querybox, messbox + http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1awt_1_1XMessageBoxFactory.html + """ + toolkit = create_instance('com.sun.star.awt.Toolkit') + parent = toolkit.getDesktopWindow() + mb = toolkit.createMessageBox(parent, type_msg, buttons, title, str(message)) + return mb.execute() + + +def question(message, title=TITLE): + res = msgbox(message, title, MSG_BUTTONS.BUTTONS_YES_NO, 'querybox') + return res == YES + + +def warning(message, title=TITLE): + return msgbox(message, title, type_msg='warningbox') + + +def errorbox(message, title=TITLE): + return msgbox(message, title, type_msg='errorbox') + + +def get_desktop(): + return create_instance('com.sun.star.frame.Desktop', True) + + +def get_temp_file(): + return tempfile.NamedTemporaryFile() + + +def _path_url(path): + if path.startswith('file://'): + return path + return uno.systemPathToFileUrl(path) + + +def _path_system(path): + if path.startswith('file://'): + return os.path.abspath(uno.fileUrlToSystemPath(path)) + return path + + +def get_type_doc(obj): + services = { + 'calc': 'com.sun.star.sheet.SpreadsheetDocument', + 'writer': 'com.sun.star.text.TextDocument', + 'impress': 'com.sun.star.presentation.PresentationDocument', + 'draw': 'com.sun.star.drawing.DrawingDocument', + 'base': 'com.sun.star.sdb.OfficeDatabaseDocument', + 'math': 'com.sun.star.formula.FormulaProperties', + 'basic': 'com.sun.star.script.BasicIDE', + } + for k, v in services.items(): + if obj.supportsService(v): + return k + return '' + + +# ~ Custom classes + + +class LODocument(object): + + def __init__(self, obj): + self._obj = obj + self._init_values() + + def _init_values(self): + self._type_doc = get_type_doc(self.obj) + self._cc = self.obj.getCurrentController() + return + + @property + def obj(self): + return self._obj + + @property + def type(self): + return self._type_doc + + @property + def title(self): + return self.obj.getTitle() + + @property + def is_saved(self): + return self.obj.hasLocation() + + @property + def is_modified(self): + return self.obj.isModified() + + @property + def is_read_only(self): + return self.obj.isReadOnly() + + @property + def path(self): + return _path_system(self.obj.getURL()) + + @property + def visible(self): + w = self._cc.getFrame().getContainerWindow() + return w.Visible + @visible.setter + def visible(self, value): + w = self._cc.getFrame().getContainerWindow() + w.setVisible(value) + + @property + def zoom(self): + return self._cc.ZoomValue + @zoom.setter + def zoom(self, value): + self._cc.ZoomValue = value + + def create_instance(self, name): + obj = self.obj.createInstance(name) + return obj + + +class LOCalc(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + @property + def obj(self): + return self._obj + + @property + def active(self): + return LOCalcSheet(self._cc.getActiveSheet(), self) + + @property + def selection(self): + sel = self.obj.getCurrentSelection() + if sel.ImplementationName in OBJ_TYPE_RANGES: + sel = LOCellRange(sel, self) + return sel + + def get_cell(self, index=None): + """ + index is str 'A1' + index is tuple (row, col) + """ + if index is None: + cell = self.selection.first + else: + cell = LOCellRange(self.active[index].obj, self) + return cell + + # ~ def create_instance(self, name): + # ~ obj = self.obj.createInstance(name) + # ~ return obj + + +class LOCalcSheet(object): + + def __init__(self, obj, doc): + self._obj = obj + self._doc = doc + self._init_values() + + def __getitem__(self, index): + return LOCellRange(self.obj[index], self.doc) + + def _init_values(self): + return + + @property + def obj(self): + return self._obj + + @property + def doc(self): + return self._doc + + +class LOWriter(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + @property + def obj(self): + return self._obj + + @property + def string(self): + return self._obj.getText().String + + @property + def text(self): + return self._obj.getText() + + @property + def cursor(self): + return self.text.createTextCursor() + + @property + def selection(self): + sel = self._cc.getSelection() + return LOTextRange(sel[0]) + + def insert_content(self, cursor, data, replace=False): + self.text.insertTextContent(cursor, data, replace) + return + + # ~ tt = doc.createInstance('com.sun.star.text.TextTable') + # ~ tt.initialize(5, 2) + + # ~ f = doc.createInstance('com.sun.star.text.TextFrame') + # ~ f.setSize(Size(10000, 500)) + + def insert_image(self, path, **kwargs): + cursor = kwargs.get('cursor', self.selection.cursor.getEnd()) + w = kwargs.get('width', 1000) + h = kwargs.get('Height', 1000) + image = self.create_instance('com.sun.star.text.GraphicObject') + image.GraphicURL = _path_url(path) + image.AnchorType = AS_CHARACTER + image.Width = w + image.Height = h + self.insert_content(cursor, image) + return + + +class LOTextRange(object): + + def __init__(self, obj): + self._obj = obj + + @property + def obj(self): + return self._obj + + @property + def string(self): + return self.obj.String + + @property + def text(self): + return self.obj.getText() + + @property + def cursor(self): + return self.text.createTextCursorByRange(self.obj) + + +class LOBase(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + +class LODrawImpress(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + @property + def draw_page(self): + return self._cc.getCurrentPage() + + @catch_exception + def insert_image(self, path, **kwargs): + w = kwargs.get('width', 3000) + h = kwargs.get('Height', 1000) + x = kwargs.get('X', 1000) + y = kwargs.get('Y', 1000) + + image = self.create_instance('com.sun.star.drawing.GraphicObjectShape') + image.GraphicURL = _path_url(path) + image.Size = Size(w, h) + image.Position = Point(x, y) + self.draw_page.add(image) + return + + +class LOImpress(LODrawImpress): + + def __init__(self, obj): + super().__init__(obj) + + +class LODraw(LODrawImpress): + + def __init__(self, obj): + super().__init__(obj) + + +class LOMath(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + +class LOBasicIde(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + +class LOCellRange(object): + + def __init__(self, obj, doc): + self._obj = obj + self._doc = doc + self._init_values() + + def __enter__(self): + return self + + def __exit__(self, *args): + pass + + def __getitem__(self, index): + return LOCellRange(self.obj[index], self.doc) + + def _init_values(self): + self._type_obj = self.obj.ImplementationName + self._type_content = EMPTY + + if self._type_obj == OBJ_CELL: + self._type_content = self.obj.getType() + return + + @property + def obj(self): + return self._obj + + @property + def doc(self): + return self._doc + + @property + def type(self): + return self._type_obj + + @property + def type_content(self): + return self._type_content + + @property + def first(self): + if self.type == OBJ_RANGES: + obj = LOCellRange(self.obj[0][0,0], self.doc) + else: + obj = LOCellRange(self.obj[0,0], self.doc) + return obj + + @property + def value(self): + v = None + if self._type_content == VALUE: + v = self.obj.getValue() + elif self._type_content == TEXT: + v = self.obj.getString() + elif self._type_content == FORMULA: + v = self.obj.getFormula() + return v + @value.setter + def value(self, data): + if isinstance(data, str): + if data.startswith('='): + self.obj.setFormula(data) + else: + self.obj.setString(data) + elif isinstance(data, (int, float)): + self.obj.setValue(data) + + @property + def data(self): + return self.obj.getDataArray() + @data.setter + def data(self, values): + if isinstance(values, list): + values = tuple(values) + self.obj.setDataArray(values) + + def offset(self, col=1, row=0): + a = self.address + col = a.Column + col + row = a.Row + row + return LOCellRange(self.sheet[row,col], self.doc) + + @property + def sheet(self): + return self.obj.Spreadsheet + + @property + def draw_page(self): + return self.sheet.getDrawPage() + + @property + def name(self): + return self.obj.AbsoluteName + + @property + def address(self): + if self._type_obj == OBJ_CELL: + a = self.obj.getCellAddress() + elif self._type_obj == OBJ_RANGE: + a = self.obj.getRangeAddress() + else: + a = self.obj.getRangeAddressesAsString() + return a + + @property + def current_region(self): + cursor = self.sheet.createCursorByRange(self.obj[0,0]) + cursor.collapseToCurrentRegion() + return LOCellRange(self.sheet[cursor.AbsoluteName], self.doc) + + def insert_image(self, path, **kwargs): + s = self.obj.Size + w = kwargs.get('width', s.Width) + h = kwargs.get('Height', s.Height) + img = self.doc.create_instance('com.sun.star.drawing.GraphicObjectShape') + img.GraphicURL = _path_url(path) + self.draw_page.add(img) + img.Anchor = self.obj + img.setSize(Size(w, h)) + return + + +class EventsListenerBase(unohelper.Base, XEventListener): + + def __init__(self, controller, window=None): + self._controller = controller + self._window = window + + def disposing(self, event): + self._controller = None + if not self._window is None: + self._window.setMenuBar(None) + + +class EventsButton(EventsListenerBase, XActionListener): + + def __init__(self, controller): + super().__init__(controller) + + def actionPerformed(self, event): + name = event.Source.Model.Name + event_name = '{}_action'.format(name) + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + +class EventsMouse(EventsListenerBase, XMouseListener): + + def __init__(self, controller): + super().__init__(controller) + + def mousePressed(self, event): + name = event.Source.Model.Name + event_name = '{}_click'.format(name) + if event.ClickCount == 2: + event_name = '{}_double_click'.format(name) + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + def mouseReleased(self, event): + pass + + def mouseEntered(self, event): + pass + + def mouseExited(self, event): + pass + + +class UnoBaseObject(object): + + def __init__(self, obj): + self._obj = obj + self._model = self.obj.Model + self._rules = {} + + @property + def obj(self): + return self._obj + + @property + def model(self): + return self._model + + @property + def name(self): + return self.model.Name + + @property + def parent(self): + return self.obj.getContext() + + @property + def x(self): + return self.model.PositionX + @x.setter + def x(self, value): + self.model.PositionX = value + + @property + def y(self): + return self.model.PositionY + @y.setter + def y(self, value): + self.model.PositionY = value + + @property + def width(self): + return self._model.Width + @width.setter + def width(self, value): + self._model.Width = value + + @property + def height(self): + return self._model.Height + @height.setter + def height(self, value): + self._model.Height = value + + @property + def tag(self): + return self.model.Tag + @tag.setter + def tag(self, value): + self.model.Tag = value + + @property + def step(self): + return self.model.Step + @step.setter + def step(self, value): + self.model.Step = value + + @property + def rules(self): + return self._rules + @rules.setter + def rules(self, value): + self._rules = value + + def set_focus(self): + self.obj.setFocus() + return + + def center(self, horizontal=True, vertical=False): + p = self.parent.Model + w = p.Width + h = p.Height + if horizontal: + x = w / 2 - self.width / 2 + self.x = x + if vertical: + y = h / 2 - self.height / 2 + self.y = y + return + + def move(self, origin, x=0, y=5): + w = 0 + h = 0 + if x: + w = origin.width + if y: + h = origin.height + x = origin.x + x + w + y = origin.y + y + h + self.x = x + self.y = y + return + + +class UnoLabel(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + + @property + def value(self): + return self.model.Label + @value.setter + def value(self, value): + self.model.Label = value + + +class UnoButton(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + # ~ self._set_icon() + + def _set_icon(self): + icon_name = self.tag.strip() + if icon_name: + path_icon = _file_url('{}/img/{}'.format(CURRENT_PATH, icon_name)) + self._model.ImageURL = path_icon + if self.value: + self._model.ImageAlign = 0 + return + + @property + def value(self): + return self.model.Label + @value.setter + def value(self, value): + self.model.Label = value + + +class UnoText(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + + @property + def value(self): + return self.model.Text + @value.setter + def value(self, value): + self.model.Text = value + + def validate(self): + + return + + +class UnoListBox(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + self._data = [] + + @property + def value(self): + return self.obj.SelectedItem + + @property + def data(self): + return self._data + @data.setter + def data(self, values): + self._data = list(sorted(values)) + self.model.StringItemList = self.data + return + + +class LODialog(object): + + def __init__(self, properties): + self._obj = self._create(properties) + self._init_values() + + def _init_values(self): + self._model = self._obj.Model + self._init_controls() + self._events = None + # ~ self._response = None + return + + def _create(self, properties): + path = properties.pop('Path', '') + if path: + dp = create_instance('com.sun.star.awt.DialogProvider2', True) + return dp.createDialog(_path_url(path)) + + if 'Library' in properties: + location = properties['Location'] + if location == 'user': + location = 'application' + dp = create_instance('com.sun.star.awt.DialogProvider2', True) + path = 'vnd.sun.star.script:{}.{}?location={}'.format( + properties['Library'], properties['Name'], location) + return dp.createDialog(path) + + dlg = create_instance('com.sun.star.awt.UnoControlDialog', True) + model = create_instance('com.sun.star.awt.UnoControlDialogModel', True) + toolkit = create_instance('com.sun.star.awt.Toolkit', True) + set_properties(model, properties) + dlg.setModel(model) + dlg.setVisible(False) + dlg.createPeer(toolkit, None) + + return dlg + + def _init_controls(self): + + return + + @property + def obj(self): + return self._obj + + @property + def model(self): + return self._model + + @property + def events(self): + return self._events + @events.setter + def events(self, controllers): + self._events = controllers + self._connect_listeners() + + def _connect_listeners(self): + + return + + def _add_listeners(self, control): + if self.events is None: + return + + listeners = { + 'addActionListener': EventsButton, + 'addMouseListener': EventsMouse, + } + for key, value in listeners.items(): + if hasattr(control.obj, key): + getattr(control.obj, key)(listeners[key](self.events)) + return + + def open(self): + return self.obj.execute() + + def close(self, value=0): + return self.obj.endDialog(value) + + def _get_control_model(self, control): + services = { + 'label': 'com.sun.star.awt.UnoControlFixedTextModel', + 'button': 'com.sun.star.awt.UnoControlButtonModel', + 'text': 'com.sun.star.awt.UnoControlEditModel', + 'listbox': 'com.sun.star.awt.UnoControlListBoxModel', + 'link': 'com.sun.star.awt.UnoControlFixedHyperlinkModel', + 'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel', + 'image': 'com.sun.star.awt.UnoControlImageControlModel', + 'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel', + 'radio': 'com.sun.star.awt.UnoControlRadioButtonModel', + 'tree': 'com.sun.star.awt.tree.TreeControlModel', + 'grid': 'com.sun.star.awt.grid.UnoControlGridModel', + } + return services[control] + + def _get_custom_class(self, tipo, obj): + classes = { + 'label': UnoLabel, + 'button': UnoButton, + 'text': UnoText, + 'listbox': UnoListBox, + # ~ 'link': UnoLink, + # ~ 'tab': UnoTab, + # ~ 'roadmap': UnoRoadmap, + # ~ 'image': UnoImage, + # ~ 'radio': UnoRadio, + # ~ 'groupbox': UnoGroupBox, + # ~ 'tree': UnoTree, + # ~ 'grid': UnoGrid, + } + return classes[tipo](obj) + + def add_control(self, properties): + tipo = properties.pop('Type').lower() + model = self.model.createInstance(self._get_control_model(tipo)) + set_properties(model, properties) + name = properties['Name'] + self.model.insertByName(name, model) + control = self._get_custom_class(tipo, self.obj.getControl(name)) + self._add_listeners(control) + setattr(self, name, control) + return + + +# ~ Python >= 3.7 +# ~ def __getattr__(name): + + +def _get_class_doc(obj): + classes = { + 'calc': LOCalc, + 'writer': LOWriter, + 'base': LOBase, + 'impress': LOImpress, + 'draw': LODraw, + 'math': LOMath, + 'basic': LOBasicIde, + } + type_doc = get_type_doc(obj) + return classes[type_doc](obj) + + +def get_document(): + doc = None + desktop = get_desktop() + try: + doc = _get_class_doc(desktop.getCurrentComponent()) + except Exception as e: + log.error(e) + return doc + + +def get_selection(): + return get_document().selection + + +def get_cell(*args): + if args: + index = args + if len(index) == 1: + index = args[0] + cell = get_document().get_cell(index) + else: + cell = get_selection().first + return cell + + +def active_cell(): + return get_cell() + + +def create_dialog(properties): + return LODialog(properties) + + +def set_properties(model, properties): + if 'X' in properties: + properties['PositionX'] = properties.pop('X') + if 'Y' in properties: + properties['PositionY'] = properties.pop('Y') + keys = tuple(properties.keys()) + values = tuple(properties.values()) + model.setPropertyValues(keys, values) + return diff --git a/files/ZAZBarCode_v0.1.0.oxt b/files/ZAZBarCode_v0.1.0.oxt new file mode 100644 index 0000000000000000000000000000000000000000..9abfc0bd28263bd5b1f0050407e4d6c7781ff427 GIT binary patch literal 263703 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

-3X9WBl{;EmO&F0Yu^-J#yqx zbRGqeb}AbOTmiP<81X}R%I3O3?qJAxsA*$yTD+pgZUoWgoxI0qV;eF#eI~E+KzENp z!Pkx-T)S3>ZX{E7ZN?AbjT^~4v}f5}ed(xRUph=E_O7h-&X{rM81!K1>utAPOTI@> zZoKs>wCJHRcLv`^PxPBQRTC=;ED$7bExJ-z^x60Tk!jz2CvC`k_@ zzbup2q~j8KLy}P05m7uMzA5gLZj`Q&_KLxcqR6il_rlAK(ms|)fJ4GQVH#IJeRG-t zur8oX>!TY;DbxM}bQ39>B^^z)8zBmvLIVV0IXWy35#c`>v0M(Zi*&+Vz$~W69>B zV;8MndPxLn+2;F1&xR86@2!6!Pd{1RO`K@eA=~|LqGf*_Oy(Zt7u>C%Kc7Fk zfalnHEe%{=6`td);B8Ey>(LRlnCZ{wWkZ4B9)Nx?qwZX(h4=cwwe=~pMr1nJ%3KH8 zL%RT)#-q%efncyze7rAE>S14i%r=Wt9cJ>Dxvc8E6PbO0F?i6&)-rc$meX$(aCu5j zdRk7Ogk3lF*5k&A$?_ zZ_N5|N(L6@&e^$XKuWiUpM+4wxRZ;9w|d^&|*uO(HQW8F~_^<_ywI!cW3>($8^O4=v6+Q7Xxx-v#mLWt^FBV9C(9=$WWs==7JwAlOP zf`wPFUThZrzGcAx?}AJm@2QadqlLkfW(?Ra_jDy}=L;IhDa z=MT*3w`tTv4(zYEHPdwf=}_sJTZ~tpZ(L%l>v_|h zmbDXl?7NP&J7vy;gN=zPCaDb?7!@lEPe*d-#8nU;549Y?1q5yD3wx3d*^duBegE=l zw=KdqUHjmc#i#MzyaicJQp>u1D~^m7ZyC(^DH-j!d7SI~y-jd-#Ns%@{`g3ERJB3U z!s9?mCYQ^VQOysQ4*ir)Ns-w}TG1cWMf%xPnQx)av7m(G*_!=Jmfb-fKKBiI* zi0%M5^3ZL93Fh{1(5ih*X5%5x!i8o;;O2hlWGRWS2x*4ck4FVIJzdTp=RQ)s;VtBYWizx zl+dJ+HJbi46R!V8ulcL7@>-4l)+z(JBg1lS!}NmWRL#^zaws`FVSeq?8EG4vCe2OM z{4Ke1gRH-~k{*EwGHU1U5*`xE*jZJ%;31Y%84aid{K^P^KwV+WL`9Ym7$-?C!36es zm+8#*Lx+C+`Ov|GhkpL?(4l2pHb48^mM!G_=bqiX1-*M$m0yqIk)Zbt_Kf0%mf_IH z6^#_cmSLiZzxnyl;lnf)r2X-kEnBy4dFBOV*u0s1s(S+&5|hX;uRSP?X%Xd7ErNRg zf27?CzO|Ucd#&idr~ULjKs))Fg!JB_Xz+he{FT}_$PbAoqb$xiy|?D4!y zsdqV(#2k}H@zpuaUmU8#@AsILNL;pltuzY?K_|?jy2Qh$Wk1b(~9-b>kcd^tN(@p-# zDel>F_tq@2OeEifWt6nC1i#$>g~oy0rgwLoH{-YBBu(qZt!$=}Ww$ zm@a@AuckxqmQU*L7@JTwqjUweS8oIT=@VZ9FPB<(*+?BfaWF^HXn=a5qnj3boU?3E zK7@khf!uVTxNA}TEVA;U2TF>EAj7I#$cc?DH{_z{$s_sFh}*sxnobVgajWb%|B{^CX=tIhQO9+w()qI4vqiXqxhE<0i17E5&~(G`X@7 z*mZ~ws{$Fa1cX>^Y`Bx2HXZP>#ZpoR&}8-U`^Yl#{Va6dv127gP2}6P`_SOc6ZYhi za@5pK8rAmouyoXX*M1qTc;F?p8KJ3qdC1Y%$uH!J&xaTUU1Bx=BKi(p|8+7ye9tfA zCTPj?BsfE%>8XxMf>}HSzJDL~jg85&YzbIon-eS!uP6L5&`pPo*i0EV&w)MDk3xzy zr#4!Tn;+tKtXVx{(;M%gmCrnbx6NF$#^HvbjU$IH$eBNMDH;tb#Vf?0z$HtC*Zo>;NZr-wG^NTNR zn5F*!&BUkQo$*0pO#boo)Nr;oJ+iKj9T@AC!9%lHJ9Pvl3C{^=x~eH=Y@ z)dqa^RmYBvMyce}`RJ-E$XA19iFY)b!dCGJ^VfWl?HxdVon_$~@Ur~|?LPGN;wGrWC9Ol7cAS6U=!%sy z&+Ob8Y{Xe;=+JYta$E6{UstUc&keI@4j8agSi1Az!JTCH%#|ySj(ooruesuix+QH* zLl={YtS)Q0YlR)+aNuV^sY_~4DPkRn)S%KD=yr)dFZ-$gfExO9;#o!6*}cYP+q1I` zrMcDBHO-^fR(rhPwXa*({@v>DF0NT~@jLXoJ-e{DS9W%BVYYpO-cvJXY)#GDv14j- z6H#BXcMTr4hMoyYe``WV)}UDmj~ju$Yk@wxiIs)5PIjQDPxesX)I&MK)>f+TMx~iX zqPr`tz-z(xuHLn4)AUtn8M<=Kl~-bnM)n?YC0f3E`SRhtMk9DyvuxSwX`6SUtbO}d zwMMz!(`~Y6tL(EIm41d!WTHx!ipf9F29z-|^Skm=@)RDW(S-6eTab5EonCW`bC7uC z#s1ChqYa_A?M6B56T_C;!TVb@LlBGjwRPExhvFC;B*$? zyYGUR9Vk6CF7z{$$Jg<@aGP)n{Ntji8M_{Ox~A9Sz~R+i5dndUVP{+-XmPU^?ce|T zf!kZB_3Sfn_4Wztrx}u*_AAcb(ROxGc21IE>eb`7?+o;=z>gpN@&5aNJh)0I_20N- zOb0hspOEZWdHC>8KOH{2(vcFcAB+AEao+*pMsYQ~Guzaq)oQisy`7}f-AO0u`kl|$ zea+p6ySZ~Y<8EWzaL2|ST%jYLnLhQ3wT2fkX`;pT2z2qRx&*(k&+m z>9-qR1kWhXxp~dnTP9XLE15eMFTQl~qK^Rpu?;Uu*`b(c;MVo`u3vwz6bGTmsxG&` z@A6%bKQ4VbyQLZKl4I7xu`nE2(d9x>yB~ji_l2`sWxs3HCv(&xgcB+}N{AubPtnW| zZi0u17Gvi>a_x*m8~5bXeDmhRgO)Fu5NOy|ZnbTxuP?LNe)YtaM^Bt2&#j$Yv2@Pl z^9K&BT)M5m?9urO=gxhmz+@?$w{od47SyG-jv7^Avuz$V8ustK=kd#KkeaVtM0VCL z=$~^Jxbe1gFWR|0y)iTSL~~yxGI>F9NxHPRps*JFB0pw|q>rg`=%AgnxwzX zJJ(yfYW%{DlkO2l-w5}81;CA$a{^x)^w3xaQw_zgj z6KXy6F+mc3JnjX2WMgU&RnTa}rxN;Qle18M!=yNo3V-(o*dwhRD1Knuwg-y=_PnLl zRIj;XO|@DJDz<~^7o4@?+IQZ$cEwp2T%gvs^)Ebpcwv8=UY+0bdU7sx74;<6kb@?? zESwUN2qiE4kj6n68P0%FY6P?#+0$5A1$XX*RXYk@v<`YhJ<(plVn0uN_S~6W7X8{p zw9CFNS&;qHS$$yE-hJe(IaRaZW`wZd?(1@T_$i<#1MuKoITyL=(#uEfZ@=W4`Lk}> zdGGbP@8tTG5e#(+^_1*Y1|K|7g18fh>jJ_!O#W7y3452HSe`rF4Hrr?AWw~1HxcB1 z2A+BuU7pO%oD8p7C-ZuedW3pW_I8DE!3|#QPiHfHNG5@7DGaBRm;fSVz_Lgv z?1RZEqfKXB)w^NUs*SyYdCPX4-#e+GwAi_g-n{ah^R{_IL0>PhwlCbq(pxuBFXSr7 zpIkO^^`1pr?;&Rc5|nD;PHDxh@Fj4R?mGUb8(PM!8+dK?wVU;*UOk|WI*+^)(cn?2 zzh!=$9l5edB=KRn1a}C7^oYTzQ{(-oCg}NKoJZ+jR~-p+!F6uul+MwOYiqiUp|v&P z2sx_m&dFpJ_9j!k&oqMW z6OP{ARI0ZZJ%9F`EP9?Q?R&Nn_t6ZbE3BaXgaZXwNU{iT(_RQfBcC$zS%UPkULy!Y z629_l$JZADtwqWK(klJsqOTplvH#_O^cM?0%QR;Lnv4EohwY^Fy7U1ADPTAX^q`cK zK9pVu5nv&u=cO-?N?%C7g1`zQd3}B~DtjNb3F(v`L}w=uNL2tb_weZerb}kgi%prZ zMI}B&UFI_Y4I;n|tx_Q{=IzJQ!*Y>;>6sH`Qo}1)oV-w$9Lh!qU8qiV}J z4zT9{#>kb|)Ge#3EDzfNkZy(zxeXp?dfbGg-PIKii%L6weE0bA8kNOSS=D`X!njhG zN1DR>Io`*kFX!js$0YO$o|@$~HA`J;hEcng)}Vk#@Iq1=_2Gxo??6z+6&x8i{^(c> zw3lcZvLI7mpD7?2ZHXOP#vUC%?nnWrl72@nHF-?vYxEh7cnJn^p-D&qUq`JaT8K_! z95J6*PaGg_ARb0I7YfTjKrLlhp7fm(vV+j+q4Y?IrJv`KN;q^Upw*H)EgZ)sJU3(V+C#vh2(>dXbAIU+*; z0dES35dj6slyhG|ED*#3v!cHFmtHYqMqkyKb-6`w-Y)6mJusfTzw#cM))@?Tz0SrN z>^g?|Z2o?V((3hgo!*YFdYS>PQ(7rX=hUHio!wy2GK}|*~ zrOAB)cG*4o*IJ}2r3v8n-``%IxF&f1`GE3(gOF6%Q30r611d~fjt_x=3cC|m6+zck2Ih`>z-owdz^U*v2+&wsig08$?UX&8hh<;8 z_{?iOCj0`+iD+aXUW6BP{9!y+gcLqm0%Xwz$;>D&oaV6So=?9z@=0HJci(`%Z!7>~ z`#wAj8wQrbw_9>GEp_nTQ6TpM?cBL@-}zf5V#|j8`!{R{1KZBuxAVKpi;Kxc%O^}& zo_nfq>C(PJ@OvnEku3FxlYb|_rhbXEiqXVaL~RH#EF;Qh2l?A!bR2XYfc^w#NUp?= z483-Ms*mJ;y!I#X8H`LaE{UX1gT5Z~tRr2J(ZL(+7GLiFD4tnrtaiUVA$X+o!Cu{fzd zF5Li?@F};n7?2*WHt5$=q^Wau{{rbBIeTHzmcN$HfGc%IYiQKRxAmNDv(FReyqyX< z!xoM7up_3i8Y3{$>7G<(?;88W&ujRKD#a>t@0xGtMWX;-4$?riuxd(;9mC{u1d}v1 zAL*e^qMN{zkAuWJ-@Vy0NI7N)?4S*?j7NhvgZPw3r(wL3Z^D>)U??eHmNyph1*r>)oXc^ST@SdnH|o> z8nRC{}8JPC>pB$j(QNdGq+N3p{xoonlfD23r6IJZy<^W9Gq4qEX&6pcS0}@e))v};dCZ=U_B|nkQu=}{F}gX(zI_L2g=JDv(Uc;QvqJQ-av};8O|mHP$uSv%qAo+Utc7StxcPsR`+5cZ+uNbC z#6>YKQi;c-qxE9kD#k<@ywslsmY7+LTVU3GBq+ws)|f@vH0EW$B_>*87IpWQTm#&j zyBBum?j=Wo4l!yrN5xW3>V=hKM9gKyfFpM`yv!07qk<3><9x0c_Jn+9oY35;%{>pU zv-|U}wM#pt3h?9&wY6W>)#d5bAta|&qjqE8ML~J4aqvt){$Fw!a#8N@NSNC6tG9Rm zZbn<%jDg8Buu1cb*LFkOz`f+X?d=2apLG@$->_lpsfCuUoZs!*_o! zEX?bMekY|2^)(d-+iI6y^bLwXujncmeSGYx4}E*6*!F3_>tlY66&X zxQdjF&Gz=dH*X4`?b$PP&mM3yW&^I$ic#dKs%oEFp%*<~f3?q7?e}^_1FQB`SD~ni zlpC{wqL}m$XoD4K^Dvx8K&qei5I!P-cwu#()+5C`W%B3gJ%N`_!r4K3j~Rg| z8x|3>CqXz;$%&9va-fI zwd4@V8moi!1W%t;S;J(&fdpuwM~A6)-|lepCM}R&8+f}Uxd#yQk1^Y*sZG|F_a2-z zH4t1PF8rg;7IQ|+q+Y?QO}N0{JO7+J8-9rOg>w-uOhr0pf*`X09^KujykNE4W8r*_ zHD-&THTvtk2ZeYT|tPeu`&i0#x^x(jREK<@e>&mevz8~D=*V*X*D9z-pG3p?)l1?|}$ zFWuPbYq+NgdO}SLE~#ZN1+Wd$T^GLdZc$Uc_rfmYan(ob==C3yt&4823LUu#RPTiO zeF3PvU(g+dWq1WYnb-MnxdiLai#MpZM7)i#IzKBP;2Woptr9-##i;X5svckK8dg zD7~b;|6$1wYqqa<@0%t{2i!v4?GIjDo*ye0q59P!cqp*;WzWb>^QO?r@$*K6_u z8HTSx6#U@~m-Y|O?c;cPUN&!F+kf|X6?t|EtZp>?qKm)XQ~A_*IQlla366XAiV3D? zGf_oT9oc9pxx13?`e`gNYg>tUVv zeJorsA5=CSazu=)$0F2d_9dDo8@G-&!COA>oGX1?uUKRBY3FnuVQdW(^~=(V8y{U& zs@Bk2y89t%=kg`+_B!o->i0L&>pveqYk#Ix4X?iogsZNX9$2{ek~n)`#hMGfR_jH# zelk$Uw>8M~BWeWWClQRrK^Uhp!z(sm5RpLTO*8!vI>+=ZxqZIvHmQS_lDn>Nq`Mw# zFW5e%=fQ@m7k--iE6m(-AHocr=Scsf-Zu*%gn9z?{gvfXfl5kFLp}aMqdIpL1E;E& zV>p%|I9^RpLj65!&}K*8Ecf5)YIz+oLz>(`z~(7>Ft`?$O$~ZjM9?k5@<=)}YzV=d zSiE@xF1m4&FvDm~`krss-r=ZvasnKEJI0LXu9zr1myLRo*0JI}l~3+gO_|L;on)3K z>+YDLH8QS-wk^AwR4>Kp*;D#$!X<^?V-2s1Ns*p(OL@_vojiR{qWF$+D&`$ldiN}f z>IXde{!QgYkB?T-(=PJdG)XUgzUd|vskke>|e+^K?5wu+(*k-szA$8Yl445U1}J4W1sPPY?34kVJU`GKEYbri3IcPYp)8 zFgRa*F1UeFi`&B*Y8Rl@tKm(wTHF@Vkh_3Iy&Bv|t5BSl+!fe)*%9e;=?&@gBbV+Z z7gjgz{03-`zjw`W-W(t$oW+be>pu^|60Ee^KqSOYdwObyeTi4KLhs zZf4r~2c+{N`@1^#cX#ja?AjmkmeuZD-`Kc*XKk4m``=woc*&Xct+M}`l!$i_V}dDr z%1d#i(7-%Y=zZEoJ>{N0k)m&9ziYZQMs9Gf6R9dnUZ1*_@KQzSeP`ZYG0%1pzQ}G( zIIO4OeF905gPCy(>viv}pd96|O%{KXe(!1X)baGKOfXehzxBeYuA;8`(P8U=@j&#- z^+FYO0Oj3(awav8z5(e-1fWGOuk^@OY1B@V>@!+?W?sucXh#p zG4u^Tr@qTx9J!2IZ6dSe%U2DEo73#Y>1LXa$n_q5}~ zrt-B%`HM)tp&lh)J)u9*Gm6aBuuqY{d3;<;D}0>pBES3kZf?giO$j2RzrM|R(L8M_ z1#jK7NzNZM5J7S;eWz@tAVWBXw-G}+%<)`+%OIZK8l%W-cD`n`=Y9iA!EVj5rSzTj zz^b>%ucRg8A-!e5Al)+qxUW;l`Q1ZANe_LO?Bi6oNGf7m|nXUp0^hL2L>#M<8t3FhuhgQ>FUx= zRIT(OMFF@?dIJm9w zbxADc?grA%t6Gu{9OX#1TqW;iNu2zGx{lVPJ1t=%>_jC#qk+f5P&Q2qVkU3O#js+E z^kXBLESZwG2;ifSuzf!UHC|%FCn8~^A3earD_(3xg6s=?w7@hT9vEjTC@@Js2}MKU z$_R*5ghK^k=IP^#g$otOpI$s|+SI9wpFXZ!xKN2gQ>RXwws_XuxkY__WFis?MdUZo z{|KnV*^D1}db}wbHNj(xr%j(ab&0g?xT?QjbsVf;g5I3A_~8d|@PWSF5$SHw9odbr zx#;9~)U{M6YM&p`$qX@?=s?=(YGMy@l(><&3(xu|-2jbz*}4Ylp0Z@X$}En_cS|-S z3Op;Mklb5@#&=dWbEM5~kl(9=lDJXd)?z+_s04lyTTAMJY|j&thdwrh76lQTWB^M* zw7($I!>7b_n8xPH*n>mfiWt3vl7{gh$qRxs0(-ht_KtwJ_R|b2ASRYdLlY>Bn=8jK z)HdmFl&)r<#y{COF)Ci5A>Sj{XnZeU%3azbOw#IeFFdfes8Xo&!Jq4vQPrGdiSojN z)qMpH5NN$4_e(w76Q-#43)Lh=LvEXXlpeNIvvqI^SbYo%E#N(h1a^-dQuJZoc9>+h z)-cpNQ-aiJ@Jwqf#oTQObW6`O(&!?pL41Mg%*>0??@^T2L;YRPk(6pqQ1Q8TD+6C+ z{6-*ssfJsXM^xnd{l8t@`JDD8kG>+MQ+!3Lf74}(rPs|FdwrFPivQVWa8bg0CZxdk zx(g}FNvR-nL}7XiC>e6=d(;#w1q>(6)5$kgY8D0#2CB z@`yhG)W=yioW<)OEE(qUzREW@>^wMqgLI{|+2g1#yv2o9a#10C|!{_P?IaFQy@WuLJ+G)kWZ+TCE3it6|+&(uIkOIlnC(^|jV! zx_na?*?p?BbMLwBRq>m+ShLRNmTpOUS{DN z=PObR`;&@rtohqA>D8h{h-?A#=Gz`oWyDQmQ`xykp1qMUBSdi|5>B&polWu_|G_1%arrFm!Ov z9gYGY_!Lyd>RVOXPO~-;^aSc1c85!)Z&oYoGQo^=O}4x=v%uEzkZpY=5M)+ZOpOZ^ zrHd9~NHf5C1c*z&X<4+WRr*6^RknPIW9$=- ztue%l)>wtMrHbqdq}xP`#$Y!(k0p}@F}`p#XmIMANVjt*Ci9$n?AOiG76 z_B^T3*$}A+OIK$Le3TNAic2mz5H<3cRM>Jq$E1S4RVEdo!)M=(PyjyIIF6p!(lTD9 z9xrN(BGH7>C_Rm+Mg~(2`}vVUsBZvWFgXqMFR(q_Y0XoOa!^tv6Ac>C z35JEqYZ$h<1)^96f&3!nx}dxi?2hNW`BfAq&{jbIv3o z^XFj_verZ8Nl3!N=V@vop`os)rXZQfj^u?=GQN<0-upio65w92`T4~^m%f!Q_d08f z?lC6X^mbPdD3%VF#e7txZtI3CuRIjzjme{Pk2`X=Z)~Y8;_oVKb0&(zm(0E274^dt zA!!UaBsnT7Gi8hI-H+KfM}uKzwbj(RSdm@6G_5E|v;jqx^klLmLY@m2EwVp0*0$M4 zv)$4^DnUhw)r9rvLe#+PsWC_v3KJFixv~GSNuB>;Lv~hFWy%)WyHB77ghIFhEsNRg zvZZOI+<;2y$&!)+ay3|dj{UK2+ZKep-O}GHK_zYgLzJI9Ngbog2?Jq6EhtBHYuvE> zhNLJj64l6%pG9F=EX@G3AP$OXnJjGge(W4m@L8Y6!w@>tU zs^Y(E+ybC1mRT-k3`zr&O|0}CH|clVDCs0MD-f8C@sl0Y_17b_Nv;D}sc8EebPPEU1V4wCt$CpFijUN%%-3K|-sKM$$Z%EfF@P#4wF_d>}~) z37%;`_8gU_k@Aw4J!c4@@S!&8h4s5h>4CfJzPxC@Gd#^y_$u26>#B4HUUEIekjs-s zbEu`DQUyL-byl0H!>u0pRdu!pvj zUqMU9@2ddOjT<6B{b27>IPMC_Ss?R(cRr_lvtRwhEZy{(;w|L!3j*g=6h>wQxqIR% z{!!n9um2q0-$>8i0X1|>N4HDa=qCS=w@b(p6m=;zPhOiULRepqaAp?KKeA`vKeT_( zKqIBi!)Ma?5F`)D$S(S^e(6tVk>KygXyqToD<^h29S&kwM`1sLa0sIf66vv}x_}gZ zR`7>q3w?}G8Q2d>?(LA?S$Bo>)Sb;Bv`JbEROfCC0Nw44(ii9Ll74@4BlzW?BgRUS(%d+!43MXJLaM7(1N_gF$i zQgv3A8?dz=;>-U8O{7I)T%!d)gMER9u&1(2$^}^L1vKmr{u8t*uxC+Q{rc^o4`lA| zlK!yaD(UgNTS06yShBvpZSighrOV)q{r$6Pa?QNevuCfFcOIl>_wSzpbMFD&>Ma4l z-`OO6vSzRJ`mIf{`Eq#KArgXXrB8QUD?NHo18}Un35>qKR+>c~x(r@^@vqEB7|p@@ z>8rt(EnxNZ`hyzgNSpN14Wj|O;Rs0FRxABo-lxz_D5%YJkg&*hrAYy6!%5WbqSwsh z0}Ml?*GHCOR|bi^k8V7cTp)>Wz@7`hQsGOrj`~s!wyW2zic(+bwn#J8ZQ!A^&pGGG zMP-ht-wa!~U$iY)6`=#`_k(9Qky9AydjC4MQvj>siIv~kvx|PY_?+I-f}f=;TDP~h z)*p;xT3$uaNWYmmc=~mI#Yvu+9h?yz^c4n%&bB$JGl(XSM=%?7I=v`(+=6J(Nj22u zfdDyc;A&VZKR7*6?n~;d?`~XA&XM)0q4M%)Z2xeH|Eeb9_tgZvJaRu0pPM*TKhT1r z^zsXC54uAiQ2>8ABNzN;PB~O*S>8Fd-uV;3f3W8Kzxn*fTlC@gJ^biDX{F|Sx&|nI zwCN0LH$d&4I@s>P^Uwd?J`4Uo=wqqqKfwpmG7KNjFwCSe-vg;L^Uw_<&Og1KQ;Z-E zdj{UjBvupah>idI5M=*9LH45`Cl93Kd*CUxe-E~L{=4J!=^rIHGViWBIe_|L(kXqg zpEyVy{o!8tA!u{|kMJIT@V#Ix*6A(isR_4tO z?#XRmY(w9zUvJs+_2tQg)tX2aSu8_qW;CkPn!!3{{+(I{hVBxeH1qFNG53B+!e%S9 z;V`x4zggXzEk%R(@;cB6ENy4jIeDt}>p#^C+-oVc+Y%NluFUrUYwmD47P-$({uPze zFP9Vk(UJlq#&166$BWG^Lw5)OwnRxG)&FBvSToXH07>jDwUIa?pEZWG)NxedcfUTe zKff+E636CagE$4aPwIec@%705{rhpcBPS)Ql6sg>%5ck2Sq?iYLSlUwPkLpL{>w1| zmh*$)4zTI9yMDI+6+?G5_+9m{?tcD}52QI4cS3vYVL$l7J9o1Wj)}zt@A@U_++|hI z)Jph>0AdBgrx~;h>81pKW}e6E!6)^bR(=spJ7+W3-UrbHc0Z}g<_Tz*<#slNp@g^4eo|U1-4_t{%p9swNp4t z%66d)81PiMz2#nCxyM!EeUNc^AW1V9e%GW`H;eyhqAM5n%*1Ce2tqPj)|bxoR+N>P z&7eSfZCv}pDo8eeYiU;L8qc3Wp7d0B@V63uzk3fr06=H6PMZeWzEZk5;$dL>f&y0U z=vzEDo1MG3&!J`u7UYgA?U7~@mi9?sr?tA~h!c(b&4h;PrWT<)B~ecF5QOZS0K1g;a^N0DA1s5Gm�yeAB8TKoxp2esW9KSRLR9C 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 aU{{fcgP2qRfC=(r2yuk-E+LK+;Qs)22Kz|> literal 0 HcmV?d00001 diff --git a/images/barcode.png b/images/barcode.png new file mode 100644 index 0000000000000000000000000000000000000000..c2cfa4765abf4f837d36536299b9b0715acfea4d GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X9(%ethE&{2`t$$4J+o>9tBZl5p(&GQuE|aTg}CNcUgq%s ze}9LcXDDJ+R(@=ykmhjc^@WTzSq@b*7c4vYf;Xc^O(#jCri7Vk!-tQn5*v$VG*)O& zGhphhd>nk3;~TrM@H&Tkj7x1dcrq~yzFTuQpy$jz-m52iRQf!flN04lQoai&D1Sa! zmB{ws5c@(2>Hi8I`Z@yrNgo%P3fxvcDcjm5>+08HAU?-s^G_8+lOm_2)=SSX{8$rU zD3ROe<{ZPovi;(mdTD;?bMAc2-VT3cye%4zs7!n^;bwND#f*uU-tY({F#J|Y=2x5Q RJs;>@22WQ%mvv4FO#u0=d4&J~ literal 0 HcmV?d00001 diff --git a/images/barcode_16.bmp b/images/barcode_16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..10246a348542e19ac442b47fc042401306592285 GIT binary patch literal 822 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 + + + + + + ZAZ BarCode + ZAZ BarCode + + + _self + + + + + Insert BarCode + Insertar Código + + + service:net.elmau.zaz.BarCode?ask + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument,com.sun.star.presentation.PresentationDocument,com.sun.star.drawing.DrawingDocument + + + %origin%/images/barcode + + + + + Insert CODE39 + Insertar CODE39 + + + service:net.elmau.zaz.BarCode?code39 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert CODE128 + Insertar CODE128 + + + service:net.elmau.zaz.BarCode?code128 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert EAN + Insertar EAN + + + service:net.elmau.zaz.BarCode?ean + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert EAN8 + Insertar EAN8 + + + service:net.elmau.zaz.BarCode?ean8 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert EAN13 + Insertar EAN13 + + + service:net.elmau.zaz.BarCode?ean13 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert GS1 + Insertar GS1 + + + service:net.elmau.zaz.BarCode?gs1 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert GTIN + Insertar GTIN + + + service:net.elmau.zaz.BarCode?gtin + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert ISBN + Insertar ISBN + + + service:net.elmau.zaz.BarCode?isbn + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert ISBN10 + Insertar ISBN10 + + + service:net.elmau.zaz.BarCode?isbn10 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert ISBN13 + Insertar ISBN13 + + + service:net.elmau.zaz.BarCode?isbn13 + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert ISSN + Insertar ISSN + + + service:net.elmau.zaz.BarCode?issn + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert JAN + Insertar JAN + + + service:net.elmau.zaz.BarCode?jan + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert PZN + Insertar PZN + + + service:net.elmau.zaz.BarCode?pzn + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert UPC + Insertar UPC + + + service:net.elmau.zaz.BarCode?upc + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert UPCA + Insertar UPCA + + + service:net.elmau.zaz.BarCode?upca + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + Insert QRCODE + Insertar QRCODE + + + service:net.elmau.zaz.BarCode?qrcode + + + _self + + + com.sun.star.sheet.SpreadsheetDocument,com.sun.star.text.TextDocument + + + %origin%/images/barcode + + + + + + + + diff --git a/source/META-INF/manifest.xml b/source/META-INF/manifest.xml new file mode 100644 index 0000000..559e3c0 --- /dev/null +++ b/source/META-INF/manifest.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/source/ZAZBarCode.py b/source/ZAZBarCode.py new file mode 100644 index 0000000..00d03c8 --- /dev/null +++ b/source/ZAZBarCode.py @@ -0,0 +1,216 @@ +import uno +import unohelper +from com.sun.star.task import XJobExecutor + +import qrcode +import qrcode.image.svg as svg +from barcode import generate + +import easymacro as app + + +ID_EXTENSION = 'net.elmau.zaz.BarCode' +SERVICE = ('com.sun.star.task.Job',) +TITLE = 'ZAZ BarCode' +QR = 'qrcode' + + +class Controllers(object): + + def __init__(self, dlg): + self.d = dlg + + def button_action(self, event): + if not self.d.listbox.value: + self.d.listbox.set_focus() + msg = 'Select barcode type' + app.warning(msg, TITLE) + return + if not self.d.text.value.strip(): + self.d.text.set_focus() + msg = 'Data field is mandatory' + app.warning(msg, TITLE) + return + + self.d.close(1) + return + + +class ZAZBarCode(unohelper.Base, XJobExecutor): + + def __init__(self, ctx): + self.ctx = ctx + self._data = '' + self._type = '' + + def trigger(self, args): + self._type = args + if args == 'ask' and not self._get_values(): + return + + doc = app.get_document() + getattr(self, '_insert_in_{}'.format(doc.type))(doc) + return + + def _create_code(self, tmp_file): + if self._type == QR: + factory = svg.SvgImage + img = qrcode.make(self._data, image_factory=factory) + img.save(tmp_file.name) + else: + try: + generate(self._type, self._data, output=tmp_file) + except Exception as e: + return str(e) + return '' + + def _get_values(self): + self._type = '' + dlg = self._create_dialog() + if dlg.open(): + self._data = dlg.text.value.strip() + self._type = dlg.listbox.value + return True + + return False + + def _insert_in_calc(self, doc): + cell = doc.get_cell() + if not self._data: + self._data = cell.value + if not self._data: + msg = 'Select data' + self._show_error(msg) + return + + tf = app.get_temp_file() + result = self._create_code(tf) + if result: + tf.close() + self._show_error(result) + return + + cell = cell.offset() + cell.insert_image(tf.name) + tf.close() + return + + def _insert_in_writer(self, doc): + doc = app.get_document() + sel = app.get_selection() + if not self._data: + self._data = sel.string + if not self._data: + msg = 'Select data' + self._show_error(msg) + return + + tf = app.get_temp_file() + result = self._create_code(tf) + if result: + tf.close() + self._show_error(result) + return + + doc.insert_image(tf.name) + tf.close() + return + + def _insert_in_draw(self, doc): + tf = app.get_temp_file() + result = self._create_code(tf) + if result: + tf.close() + self._show_error(result) + return + + doc.insert_image(tf.name) + tf.close() + return + + def _insert_in_impress(self, doc): + self._insert_in_draw(doc) + return + + def _show_error(self, error): + msg = 'Error in: {}\n\n{}'.format(self._type, error) + app.error(error) + app.errorbox(msg, TITLE) + return + + def _create_dialog(self): + args = { + 'Name': 'dialog', + 'Title': TITLE, + 'Width': 160, + 'Height': 160, + } + dlg = app.create_dialog(args) + dlg.events = Controllers(dlg) + + args = { + 'Type': 'Label', + 'Name': 'lbl_barcode', + 'Label': 'Select barcode type', + 'Width': 55, + 'Height': 15, + 'X': 10, + 'Y': 10, + 'Align': 2, + 'VerticalAlign': 1, + } + dlg.add_control(args) + + args = { + 'Type': 'Label', + 'Name': 'lbl_data', + 'Label': 'Capture data for barcode', + 'Width': 70, + 'Height': 15, + 'VerticalAlign': 1, + } + dlg.add_control(args) + + args = { + 'Type': 'ListBox', + 'Name': 'listbox', + 'Width': 80, + 'Height': 15, + 'Dropdown': True, + } + dlg.add_control(args) + data = ('code39', 'code128', 'ean', 'ean8', 'ean13', 'gs1', 'gtin', + 'isbn', 'isbn10', 'isbn13', 'issn', 'jan', 'pzn', 'upc', 'upca', + 'qrcode') + dlg.listbox.data = data + + args = { + 'Type': 'Text', + 'Name': 'text', + 'Width': 140, + 'Height': 75, + 'MultiLine': True, + 'VScroll': True, + } + dlg.add_control(args) + + args = { + 'Type': 'Button', + 'Name': 'button', + 'Label': 'Insert Barcode', + 'Width': 60, + 'Height': 15, + } + dlg.add_control(args) + + dlg.listbox.move(dlg.lbl_barcode, 5, 0) + dlg.lbl_data.move(dlg.lbl_barcode) + dlg.text.move(dlg.lbl_data) + dlg.button.move(dlg.text, 0, 10) + dlg.button.center() + + return dlg + + +g_ImplementationHelper = unohelper.ImplementationHelper() +g_ImplementationHelper.addImplementation(ZAZBarCode, ID_EXTENSION, SERVICE) diff --git a/source/description.xml b/source/description.xml new file mode 100644 index 0000000..c3521bd --- /dev/null +++ b/source/description.xml @@ -0,0 +1,26 @@ + + + + + + ZAZ Bar Code + ZAZ Códigos de Barras + + + + + + + + + + El Mau + El Mau + + + + + + + + diff --git a/source/description/desc_en.txt b/source/description/desc_en.txt new file mode 100644 index 0000000..e30738b --- /dev/null +++ b/source/description/desc_en.txt @@ -0,0 +1 @@ +Generate and insert barcode in documents \ No newline at end of file diff --git a/source/description/desc_es.txt b/source/description/desc_es.txt new file mode 100644 index 0000000..3c7b6ce --- /dev/null +++ b/source/description/desc_es.txt @@ -0,0 +1 @@ +Genera e inserta codigos de barras en documentos \ No newline at end of file diff --git a/source/images/barcode_16.bmp b/source/images/barcode_16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..10246a348542e19ac442b47fc042401306592285 GIT binary patch literal 822 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 z%0D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

7zjH%ddwbgk_{m7KV&J)N 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

4OMBgo9RMK)g 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 literal 0 HcmV?d00001 diff --git a/source/pythonpath/barcode/__init__.py b/source/pythonpath/barcode/__init__.py new file mode 100644 index 0000000..0c2592d --- /dev/null +++ b/source/pythonpath/barcode/__init__.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- + +""" + +pyBarcode +========= + +This package provides a simple way to create standard barcodes. +It needs no external packages to be installed, the barcodes are +created as SVG objects. If Pillow is installed, the barcodes can also be +rendered as images (all formats supported by Pillow). +""" + +from barcode.errors import BarcodeNotFoundError +from barcode.codex import Code39, PZN, Code128, Gs1_128 +from barcode.ean import EAN8, EAN13, EAN14, JAN +from barcode.isxn import ISBN10, ISBN13, ISSN +from barcode.upc import UPCA +from barcode.itf import ITF +from barcode.version import version # noqa: F401 + +try: + _strbase = basestring # lint:ok +except NameError: + _strbase = str + + +__BARCODE_MAP = dict( + ean8=EAN8, + ean13=EAN13, + ean=EAN13, + gtin=EAN14, + ean14=EAN14, + jan=JAN, + upc=UPCA, + upca=UPCA, + isbn=ISBN13, + isbn13=ISBN13, + gs1=ISBN13, + isbn10=ISBN10, + issn=ISSN, + code39=Code39, + pzn=PZN, + code128=Code128, + itf=ITF, + gs1_128=Gs1_128, +) + +PROVIDED_BARCODES = list(__BARCODE_MAP) +PROVIDED_BARCODES.sort() + + +def get(name, code=None, writer=None, options=None): + options = options or {} + try: + barcode = __BARCODE_MAP[name.lower()] + except KeyError: + raise BarcodeNotFoundError('The barcode {0!r} you requested is not ' + 'known.'.format(name)) + if code is not None: + return barcode(code, writer, **options) + else: + return barcode + + +def get_class(name): + return get_barcode(name) + + +def generate(name, code, writer=None, output=None, writer_options=None, + text=None, pil=False): + options = writer_options or {} + barcode = get(name, code, writer, options) + if pil: + return barcode.render(writer_options, text) + if isinstance(output, _strbase): + fullname = barcode.save(output, options, text) + return fullname + else: + barcode.write(output, options, text) + + +get_barcode = get +get_barcode_class = get_class diff --git a/source/pythonpath/barcode/base.py b/source/pythonpath/barcode/base.py new file mode 100644 index 0000000..6a42bf5 --- /dev/null +++ b/source/pythonpath/barcode/base.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +"""barcode.base + +""" + +from barcode.writer import SVGWriter + + +class Barcode(object): + + name = '' + + digits = 0 + + default_writer = SVGWriter + + default_writer_options = { + 'module_width': 0.2, + 'module_height': 15.0, + 'quiet_zone': 6.5, + 'font_size': 10, + 'text_distance': 5.0, + 'background': 'white', + 'foreground': 'black', + 'write_text': True, + 'text': '', + } + + def to_ascii(self): + code = self.build() + for i, line in enumerate(code): + code[i] = line.replace('1', 'X').replace('0', ' ') + return '\n'.join(code) + + def __repr__(self): + return '<{0}({1!r})>'.format(self.__class__.__name__, + self.get_fullcode()) + + def build(self): + raise NotImplementedError + + def get_fullcode(self): + """Returns the full code, encoded in the barcode. + + :returns: Full human readable code. + :rtype: String + """ + raise NotImplementedError + + def save(self, filename, options=None, text=None): + """Renders the barcode and saves it in `filename`. + + :parameters: + filename : String + Filename to save the barcode in (without filename + extension). + options : Dict + The same as in `self.render`. + text : str (unicode on Python 2) + Text to render under the barcode. + + :returns: The full filename with extension. + :rtype: String + """ + if text: + output = self.render(options, text) + else: + output = self.render(options) + + _filename = self.writer.save(filename, output) + return _filename + + def write(self, fp, options=None, text=None): + """Renders the barcode and writes it to the file like object + `fp`. + + :parameters: + fp : File like object + Object to write the raw data in. + options : Dict + The same as in `self.render`. + text : str (unicode on Python 2) + Text to render under the barcode. + """ + output = self.render(options, text) + if hasattr(output, 'tostring'): + output.save(fp, format=self.writer.format) + else: + fp.write(output) + + def render(self, writer_options=None, text=None): + """Renders the barcode using `self.writer`. + + :parameters: + writer_options : Dict + Options for `self.writer`, see writer docs for details. + text : str (unicode on Python 2) + Text to render under the barcode. + + :returns: Output of the writers render method. + """ + options = Barcode.default_writer_options.copy() + options.update(writer_options or {}) + if options['write_text'] or text is not None: + if text is not None: + options['text'] = text + else: + options['text'] = self.get_fullcode() + self.writer.set_options(options) + code = self.build() + raw = self.writer.render(code) + return raw diff --git a/source/pythonpath/barcode/charsets/__init__.py b/source/pythonpath/barcode/charsets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/pythonpath/barcode/charsets/code128.py b/source/pythonpath/barcode/charsets/code128.py new file mode 100644 index 0000000..5132e29 --- /dev/null +++ b/source/pythonpath/barcode/charsets/code128.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +import string + +# Charsets for code 128 + +_common = ( + ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', + '-', '.', '/', +) + tuple(string.digits) + ( + ':', ';', '<', '=', '>', '?', '@', +) + tuple(string.ascii_uppercase) + ( + '[', '\\', ']', '^', '_', +) + +_charset_a = _common + ( + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', + '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', '\x10', '\x11', + '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', + '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', '\xf3', '\xf2', 'SHIFT', 'TO_C', + 'TO_B', '\xf4', '\xf1', +) + +_charset_b = _common + ('`',) + tuple(string.ascii_lowercase) + ( + '{', '|', '}', '~', '\x7f', '\xf3', '\xf2', 'SHIFT', 'TO_C', '\xf4', + 'TO_A', '\xf1', +) + +ALL = set(_common + _charset_a + _charset_b) +A = dict(((c, i) for i, c in enumerate(_charset_a))) +B = dict(((c, i) for i, c in enumerate(_charset_b))) +C = {'TO_B': 100, 'TO_A': 101, '\xf1': 102} + +CODES = ( + '11011001100', '11001101100', '11001100110', '10010011000', '10010001100', + '10001001100', '10011001000', '10011000100', '10001100100', '11001001000', + '11001000100', '11000100100', '10110011100', '10011011100', '10011001110', + '10111001100', '10011101100', '10011100110', '11001110010', '11001011100', + '11001001110', '11011100100', '11001110100', '11101101110', '11101001100', + '11100101100', '11100100110', '11101100100', '11100110100', '11100110010', + '11011011000', '11011000110', '11000110110', '10100011000', '10001011000', + '10001000110', '10110001000', '10001101000', '10001100010', '11010001000', + '11000101000', '11000100010', '10110111000', '10110001110', '10001101110', + '10111011000', '10111000110', '10001110110', '11101110110', '11010001110', + '11000101110', '11011101000', '11011100010', '11011101110', '11101011000', + '11101000110', '11100010110', '11101101000', '11101100010', '11100011010', + '11101111010', '11001000010', '11110001010', '10100110000', '10100001100', + '10010110000', '10010000110', '10000101100', '10000100110', '10110010000', + '10110000100', '10011010000', '10011000010', '10000110100', '10000110010', + '11000010010', '11001010000', '11110111010', '11000010100', '10001111010', + '10100111100', '10010111100', '10010011110', '10111100100', '10011110100', + '10011110010', '11110100100', '11110010100', '11110010010', '11011011110', + '11011110110', '11110110110', '10101111000', '10100011110', '10001011110', + '10111101000', '10111100010', '11110101000', '11110100010', '10111011110', + '10111101110', '11101011110', '11110101110', '11010000100', '11010010000', + '11010011100', +) + +STOP = '11000111010' + +START_CODES = {'A': 103, 'B': 104, 'C': 105} +TO = {101: START_CODES['A'], 100: START_CODES['B'], 99: START_CODES['C']} diff --git a/source/pythonpath/barcode/charsets/code39.py b/source/pythonpath/barcode/charsets/code39.py new file mode 100644 index 0000000..4031f65 --- /dev/null +++ b/source/pythonpath/barcode/charsets/code39.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +import string + +# Charsets for code 39 +REF = (tuple(string.digits) + tuple(string.ascii_uppercase) + + ('-', '.', ' ', '$', '/', '+', '%')) +B = '1' +E = '0' +CODES = ( + '101000111011101', '111010001010111', '101110001010111', + '111011100010101', '101000111010111', '111010001110101', + '101110001110101', '101000101110111', '111010001011101', + '101110001011101', '111010100010111', '101110100010111', + '111011101000101', '101011100010111', '111010111000101', + '101110111000101', '101010001110111', '111010100011101', + '101110100011101', '101011100011101', '111010101000111', + '101110101000111', '111011101010001', '101011101000111', + '111010111010001', '101110111010001', '101010111000111', + '111010101110001', '101110101110001', '101011101110001', + '111000101010111', '100011101010111', '111000111010101', + '100010111010111', '111000101110101', '100011101110101', + '100010101110111', '111000101011101', '100011101011101', + '100010001000101', '100010001010001', '100010100010001', + '101000100010001', +) + +EDGE = '100010111011101' +MIDDLE = '0' + +# MAP for assigning every symbol (REF) to (reference number, barcode) +MAP = dict(zip(REF, enumerate(CODES))) diff --git a/source/pythonpath/barcode/charsets/ean.py b/source/pythonpath/barcode/charsets/ean.py new file mode 100644 index 0000000..951028a --- /dev/null +++ b/source/pythonpath/barcode/charsets/ean.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + + +EDGE = '101' +MIDDLE = '01010' +CODES = { + 'A': ('0001101', '0011001', '0010011', '0111101', '0100011', + '0110001', '0101111', '0111011', '0110111', '0001011'), + 'B': ('0100111', '0110011', '0011011', '0100001', '0011101', + '0111001', '0000101', '0010001', '0001001', '0010111'), + 'C': ('1110010', '1100110', '1101100', '1000010', '1011100', + '1001110', '1010000', '1000100', '1001000', '1110100'), +} +LEFT_PATTERN = ('AAAAAA', 'AABABB', 'AABBAB', 'AABBBA', 'ABAABB', + 'ABBAAB', 'ABBBAA', 'ABABAB', 'ABABBA', 'ABBABA') diff --git a/source/pythonpath/barcode/charsets/itf.py b/source/pythonpath/barcode/charsets/itf.py new file mode 100644 index 0000000..988db00 --- /dev/null +++ b/source/pythonpath/barcode/charsets/itf.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +# W = Wide bar +# w = wide space +# N = Narrow bar +# n = narrow space + +START = 'NnNn' +STOP = 'WnN' +CODES = ('NNWWN', 'WNNNW', 'NWNNW', 'WWNNN', 'NNWNW', 'WNWNN', 'NWWNN', 'NNNWW', 'WNNWN', 'NWNWN') diff --git a/source/pythonpath/barcode/charsets/upc.py b/source/pythonpath/barcode/charsets/upc.py new file mode 100644 index 0000000..9b625c7 --- /dev/null +++ b/source/pythonpath/barcode/charsets/upc.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + + +EDGE = '101' +MIDDLE = '01010' +CODES = { + 'L': ('0001101', '0011001', '0010011', '0111101', '0100011', + '0110001', '0101111', '0111011', '0110111', '0001011'), + 'R': ('1110010', '1100110', '1101100', '1000010', '1011100', + '1001110', '1010000', '1000100', '1001000', '1110100') +} diff --git a/source/pythonpath/barcode/codex.py b/source/pythonpath/barcode/codex.py new file mode 100644 index 0000000..c747175 --- /dev/null +++ b/source/pythonpath/barcode/codex.py @@ -0,0 +1,282 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from barcode.base import Barcode +from barcode.charsets import code128, code39 +from barcode.errors import * + +"""Module: barcode.codex + +:Provided barcodes: Code 39, Code 128, PZN +""" +__docformat__ = 'restructuredtext en' + + +# Sizes +MIN_SIZE = 0.2 +MIN_QUIET_ZONE = 2.54 + + +def check_code(code, name, allowed): + wrong = [] + for char in code: + if char not in allowed: + wrong.append(char) + if wrong: + raise IllegalCharacterError( + 'The following characters are not valid for ' + '{name}: {wrong}'.format(name=name, wrong=', '.join(wrong)) + ) + + +class Code39(Barcode): + """Initializes a new Code39 instance. + + :parameters: + code : String + Code 39 string without \* and checksum (added automatically if + `add_checksum` is True). + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + add_checksum : Boolean + Add the checksum to code or not (default: True). + """ + + name = 'Code 39' + + def __init__(self, code, writer=None, add_checksum=True): + self.code = code.upper() + if add_checksum: + self.code += self.calculate_checksum() + self.writer = writer or Barcode.default_writer() + check_code(self.code, self.name, code39.REF) + + def __unicode__(self): + return self.code + + __str__ = __unicode__ + + def get_fullcode(self): + return self.code + + def calculate_checksum(self): + check = sum([code39.MAP[x][0] for x in self.code]) % 43 + for k, v in code39.MAP.items(): + if check == v[0]: + return k + + def build(self): + chars = [code39.EDGE] + for char in self.code: + chars.append(code39.MAP[char][1]) + chars.append(code39.EDGE) + return [code39.MIDDLE.join(chars)] + + def render(self, writer_options=None, text=None): + options = dict(module_width=MIN_SIZE, quiet_zone=MIN_QUIET_ZONE) + options.update(writer_options or {}) + return Barcode.render(self, options, text) + + +class PZN7(Code39): + """Initializes new German number for pharmaceutical products. + + :parameters: + pzn : String + Code to render. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'Pharmazentralnummer' + + digits = 6 + + def __init__(self, pzn, writer=None): + pzn = pzn[:self.digits] + if not pzn.isdigit(): + raise IllegalCharacterError('PZN can only contain numbers.') + if len(pzn) != self.digits: + raise NumberOfDigitsError('PZN must have {0} digits, not ' + '{1}.'.format(self.digits, len(pzn))) + self.pzn = pzn + self.pzn = '{0}{1}'.format(pzn, self.calculate_checksum()) + Code39.__init__(self, 'PZN-{0}'.format(self.pzn), writer, + add_checksum=False) + + def get_fullcode(self): + return 'PZN-{0}'.format(self.pzn) + + def calculate_checksum(self): + sum_ = sum([int(x) * int(y) for x, y in enumerate(self.pzn, start=2)]) + checksum = sum_ % 11 + if checksum == 10: + raise BarcodeError('Checksum can not be 10 for PZN.') + else: + return checksum + + +class PZN8(PZN7): + """Will be fully added in v0.9.""" + + digits = 7 + + +class Code128(Barcode): + """Initializes a new Code128 instance. The checksum is added automatically + when building the bars. + + :parameters: + code : String + Code 128 string without checksum (added automatically). + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'Code 128' + + def __init__(self, code, writer=None): + self.code = code + self.writer = writer or Barcode.default_writer() + self._charset = 'B' + self._buffer = '' + check_code(self.code, self.name, code128.ALL) + + def __unicode__(self): + return self.code + + __str__ = __unicode__ + + @property + def encoded(self): + return self._build() + + def get_fullcode(self): + return self.code + + def _new_charset(self, which): + if which == 'A': + code = self._convert('TO_A') + elif which == 'B': + code = self._convert('TO_B') + elif which == 'C': + code = self._convert('TO_C') + self._charset = which + return [code] + + def _maybe_switch_charset(self, pos): + char = self.code[pos] + next_ = self.code[pos:pos + 10] + + def look_next(): + digits = 0 + for c in next_: + if c.isdigit(): + digits += 1 + else: + break + return digits > 3 + + codes = [] + if self._charset == 'C' and not char.isdigit(): + if char in code128.B: + codes = self._new_charset('B') + elif char in code128.A: + codes = self._new_charset('A') + if len(self._buffer) == 1: + codes.append(self._convert(self._buffer[0])) + self._buffer = '' + elif self._charset == 'B': + if look_next(): + codes = self._new_charset('C') + elif char not in code128.B: + if char in code128.A: + codes = self._new_charset('A') + elif self._charset == 'A': + if look_next(): + codes = self._new_charset('C') + elif char not in code128.A: + if char in code128.B: + codes = self._new_charset('B') + return codes + + def _convert(self, char): + if self._charset == 'A': + return code128.A[char] + elif self._charset == 'B': + return code128.B[char] + elif self._charset == 'C': + if char in code128.C: + return code128.C[char] + elif char.isdigit(): + self._buffer += char + if len(self._buffer) == 2: + value = int(self._buffer) + self._buffer = '' + return value + + def _try_to_optimize(self, encoded): + if encoded[1] in code128.TO: + encoded[:2] = [code128.TO[encoded[1]]] + return encoded + + def _calculate_checksum(self, encoded): + cs = [encoded[0]] + for i, code_num in enumerate(encoded[1:], start=1): + cs.append(i * code_num) + return sum(cs) % 103 + + def _build(self): + encoded = [code128.START_CODES[self._charset]] + for i, char in enumerate(self.code): + encoded.extend(self._maybe_switch_charset(i)) + code_num = self._convert(char) + if code_num is not None: + encoded.append(code_num) + # Finally look in the buffer + if len(self._buffer) == 1: + encoded.extend(self._new_charset('B')) + encoded.append(self._convert(self._buffer[0])) + self._buffer = '' + encoded = self._try_to_optimize(encoded) + return encoded + + def build(self): + encoded = self._build() + encoded.append(self._calculate_checksum(encoded)) + code = '' + for code_num in encoded: + code += code128.CODES[code_num] + code += code128.STOP + code += '11' + return [code] + + def render(self, writer_options=None, text=None): + options = dict(module_width=MIN_SIZE, quiet_zone=MIN_QUIET_ZONE) + options.update(writer_options or {}) + return Barcode.render(self, options, text) + + +class Gs1_128(Code128): + """ + following the norm, a gs1-128 barcode is a subset of code 128 barcode, + it can be generated by prepending the code with the FNC1 character + https://en.wikipedia.org/wiki/GS1-128 + https://www.gs1-128.info/ + """ + + name = 'GS1-128' + + FNC1_CHAR = '\xf1' + + def __init__(self, code, writer=None): + code = self.FNC1_CHAR + code + super(Gs1_128, self).__init__(code, writer) + + def get_fullcode(self): + return super(Gs1_128, self).get_fullcode()[1:] + + +# For pre 0.8 compatibility +PZN = PZN7 diff --git a/source/pythonpath/barcode/ean.py b/source/pythonpath/barcode/ean.py new file mode 100644 index 0000000..f3a447c --- /dev/null +++ b/source/pythonpath/barcode/ean.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from barcode.base import Barcode +from barcode.charsets import ean as _ean +from barcode.errors import * + +"""Module: barcode.ean + +:Provided barcodes: EAN-14, EAN-13, EAN-8, JAN +""" +__docformat__ = 'restructuredtext en' + +# Python 3 +try: + reduce +except NameError: + from functools import reduce + + +# EAN13 Specs (all sizes in mm) +SIZES = dict(SC0=0.27, SC1=0.297, SC2=0.33, SC3=0.363, SC4=0.396, SC5=0.445, + SC6=0.495, SC7=0.544, SC8=0.61, SC9=0.66) + + +class EuropeanArticleNumber13(Barcode): + """Initializes EAN13 object. + + :parameters: + ean : String + The ean number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'EAN-13' + + digits = 12 + + def __init__(self, ean, writer=None, **kwargs): + no_checksum = False + if "no_checksum" in kwargs.keys(): + no_checksum = kwargs["no_checksum"] + ean = ean[:self.digits] + if not ean.isdigit(): + raise IllegalCharacterError('EAN code can only contain numbers.') + if len(ean) != self.digits: + raise NumberOfDigitsError('EAN must have {0} digits, not ' + '{1}.'.format(self.digits, len(ean))) + self.ean = ean + # If no checksum + if no_checksum: + # Add a thirteen char if given in parameter, + # otherwise pad with zero + self.ean = '{0}{1}'.format( + ean, ean[self.digits] if len(ean) > self.digits else 0 + ) + else: + self.ean = '{0}{1}'.format(ean, self.calculate_checksum()) + self.writer = writer or Barcode.default_writer() + + def __unicode__(self): + return self.ean + + __str__ = __unicode__ + + def get_fullcode(self): + return self.ean + + def calculate_checksum(self): + """Calculates the checksum for EAN13-Code. + + :returns: The checksum for `self.ean`. + :rtype: Integer + """ + def sum_(x, y): return int(x) + int(y) + evensum = reduce(sum_, self.ean[-2::-2]) + oddsum = reduce(sum_, self.ean[-1::-2]) + return (10 - ((evensum + oddsum * 3) % 10)) % 10 + + def build(self): + """Builds the barcode pattern from `self.ean`. + + :returns: The pattern as string + :rtype: String + """ + code = _ean.EDGE[:] + pattern = _ean.LEFT_PATTERN[int(self.ean[0])] + for i, number in enumerate(self.ean[1:7]): + code += _ean.CODES[pattern[i]][int(number)] + code += _ean.MIDDLE + for number in self.ean[7:]: + code += _ean.CODES['C'][int(number)] + code += _ean.EDGE + return [code] + + def to_ascii(self): + """Returns an ascii representation of the barcode. + + :rtype: String + """ + code = self.build() + for i, line in enumerate(code): + code[i] = line.replace('1', '|').replace('0', ' ') + return '\n'.join(code) + + def render(self, writer_options=None, text=None): + options = dict(module_width=SIZES['SC2']) + options.update(writer_options or {}) + return Barcode.render(self, options, text) + + +class JapanArticleNumber(EuropeanArticleNumber13): + """Initializes JAN barcode. + + :parameters: + jan : String + The jan number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'JAN' + + valid_country_codes = list(range(450, 460)) + list(range(490, 500)) + + def __init__(self, jan, writer=None): + if int(jan[:3]) not in JapanArticleNumber.valid_country_codes: + raise WrongCountryCodeError("Country code isn't between 450-460 " + "or 490-500.") + EuropeanArticleNumber13.__init__(self, jan, writer) + + +class EuropeanArticleNumber8(EuropeanArticleNumber13): + """Represents an EAN-8 barcode. See EAN13's __init__ for details. + + :parameters: + ean : String + The ean number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'EAN-8' + + digits = 7 + + def __init__(self, ean, writer=None): + EuropeanArticleNumber13.__init__(self, ean, writer) + + def build(self): + """Builds the barcode pattern from `self.ean`. + + :returns: The pattern as string + :rtype: String + """ + code = _ean.EDGE[:] + for number in self.ean[:4]: + code += _ean.CODES['A'][int(number)] + code += _ean.MIDDLE + for number in self.ean[4:]: + code += _ean.CODES['C'][int(number)] + code += _ean.EDGE + return [code] + + +class EuropeanArticleNumber14(EuropeanArticleNumber13): + """Represents an EAN-14 barcode. See EAN13's __init__ for details. + + :parameters: + ean : String + The ean number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'EAN-14' + digits = 13 + + def calculate_checksum(self): + """Calculates the checksum for EAN13-Code. + + :returns: The checksum for `self.ean`. + :rtype: Integer + """ + + def sum_(x, y): return int(x) + int(y) + + evensum = reduce(sum_, self.ean[::2]) + oddsum = reduce(sum_, self.ean[1::2]) + return (10 - (((evensum * 3) + oddsum) % 10)) % 10 + + +# Shortcuts +EAN14 = EuropeanArticleNumber14 +EAN13 = EuropeanArticleNumber13 +EAN8 = EuropeanArticleNumber8 +JAN = JapanArticleNumber diff --git a/source/pythonpath/barcode/errors.py b/source/pythonpath/barcode/errors.py new file mode 100644 index 0000000..20f9459 --- /dev/null +++ b/source/pythonpath/barcode/errors.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +"""barcode.errors +""" +__docformat__ = 'restructuredtext en' + + +class BarcodeError(Exception): + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + + +class IllegalCharacterError(BarcodeError): + """Raised when a barcode-string contains illegal characters.""" + + +class BarcodeNotFoundError(BarcodeError): + """Raised when an unknown barcode is requested.""" + + +class NumberOfDigitsError(BarcodeError): + """Raised when the number of digits do not match.""" + + +class WrongCountryCodeError(BarcodeError): + """Raised when a JAN (Japan Article Number) don't starts with 450-459 + or 490-499. + """ diff --git a/source/pythonpath/barcode/isxn.py b/source/pythonpath/barcode/isxn.py new file mode 100644 index 0000000..c5911ff --- /dev/null +++ b/source/pythonpath/barcode/isxn.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from barcode.ean import EuropeanArticleNumber13 +from barcode.errors import * + +"""Module: barcode.isxn + +:Provided barcodes: ISBN-13, ISBN-10, ISSN + +This module provides some special codes, which are no standalone barcodes. +All codes where transformed to EAN-13 barcodes. In every case, the checksum +is new calculated. + +Example:: + + >>> from barcode import get_barcode + >>> ISBN = get_barcode('isbn10') + >>> isbn = ISBN('0132354187') + >>> unicode(isbn) + '0132354187' + >>> isbn.get_fullcode() + '9780132354189' + >>> # Test with wrong checksum + >>> isbn = ISBN('0132354180') + >>> unicode(isbn) + '0132354187' + +""" +__docformat__ = 'restructuredtext en' + + +class InternationalStandardBookNumber13(EuropeanArticleNumber13): + """Initializes new ISBN-13 barcode. + + :parameters: + isbn : String + The isbn number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'ISBN-13' + + def __init__(self, isbn, writer=None): + isbn = isbn.replace('-', '') + self.isbn13 = isbn + if isbn[:3] not in ('978', '979'): + raise WrongCountryCodeError('ISBN must start with 978 or 979.') + if isbn[:3] == '979': + if isbn[3:5] not in ('10', '11'): + raise BarcodeError('ISBN must start with 97910 or 97911.') + EuropeanArticleNumber13.__init__(self, isbn, writer) + + +class InternationalStandardBookNumber10(InternationalStandardBookNumber13): + """Initializes new ISBN-10 barcode. This code is rendered as EAN-13 by + prefixing it with 978. + + :parameters: + isbn : String + The isbn number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'ISBN-10' + + digits = 9 + + def __init__(self, isbn, writer=None): + isbn = isbn.replace('-', '') + isbn = isbn[:self.digits] + self.isbn10 = isbn + self.isbn10 = '{0}{1}'.format(isbn, self._calculate_checksum()) + InternationalStandardBookNumber13.__init__(self, '978' + isbn, writer) + + def _calculate_checksum(self): + tmp = sum([x * int(y) for x, y in enumerate(self.isbn10[:9], + start=1)]) % 11 + if tmp == 10: + return 'X' + else: + return tmp + + def __unicode__(self): + return self.isbn10 + + __str__ = __unicode__ + + +class InternationalStandardSerialNumber(EuropeanArticleNumber13): + """Initializes new ISSN barcode. This code is rendered as EAN-13 + by prefixing it with 977 and adding 00 between code and checksum. + + :parameters: + issn : String + The issn number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + """ + + name = 'ISSN' + + digits = 7 + + def __init__(self, issn, writer=None): + issn = issn.replace('-', '') + issn = issn[:self.digits] + self.issn = issn + self.issn = '{0}{1}'.format(issn, self._calculate_checksum()) + EuropeanArticleNumber13.__init__(self, self.make_ean(), writer) + + def _calculate_checksum(self): + tmp = 11 - sum([x * int(y) for x, y in + enumerate(reversed(self.issn[:7]), start=2)]) % 11 + if tmp == 10: + return 'X' + else: + return tmp + + def make_ean(self): + return '977{0}00{1}'.format(self.issn[:7], self._calculate_checksum()) + + def __unicode__(self): + return self.issn + + __str__ = __unicode__ + + +# Shortcuts +ISBN13 = InternationalStandardBookNumber13 +ISBN10 = InternationalStandardBookNumber10 +ISSN = InternationalStandardSerialNumber diff --git a/source/pythonpath/barcode/itf.py b/source/pythonpath/barcode/itf.py new file mode 100644 index 0000000..c307255 --- /dev/null +++ b/source/pythonpath/barcode/itf.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from barcode.base import Barcode +from barcode.charsets import itf +from barcode.errors import * + +"""Module: barcode.itf + +:Provided barcodes: Interleaved 2 of 5 +""" +__docformat__ = 'restructuredtext en' + + +MIN_SIZE = 0.2 +MIN_QUIET_ZONE = 6.4 + + +class ITF(Barcode): + """Initializes a new ITF instance. + + :parameters: + code : String + ITF (Interleaved 2 of 5) numeric string + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + narrow: Integer + Width of the narrow elements (default: 2) + wide: Integer + Width of the wide elements (default: 5) + wide/narrow must be in the range 2..3 + """ + + name = 'ITF' + + def __init__(self, code, writer=None, narrow=2, wide=5): + if not code.isdigit(): + raise IllegalCharacterError('ITF code can only contain numbers.') + # Length must be even, prepend 0 if necessary + if len(code) % 2 != 0: + code = '0' + code + self.code = code + self.writer = writer or Barcode.default_writer() + self.narrow = narrow + self.wide = wide + + def __unicode__(self): + return self.code + + __str__ = __unicode__ + + def get_fullcode(self): + return self.code + + def build(self): + data = itf.START + for i in range(0, len(self.code), 2): + bars_digit = int(self.code[i]) + spaces_digit = int(self.code[i+1]) + for j in range(5): + data += itf.CODES[bars_digit][j].upper() + data += itf.CODES[spaces_digit][j].lower() + data += itf.STOP + raw = '' + for e in data: + if e == 'W': + raw += '1' * self.wide + if e == 'w': + raw += '0' * self.wide + if e == 'N': + raw += '1' * self.narrow + if e == 'n': + raw += '0' * self.narrow + return [raw] + + def render(self, writer_options, text=None): + options = dict(module_width=MIN_SIZE/self.narrow, + quiet_zone=MIN_QUIET_ZONE) + options.update(writer_options or {}) + return Barcode.render(self, options, text) diff --git a/source/pythonpath/barcode/pybarcode.py b/source/pythonpath/barcode/pybarcode.py new file mode 100644 index 0000000..c1938fa --- /dev/null +++ b/source/pythonpath/barcode/pybarcode.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- + +from __future__ import print_function + +import os + +import barcode + +from argparse import ArgumentParser + +from barcode.writer import ImageWriter, SVGWriter +from barcode.version import version + +# Optional PyQt4 GUI +try: + from PyQt4 import QtCore +except ImportError: + QtCore = None # lint:ok + +# No GUI available yet +QtCore = None +IMG_FORMATS = ('BMP', 'GIF', 'JPEG', 'MSP', 'PCX', 'PNG', 'TIFF', 'XBM') + + +def open_gui(args, parser=None): + pass + + +def list_types(args, parser=None): + print('\npyBarcode available barcode formats:') + print(', '.join(barcode.PROVIDED_BARCODES)) + print('\n') + print('Available image formats') + print('Standard: svg') + if ImageWriter is not None: + print('Pillow:', ', '.join(IMG_FORMATS)) + else: + print('Pillow: disabled') + print('\n') + + +def create_barcode(args, parser): + args.type = args.type.upper() + if args.type != 'SVG' and args.type not in IMG_FORMATS: + parser.error( + 'Unknown type {type}. Try list action for available ' + 'types.'.format(type=args.type) + ) + args.barcode = args.barcode.lower() + if args.barcode not in barcode.PROVIDED_BARCODES: + parser.error( + 'Unknown barcode {bc}. Try list action for available ' + 'barcodes.'.format(bc=args.barcode) + ) + if args.type != 'SVG': + opts = dict(format=args.type) + writer = ImageWriter() + else: + opts = dict(compress=args.compress) + writer = SVGWriter() + out = os.path.normpath(os.path.abspath(args.output)) + name = barcode.generate(args.barcode, args.code, writer, out, opts, + args.text) + print('New barcode saved as {0}.'.format(name)) + + +def main(): + msg = [] + if ImageWriter is None: + msg.append( + 'Image output disabled (Pillow not found), --type option disabled.' + ) + else: + msg.append( + 'Image output enabled, use --type option to give image ' + 'format (png, jpeg, ...).' + ) + if QtCore is None: + msg.append('PyQt not found, gui action disabled.') + else: + msg.append('PyQt found. Use gui action to get a simple GUI.') + parser = ArgumentParser( + description='Create standard barcodes via cli.', epilog=' '.join(msg) + ) + parser.add_argument('-v', '--version', action='version', + version='%(prog)s ' + version) + subparsers = parser.add_subparsers(title='Actions') + create_parser = subparsers.add_parser('create', help='Create a barcode ' + 'with the given options.') + create_parser.add_argument('code', help='Code to render as barcode.') + create_parser.add_argument('output', help='Filename for output ' + 'without extension, e. g. mybarcode.') + create_parser.add_argument( + '-c', '--compress', action='store_true', + help='Compress output, only recognized if type is svg.' + ) + create_parser.add_argument('-b', '--barcode', help='Barcode to use ' + '[default: %(default)s].') + create_parser.add_argument('--text', help='Text to show under the ' + 'barcode.') + if ImageWriter is not None: + create_parser.add_argument('-t', '--type', help='Type of output ' + '[default: %(default)s].') + list_parser = subparsers.add_parser('list', help='List available ' + 'image and code types.') + list_parser.set_defaults(func=list_types) + if QtCore is not None: + gui_parser = subparsers.add_parser('gui', help='Opens a simple ' + 'PyQt GUI to create barcodes.') + gui_parser.set_defaults(func=open_gui) + create_parser.set_defaults(type='svg', compress=False, func=create_barcode, + barcode='code39', text=None) + args = parser.parse_args() + try: + func = args.func + except AttributeError: + parser.error("You need to tell me what to do.") + else: + func(args, parser) + + +if __name__ == '__main__': + main() diff --git a/source/pythonpath/barcode/upc.py b/source/pythonpath/barcode/upc.py new file mode 100644 index 0000000..cd68259 --- /dev/null +++ b/source/pythonpath/barcode/upc.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from barcode.base import Barcode +from barcode.charsets import upc as _upc +from barcode.errors import * + +try: + reduce +except NameError: + from functools import reduce + +"""Module: barcode.upc + +:Provided barcodes: UPC-A +""" +__docformat__ = 'restructuredtext en' + + +class UniversalProductCodeA(Barcode): + """Initializes new UPC-A barcode. + + :parameters: + upc : String + The upc number as string. + writer : barcode.writer Instance + The writer to render the barcode (default: SVGWriter). + make_ean: boolean + """ + + name = 'UPC-A' + + digits = 11 + + def __init__(self, upc, writer=None, make_ean=False): + self.ean = make_ean + upc = upc[:self.digits] + if not upc.isdigit(): + raise IllegalCharacterError('UPC code can only contain numbers.') + if len(upc) != self.digits: + raise NumberOfDigitsError('UPC must have {0} digits, not ' + '{1}.'.format(self.digits, len(upc))) + self.upc = upc + self.upc = '{}{}'.format(upc, self.calculate_checksum()) + self.writer = writer or Barcode.default_writer() + + def __unicode__(self): + if self.ean: + return '0' + self.upc + else: + return self.upc + + __str__ = __unicode__ + + def get_fullcode(self): + if self.ean: + return '0' + self.upc + else: + return self.upc + + def calculate_checksum(self): + """Calculates the checksum for UPCA/UPC codes + + :return: The checksum for 'self.upc' + :rtype: Integer + """ + def sum_(x, y): return int(x) + int(y) + upc = self.upc[0:self.digits] + oddsum = reduce(sum_, upc[::2]) + evensum = reduce(sum_, upc[1::2]) + check = (evensum + oddsum * 3) % 10 + if check == 0: + return 0 + else: + return 10 - check + + def build(self): + """Builds the barcode pattern from 'self.upc' + + :return: The pattern as string + :rtype: String + """ + code = _upc.EDGE[:] + + for i, number in enumerate(self.upc[0:6]): + code += _upc.CODES['L'][int(number)] + + code += _upc.MIDDLE + + for number in self.upc[6:]: + code += _upc.CODES['R'][int(number)] + + code += _upc.EDGE + + return [code] + + def to_ascii(self): + """Returns an ascii representation of the barcode. + + :rtype: String + """ + + code = self.build() + for i, line in enumerate(code): + code[i] = line.replace('1', '|').replace('0', '_') + return '\n'.join(code) + + def render(self, writer_options=None, text=None): + options = dict(module_width=0.33) + options.update(writer_options or {}) + return Barcode.render(self, options, text) + +UPCA = UniversalProductCodeA diff --git a/source/pythonpath/barcode/version.py b/source/pythonpath/barcode/version.py new file mode 100644 index 0000000..f9f5476 --- /dev/null +++ b/source/pythonpath/barcode/version.py @@ -0,0 +1,4 @@ +# coding: utf-8 +# file generated by setuptools_scm +# don't change, don't track in version control +version = '0.10.0' diff --git a/source/pythonpath/barcode/writer.py b/source/pythonpath/barcode/writer.py new file mode 100644 index 0000000..415f26f --- /dev/null +++ b/source/pythonpath/barcode/writer.py @@ -0,0 +1,337 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +import gzip +import os +import xml.dom + +from barcode.version import version + +try: + import Image + import ImageDraw + import ImageFont +except ImportError: + try: + from PIL import Image, ImageDraw, ImageFont # lint:ok + except ImportError: + import logging + log = logging.getLogger('pyBarcode') + log.info('Pillow not found. Image output disabled') + Image = ImageDraw = ImageFont = None # lint:ok + + +def mm2px(mm, dpi=300): + return (mm * dpi) / 25.4 + + +def pt2mm(pt): + return pt * 0.352777778 + + +def _set_attributes(element, **attributes): + for key, value in attributes.items(): + element.setAttribute(key, value) + + +def create_svg_object(): + imp = xml.dom.getDOMImplementation() + doctype = imp.createDocumentType( + 'svg', + '-//W3C//DTD SVG 1.1//EN', + 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' + ) + document = imp.createDocument(None, 'svg', doctype) + _set_attributes(document.documentElement, version='1.1', + xmlns='http://www.w3.org/2000/svg') + return document + + +SIZE = '{0:.3f}mm' +COMMENT = 'Autogenerated with python-barcode {0}'.format(version) +PATH = os.path.dirname(os.path.abspath(__file__)) +FONT = os.path.join(PATH, 'DejaVuSansMono.ttf') + + +class BaseWriter(object): + """Baseclass for all writers. + + Initializes the basic writer options. Childclasses can add more + attributes and can set them directly or using + `self.set_options(option=value)`. + + :parameters: + initialize : Function + Callback for initializing the inheriting writer. + Is called: `callback_initialize(raw_code)` + paint_module : Function + Callback for painting one barcode module. + Is called: `callback_paint_module(xpos, ypos, width, color)` + paint_text : Function + Callback for painting the text under the barcode. + Is called: `callback_paint_text(xpos, ypos)` using `self.text` + as text. + finish : Function + Callback for doing something with the completely rendered + output. + Is called: `return callback_finish()` and must return the + rendered output. + """ + + def __init__(self, initialize=None, paint_module=None, paint_text=None, + finish=None): + self._callbacks = dict( + initialize=initialize, paint_module=paint_module, + paint_text=paint_text, finish=finish + ) + self.module_width = 10 + self.module_height = 10 + self.font_size = 10 + self.quiet_zone = 6.5 + self.background = 'white' + self.foreground = 'black' + self.text = '' + self.human = '' # human readable text + self.text_distance = 5 + self.center_text = True + + def calculate_size(self, modules_per_line, number_of_lines, dpi=300): + """Calculates the size of the barcode in pixel. + + :parameters: + modules_per_line : Integer + Number of modules in one line. + number_of_lines : Integer + Number of lines of the barcode. + dpi : Integer + DPI to calculate. + + :returns: Width and height of the barcode in pixel. + :rtype: Tuple + """ + width = 2 * self.quiet_zone + modules_per_line * self.module_width + height = 2.0 + self.module_height * number_of_lines + if self.font_size and self.text: + height += pt2mm(self.font_size) / 2 + self.text_distance + return int(mm2px(width, dpi)), int(mm2px(height, dpi)) + + def save(self, filename, output): + """Saves the rendered output to `filename`. + + :parameters: + filename : String + Filename without extension. + output : String + The rendered output. + + :returns: The full filename with extension. + :rtype: String + """ + raise NotImplementedError + + def register_callback(self, action, callback): + """Register one of the three callbacks if not given at instance + creation. + + :parameters: + action : String + One of 'initialize', 'paint_module', 'paint_text', 'finish'. + callback : Function + The callback function for the given action. + """ + self._callbacks[action] = callback + + def set_options(self, options): + """Sets the given options as instance attributes (only + if they are known). + + :parameters: + options : Dict + All known instance attributes and more if the childclass + has defined them before this call. + + :rtype: None + """ + for key, val in options.items(): + key = key.lstrip('_') + if hasattr(self, key): + setattr(self, key, val) + + def render(self, code): + """Renders the barcode to whatever the inheriting writer provides, + using the registered callbacks. + + :parameters: + code : List + List of strings matching the writer spec + (only contain 0 or 1). + """ + if self._callbacks['initialize'] is not None: + self._callbacks['initialize'](code) + ypos = 1.0 + for cc, line in enumerate(code): + """ + Pack line to list give better gfx result, otherwise in can + result in aliasing gaps + '11010111' -> [2, -1, 1, -1, 3] + """ + line += ' ' + c = 1 + mlist = [] + for i in range(0, len(line) - 1): + if line[i] == line[i+1]: + c += 1 + else: + if line[i] == "1": + mlist.append(c) + else: + mlist.append(-c) + c = 1 + # Left quiet zone is x startposition + xpos = self.quiet_zone + bxs = xpos # x start of barcode + for mod in mlist: + if mod < 1: + color = self.background + else: + color = self.foreground + # remove painting for background colored tiles? + self._callbacks['paint_module']( + xpos, ypos, self.module_width * abs(mod), color + ) + xpos += self.module_width * abs(mod) + bxe = xpos + # Add right quiet zone to every line, except last line, + # quiet zone already provided with background, + # should it be removed complety? + if (cc + 1) != len(code): + self._callbacks['paint_module']( + xpos, ypos, self.quiet_zone, self.background + ) + ypos += self.module_height + if self.text and self._callbacks['paint_text'] is not None: + ypos += self.text_distance + if self.center_text: + # better center position for text + xpos = bxs + ((bxe - bxs) / 2.0) + else: + xpos = bxs + self._callbacks['paint_text'](xpos, ypos) + return self._callbacks['finish']() + + +class SVGWriter(BaseWriter): + + def __init__(self): + BaseWriter.__init__(self, self._init, self._create_module, + self._create_text, self._finish) + self.compress = False + self.dpi = 25.4 + self._document = None + self._root = None + self._group = None + + def _init(self, code): + width, height = self.calculate_size(len(code[0]), len(code), self.dpi) + self._document = create_svg_object() + self._root = self._document.documentElement + attributes = dict(width=SIZE.format(width), height=SIZE.format(height)) + _set_attributes(self._root, **attributes) + self._root.appendChild(self._document.createComment(COMMENT)) + # create group for easier handling in 3rd party software + # like corel draw, inkscape, ... + group = self._document.createElement('g') + attributes = dict(id='barcode_group') + _set_attributes(group, **attributes) + self._group = self._root.appendChild(group) + background = self._document.createElement('rect') + attributes = dict(width='100%', height='100%', + style='fill:{0}'.format(self.background)) + _set_attributes(background, **attributes) + self._group.appendChild(background) + + def _create_module(self, xpos, ypos, width, color): + element = self._document.createElement('rect') + attributes = dict(x=SIZE.format(xpos), y=SIZE.format(ypos), + width=SIZE.format(width), + height=SIZE.format(self.module_height), + style='fill:{0};'.format(color)) + _set_attributes(element, **attributes) + self._group.appendChild(element) + + def _create_text(self, xpos, ypos): + element = self._document.createElement('text') + attributes = dict(x=SIZE.format(xpos), y=SIZE.format(ypos), + style='fill:{0};font-size:{1}pt;text-anchor:' + 'middle;'.format(self.foreground, + self.font_size)) + _set_attributes(element, **attributes) + # check option to override self.text with self.human (barcode as + # human readable data, can be used to print own formats) + if self.human != '': + barcodetext = self.human + else: + barcodetext = self.text + text_element = self._document.createTextNode(barcodetext) + element.appendChild(text_element) + self._group.appendChild(element) + + def _finish(self): + if self.compress: + return self._document.toxml(encoding='UTF-8') + else: + return self._document.toprettyxml(indent=4 * ' ', newl=os.linesep, + encoding='UTF-8') + + def save(self, filename, output): + if self.compress: + _filename = '{0}.svgz'.format(filename) + f = gzip.open(_filename, 'wb') + f.write(output) + f.close() + else: + _filename = '{0}.svg'.format(filename) + with open(_filename, 'wb') as f: + f.write(output) + return _filename + + +if Image is None: + ImageWriter = None +else: + class ImageWriter(BaseWriter): + + def __init__(self): + BaseWriter.__init__(self, self._init, self._paint_module, + self._paint_text, self._finish) + self.format = 'PNG' + self.dpi = 300 + self._image = None + self._draw = None + + def _init(self, code): + size = self.calculate_size(len(code[0]), len(code), self.dpi) + self._image = Image.new('RGB', size, self.background) + self._draw = ImageDraw.Draw(self._image) + + def _paint_module(self, xpos, ypos, width, color): + size = [(mm2px(xpos, self.dpi), mm2px(ypos, self.dpi)), + (mm2px(xpos + width, self.dpi), + mm2px(ypos + self.module_height, self.dpi))] + self._draw.rectangle(size, outline=color, fill=color) + + def _paint_text(self, xpos, ypos): + font = ImageFont.truetype(FONT, self.font_size * 2) + width, height = font.getsize(self.text) + pos = (mm2px(xpos, self.dpi) - width // 2, + mm2px(ypos, self.dpi) - height // 4) + self._draw.text(pos, self.text, font=font, fill=self.foreground) + + def _finish(self): + return self._image + + def save(self, filename, output): + filename = '{0}.{1}'.format(filename, self.format.lower()) + output.save(filename, self.format.upper()) + return filename diff --git a/source/pythonpath/easymacro.py b/source/pythonpath/easymacro.py new file mode 100644 index 0000000..76de6cf --- /dev/null +++ b/source/pythonpath/easymacro.py @@ -0,0 +1,1000 @@ +#!/usr/bin/env python3 + +# == Rapid Develop Macros in LibreOffice == + +# ~ This file is part of ZAZ. + +# ~ ZAZ 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 3 of the License, or +# ~ (at your option) any later version. + +# ~ ZAZ 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 ZAZ. If not, see . + + +import getpass +import logging +import os +import platform +import sys +import tempfile +import threading +import time +from functools import wraps + +import uno +import unohelper +from com.sun.star.beans import PropertyValue +from com.sun.star.awt import MessageBoxButtons as MSG_BUTTONS +from com.sun.star.awt.MessageBoxResults import YES +from com.sun.star.awt.PosSize import POSSIZE, SIZE +from com.sun.star.awt import Size, Point +from com.sun.star.table.CellContentType import EMPTY, VALUE, TEXT, FORMULA + +from com.sun.star.text.TextContentAnchorType import AS_CHARACTER + +from com.sun.star.lang import XEventListener +from com.sun.star.awt import XActionListener +from com.sun.star.awt import XMouseListener + + +FILE_NAME_DEBUG = 'debug.log' +MSG_LANG = { + 'es': { + 'OK': 'Aceptar', + 'Cancel': 'Cancelar', + } +} + +FORMAT = '%(asctime)s - %(levelname)s - %(message)s' +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, f'\033[1;41m{LEVEL_ERROR}\033[1;0m') +logging.addLevelName(logging.DEBUG, f'\x1b[33m{LEVEL_DEBUG}\033[1;0m') +logging.addLevelName(logging.INFO, f'\x1b[32m{LEVEL_INFO}\033[1;0m') +logging.basicConfig(level=logging.DEBUG, format=FORMAT, datefmt=DATE) +log = logging.getLogger(__name__) + + +OBJ_CELL = 'ScCellObj' +OBJ_RANGE = 'ScCellRangeObj' +OBJ_RANGES = 'ScCellRangesObj' +OBJ_TYPE_RANGES = (OBJ_CELL, OBJ_RANGE, OBJ_RANGES) + +CTX = uno.getComponentContext() +SM = CTX.getServiceManager() + + +def create_instance(name, with_context=False): + if with_context: + instance = SM.createInstanceWithContext(name, CTX) + else: + instance = SM.createInstance(name) + return instance + + +def _get_config(key, node_name): + name = 'com.sun.star.configuration.ConfigurationProvider' + service = 'com.sun.star.configuration.ConfigurationAccess' + cp = create_instance(name, True) + node = PropertyValue(Name='nodepath', Value=node_name) + try: + ca = cp.createInstanceWithArguments(service, (node,)) + if ca and (ca.hasByName(key)): + data = ca.getPropertyValue(key) + return data + except Exception as e: + log.error(e) + return '' + + +OS = sys.platform +USER = getpass.getuser() +PC = platform.node() + +LANGUAGE = _get_config('ooLocale', 'org.openoffice.Setup/L10N/') +NAME = TITLE = _get_config('ooName', 'org.openoffice.Setup/Product') +VERSION = _get_config('ooSetupVersion', 'org.openoffice.Setup/Product') +# ~ DESKTOP = create_instance('com.sun.star.frame.Desktop', True) + +INFO_DEBUG = '{}\n\n{}\n\n{}'.format( + sys.version, platform.platform(), '\n'.join(sys.path)) + + +def mri(obj): + m = create_instance('mytools.Mri') + if m is None: + msg = 'Extension MRI not found' + error(msg) + return + + m.inspect(obj) + return + + +def debug(info): + log.debug(info) + return + + +def error(info): + log.error(info) + return + + +def catch_exception(f): + @wraps(f) + def func(*args, **kwargs): + try: + return f(*args, **kwargs) + except Exception as e: + log.error(f.__name__, exc_info=True) + return func + + +def run_in_thread(fn): + def run(*k, **kw): + t = threading.Thread(target=fn, args=k, kwargs=kw) + t.start() + return t + return run + + +def _(msg): + L = LANGUAGE.split('-')[0] + if L == 'en': + return msg + + if not L in MSG_LANG: + return msg + + return MSG_LANG[L][msg] + + +def msgbox(message, title=TITLE, buttons=MSG_BUTTONS.BUTTONS_OK, type_msg='infobox'): + """ Create message box + type_msg: infobox, warningbox, errorbox, querybox, messbox + http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1awt_1_1XMessageBoxFactory.html + """ + toolkit = create_instance('com.sun.star.awt.Toolkit') + parent = toolkit.getDesktopWindow() + mb = toolkit.createMessageBox(parent, type_msg, buttons, title, str(message)) + return mb.execute() + + +def question(message, title=TITLE): + res = msgbox(message, title, MSG_BUTTONS.BUTTONS_YES_NO, 'querybox') + return res == YES + + +def warning(message, title=TITLE): + return msgbox(message, title, type_msg='warningbox') + + +def errorbox(message, title=TITLE): + return msgbox(message, title, type_msg='errorbox') + + +def get_desktop(): + return create_instance('com.sun.star.frame.Desktop', True) + + +def get_temp_file(): + return tempfile.NamedTemporaryFile() + + +def _path_url(path): + if path.startswith('file://'): + return path + return uno.systemPathToFileUrl(path) + + +def _path_system(path): + if path.startswith('file://'): + return os.path.abspath(uno.fileUrlToSystemPath(path)) + return path + + +def get_type_doc(obj): + services = { + 'calc': 'com.sun.star.sheet.SpreadsheetDocument', + 'writer': 'com.sun.star.text.TextDocument', + 'impress': 'com.sun.star.presentation.PresentationDocument', + 'draw': 'com.sun.star.drawing.DrawingDocument', + 'base': 'com.sun.star.sdb.OfficeDatabaseDocument', + 'math': 'com.sun.star.formula.FormulaProperties', + 'basic': 'com.sun.star.script.BasicIDE', + } + for k, v in services.items(): + if obj.supportsService(v): + return k + return '' + + +# ~ Custom classes + + +class LODocument(object): + + def __init__(self, obj): + self._obj = obj + self._init_values() + + def _init_values(self): + self._type_doc = get_type_doc(self.obj) + self._cc = self.obj.getCurrentController() + return + + @property + def obj(self): + return self._obj + + @property + def type(self): + return self._type_doc + + @property + def title(self): + return self.obj.getTitle() + + @property + def is_saved(self): + return self.obj.hasLocation() + + @property + def is_modified(self): + return self.obj.isModified() + + @property + def is_read_only(self): + return self.obj.isReadOnly() + + @property + def path(self): + return _path_system(self.obj.getURL()) + + @property + def visible(self): + w = self._cc.getFrame().getContainerWindow() + return w.Visible + @visible.setter + def visible(self, value): + w = self._cc.getFrame().getContainerWindow() + w.setVisible(value) + + @property + def zoom(self): + return self._cc.ZoomValue + @zoom.setter + def zoom(self, value): + self._cc.ZoomValue = value + + def create_instance(self, name): + obj = self.obj.createInstance(name) + return obj + + +class LOCalc(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + @property + def obj(self): + return self._obj + + @property + def active(self): + return LOCalcSheet(self._cc.getActiveSheet(), self) + + @property + def selection(self): + sel = self.obj.getCurrentSelection() + if sel.ImplementationName in OBJ_TYPE_RANGES: + sel = LOCellRange(sel, self) + return sel + + def get_cell(self, index=None): + """ + index is str 'A1' + index is tuple (row, col) + """ + if index is None: + cell = self.selection.first + else: + cell = LOCellRange(self.active[index].obj, self) + return cell + + # ~ def create_instance(self, name): + # ~ obj = self.obj.createInstance(name) + # ~ return obj + + +class LOCalcSheet(object): + + def __init__(self, obj, doc): + self._obj = obj + self._doc = doc + self._init_values() + + def __getitem__(self, index): + return LOCellRange(self.obj[index], self.doc) + + def _init_values(self): + return + + @property + def obj(self): + return self._obj + + @property + def doc(self): + return self._doc + + +class LOWriter(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + @property + def obj(self): + return self._obj + + @property + def string(self): + return self._obj.getText().String + + @property + def text(self): + return self._obj.getText() + + @property + def cursor(self): + return self.text.createTextCursor() + + @property + def selection(self): + sel = self._cc.getSelection() + return LOTextRange(sel[0]) + + def insert_content(self, cursor, data, replace=False): + self.text.insertTextContent(cursor, data, replace) + return + + # ~ tt = doc.createInstance('com.sun.star.text.TextTable') + # ~ tt.initialize(5, 2) + + # ~ f = doc.createInstance('com.sun.star.text.TextFrame') + # ~ f.setSize(Size(10000, 500)) + + def insert_image(self, path, **kwargs): + cursor = kwargs.get('cursor', self.selection.cursor.getEnd()) + w = kwargs.get('width', 1000) + h = kwargs.get('Height', 1000) + image = self.create_instance('com.sun.star.text.GraphicObject') + image.GraphicURL = _path_url(path) + image.AnchorType = AS_CHARACTER + image.Width = w + image.Height = h + self.insert_content(cursor, image) + return + + +class LOTextRange(object): + + def __init__(self, obj): + self._obj = obj + + @property + def obj(self): + return self._obj + + @property + def string(self): + return self.obj.String + + @property + def text(self): + return self.obj.getText() + + @property + def cursor(self): + return self.text.createTextCursorByRange(self.obj) + + +class LOBase(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + +class LODrawImpress(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + @property + def draw_page(self): + return self._cc.getCurrentPage() + + @catch_exception + def insert_image(self, path, **kwargs): + w = kwargs.get('width', 3000) + h = kwargs.get('Height', 1000) + x = kwargs.get('X', 1000) + y = kwargs.get('Y', 1000) + + image = self.create_instance('com.sun.star.drawing.GraphicObjectShape') + image.GraphicURL = _path_url(path) + image.Size = Size(w, h) + image.Position = Point(x, y) + self.draw_page.add(image) + return + + +class LOImpress(LODrawImpress): + + def __init__(self, obj): + super().__init__(obj) + + +class LODraw(LODrawImpress): + + def __init__(self, obj): + super().__init__(obj) + + +class LOMath(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + +class LOBasicIde(LODocument): + + def __init__(self, obj): + super().__init__(obj) + + +class LOCellRange(object): + + def __init__(self, obj, doc): + self._obj = obj + self._doc = doc + self._init_values() + + def __enter__(self): + return self + + def __exit__(self, *args): + pass + + def __getitem__(self, index): + return LOCellRange(self.obj[index], self.doc) + + def _init_values(self): + self._type_obj = self.obj.ImplementationName + self._type_content = EMPTY + + if self._type_obj == OBJ_CELL: + self._type_content = self.obj.getType() + return + + @property + def obj(self): + return self._obj + + @property + def doc(self): + return self._doc + + @property + def type(self): + return self._type_obj + + @property + def type_content(self): + return self._type_content + + @property + def first(self): + if self.type == OBJ_RANGES: + obj = LOCellRange(self.obj[0][0,0], self.doc) + else: + obj = LOCellRange(self.obj[0,0], self.doc) + return obj + + @property + def value(self): + v = None + if self._type_content == VALUE: + v = self.obj.getValue() + elif self._type_content == TEXT: + v = self.obj.getString() + elif self._type_content == FORMULA: + v = self.obj.getFormula() + return v + @value.setter + def value(self, data): + if isinstance(data, str): + if data.startswith('='): + self.obj.setFormula(data) + else: + self.obj.setString(data) + elif isinstance(data, (int, float)): + self.obj.setValue(data) + + @property + def data(self): + return self.obj.getDataArray() + @data.setter + def data(self, values): + if isinstance(values, list): + values = tuple(values) + self.obj.setDataArray(values) + + def offset(self, col=1, row=0): + a = self.address + col = a.Column + col + row = a.Row + row + return LOCellRange(self.sheet[row,col], self.doc) + + @property + def sheet(self): + return self.obj.Spreadsheet + + @property + def draw_page(self): + return self.sheet.getDrawPage() + + @property + def name(self): + return self.obj.AbsoluteName + + @property + def address(self): + if self._type_obj == OBJ_CELL: + a = self.obj.getCellAddress() + elif self._type_obj == OBJ_RANGE: + a = self.obj.getRangeAddress() + else: + a = self.obj.getRangeAddressesAsString() + return a + + @property + def current_region(self): + cursor = self.sheet.createCursorByRange(self.obj[0,0]) + cursor.collapseToCurrentRegion() + return LOCellRange(self.sheet[cursor.AbsoluteName], self.doc) + + def insert_image(self, path, **kwargs): + s = self.obj.Size + w = kwargs.get('width', s.Width) + h = kwargs.get('Height', s.Height) + img = self.doc.create_instance('com.sun.star.drawing.GraphicObjectShape') + img.GraphicURL = _path_url(path) + self.draw_page.add(img) + img.Anchor = self.obj + img.setSize(Size(w, h)) + return + + +class EventsListenerBase(unohelper.Base, XEventListener): + + def __init__(self, controller, window=None): + self._controller = controller + self._window = window + + def disposing(self, event): + self._controller = None + if not self._window is None: + self._window.setMenuBar(None) + + +class EventsButton(EventsListenerBase, XActionListener): + + def __init__(self, controller): + super().__init__(controller) + + def actionPerformed(self, event): + name = event.Source.Model.Name + event_name = '{}_action'.format(name) + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + +class EventsMouse(EventsListenerBase, XMouseListener): + + def __init__(self, controller): + super().__init__(controller) + + def mousePressed(self, event): + name = event.Source.Model.Name + event_name = '{}_click'.format(name) + if event.ClickCount == 2: + event_name = '{}_double_click'.format(name) + if hasattr(self._controller, event_name): + getattr(self._controller, event_name)(event) + return + + def mouseReleased(self, event): + pass + + def mouseEntered(self, event): + pass + + def mouseExited(self, event): + pass + + +class UnoBaseObject(object): + + def __init__(self, obj): + self._obj = obj + self._model = self.obj.Model + self._rules = {} + + @property + def obj(self): + return self._obj + + @property + def model(self): + return self._model + + @property + def name(self): + return self.model.Name + + @property + def parent(self): + return self.obj.getContext() + + @property + def x(self): + return self.model.PositionX + @x.setter + def x(self, value): + self.model.PositionX = value + + @property + def y(self): + return self.model.PositionY + @y.setter + def y(self, value): + self.model.PositionY = value + + @property + def width(self): + return self._model.Width + @width.setter + def width(self, value): + self._model.Width = value + + @property + def height(self): + return self._model.Height + @height.setter + def height(self, value): + self._model.Height = value + + @property + def tag(self): + return self.model.Tag + @tag.setter + def tag(self, value): + self.model.Tag = value + + @property + def step(self): + return self.model.Step + @step.setter + def step(self, value): + self.model.Step = value + + @property + def rules(self): + return self._rules + @rules.setter + def rules(self, value): + self._rules = value + + def set_focus(self): + self.obj.setFocus() + return + + def center(self, horizontal=True, vertical=False): + p = self.parent.Model + w = p.Width + h = p.Height + if horizontal: + x = w / 2 - self.width / 2 + self.x = x + if vertical: + y = h / 2 - self.height / 2 + self.y = y + return + + def move(self, origin, x=0, y=5): + w = 0 + h = 0 + if x: + w = origin.width + if y: + h = origin.height + x = origin.x + x + w + y = origin.y + y + h + self.x = x + self.y = y + return + + +class UnoLabel(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + + @property + def value(self): + return self.model.Label + @value.setter + def value(self, value): + self.model.Label = value + + +class UnoButton(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + # ~ self._set_icon() + + def _set_icon(self): + icon_name = self.tag.strip() + if icon_name: + path_icon = _file_url('{}/img/{}'.format(CURRENT_PATH, icon_name)) + self._model.ImageURL = path_icon + if self.value: + self._model.ImageAlign = 0 + return + + @property + def value(self): + return self.model.Label + @value.setter + def value(self, value): + self.model.Label = value + + +class UnoText(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + + @property + def value(self): + return self.model.Text + @value.setter + def value(self, value): + self.model.Text = value + + def validate(self): + + return + + +class UnoListBox(UnoBaseObject): + + def __init__(self, obj): + super().__init__(obj) + self._data = [] + + @property + def value(self): + return self.obj.SelectedItem + + @property + def data(self): + return self._data + @data.setter + def data(self, values): + self._data = list(sorted(values)) + self.model.StringItemList = self.data + return + + +class LODialog(object): + + def __init__(self, properties): + self._obj = self._create(properties) + self._init_values() + + def _init_values(self): + self._model = self._obj.Model + self._init_controls() + self._events = None + # ~ self._response = None + return + + def _create(self, properties): + path = properties.pop('Path', '') + if path: + dp = create_instance('com.sun.star.awt.DialogProvider2', True) + return dp.createDialog(_path_url(path)) + + if 'Library' in properties: + location = properties['Location'] + if location == 'user': + location = 'application' + dp = create_instance('com.sun.star.awt.DialogProvider2', True) + path = 'vnd.sun.star.script:{}.{}?location={}'.format( + properties['Library'], properties['Name'], location) + return dp.createDialog(path) + + dlg = create_instance('com.sun.star.awt.UnoControlDialog', True) + model = create_instance('com.sun.star.awt.UnoControlDialogModel', True) + toolkit = create_instance('com.sun.star.awt.Toolkit', True) + set_properties(model, properties) + dlg.setModel(model) + dlg.setVisible(False) + dlg.createPeer(toolkit, None) + + return dlg + + def _init_controls(self): + + return + + @property + def obj(self): + return self._obj + + @property + def model(self): + return self._model + + @property + def events(self): + return self._events + @events.setter + def events(self, controllers): + self._events = controllers + self._connect_listeners() + + def _connect_listeners(self): + + return + + def _add_listeners(self, control): + if self.events is None: + return + + listeners = { + 'addActionListener': EventsButton, + 'addMouseListener': EventsMouse, + } + for key, value in listeners.items(): + if hasattr(control.obj, key): + getattr(control.obj, key)(listeners[key](self.events)) + return + + def open(self): + return self.obj.execute() + + def close(self, value=0): + return self.obj.endDialog(value) + + def _get_control_model(self, control): + services = { + 'label': 'com.sun.star.awt.UnoControlFixedTextModel', + 'button': 'com.sun.star.awt.UnoControlButtonModel', + 'text': 'com.sun.star.awt.UnoControlEditModel', + 'listbox': 'com.sun.star.awt.UnoControlListBoxModel', + 'link': 'com.sun.star.awt.UnoControlFixedHyperlinkModel', + 'roadmap': 'com.sun.star.awt.UnoControlRoadmapModel', + 'image': 'com.sun.star.awt.UnoControlImageControlModel', + 'groupbox': 'com.sun.star.awt.UnoControlGroupBoxModel', + 'radio': 'com.sun.star.awt.UnoControlRadioButtonModel', + 'tree': 'com.sun.star.awt.tree.TreeControlModel', + 'grid': 'com.sun.star.awt.grid.UnoControlGridModel', + } + return services[control] + + def _get_custom_class(self, tipo, obj): + classes = { + 'label': UnoLabel, + 'button': UnoButton, + 'text': UnoText, + 'listbox': UnoListBox, + # ~ 'link': UnoLink, + # ~ 'tab': UnoTab, + # ~ 'roadmap': UnoRoadmap, + # ~ 'image': UnoImage, + # ~ 'radio': UnoRadio, + # ~ 'groupbox': UnoGroupBox, + # ~ 'tree': UnoTree, + # ~ 'grid': UnoGrid, + } + return classes[tipo](obj) + + def add_control(self, properties): + tipo = properties.pop('Type').lower() + model = self.model.createInstance(self._get_control_model(tipo)) + set_properties(model, properties) + name = properties['Name'] + self.model.insertByName(name, model) + control = self._get_custom_class(tipo, self.obj.getControl(name)) + self._add_listeners(control) + setattr(self, name, control) + return + + +# ~ Python >= 3.7 +# ~ def __getattr__(name): + + +def _get_class_doc(obj): + classes = { + 'calc': LOCalc, + 'writer': LOWriter, + 'base': LOBase, + 'impress': LOImpress, + 'draw': LODraw, + 'math': LOMath, + 'basic': LOBasicIde, + } + type_doc = get_type_doc(obj) + return classes[type_doc](obj) + + +def get_document(): + doc = None + desktop = get_desktop() + try: + doc = _get_class_doc(desktop.getCurrentComponent()) + except Exception as e: + log.error(e) + return doc + + +def get_selection(): + return get_document().selection + + +def get_cell(*args): + if args: + index = args + if len(index) == 1: + index = args[0] + cell = get_document().get_cell(index) + else: + cell = get_selection().first + return cell + + +def active_cell(): + return get_cell() + + +def create_dialog(properties): + return LODialog(properties) + + +def set_properties(model, properties): + if 'X' in properties: + properties['PositionX'] = properties.pop('X') + if 'Y' in properties: + properties['PositionY'] = properties.pop('Y') + keys = tuple(properties.keys()) + values = tuple(properties.values()) + model.setPropertyValues(keys, values) + return diff --git a/source/pythonpath/qrcode/LUT.py b/source/pythonpath/qrcode/LUT.py new file mode 100644 index 0000000..99042c5 --- /dev/null +++ b/source/pythonpath/qrcode/LUT.py @@ -0,0 +1,50 @@ +# Store all kinds of lookup table. + + +# # generate rsPoly lookup table. + +# from qrcode import base + +# def create_bytes(rs_blocks): +# for r in range(len(rs_blocks)): +# dcCount = rs_blocks[r].data_count +# ecCount = rs_blocks[r].total_count - dcCount +# rsPoly = base.Polynomial([1], 0) +# for i in range(ecCount): +# rsPoly = rsPoly * base.Polynomial([1, base.gexp(i)], 0) +# return ecCount, rsPoly + +# rsPoly_LUT = {} +# for version in range(1,41): +# for error_correction in range(4): +# rs_blocks_list = base.rs_blocks(version, error_correction) +# ecCount, rsPoly = create_bytes(rs_blocks_list) +# rsPoly_LUT[ecCount]=rsPoly.num +# print(rsPoly_LUT) + +# Result. Usage: input: ecCount, output: Polynomial.num +# e.g. rsPoly = base.Polynomial(LUT.rsPoly_LUT[ecCount], 0) +rsPoly_LUT = { + 7: [1, 127, 122, 154, 164, 11, 68, 117], + 10: [1, 216, 194, 159, 111, 199, 94, 95, 113, 157, 193], + 13: [1, 137, 73, 227, 17, 177, 17, 52, 13, 46, 43, 83, 132, 120], + 15: [1, 29, 196, 111, 163, 112, 74, 10, 105, 105, 139, 132, 151, + 32, 134, 26], + 16: [1, 59, 13, 104, 189, 68, 209, 30, 8, 163, 65, 41, 229, 98, 50, 36, 59], + 17: [1, 119, 66, 83, 120, 119, 22, 197, 83, 249, 41, 143, 134, 85, 53, 125, + 99, 79], + 18: [1, 239, 251, 183, 113, 149, 175, 199, 215, 240, 220, 73, 82, 173, 75, + 32, 67, 217, 146], + 20: [1, 152, 185, 240, 5, 111, 99, 6, 220, 112, 150, 69, 36, 187, 22, 228, + 198, 121, 121, 165, 174], + 22: [1, 89, 179, 131, 176, 182, 244, 19, 189, 69, 40, 28, 137, 29, 123, 67, + 253, 86, 218, 230, 26, 145, 245], + 24: [1, 122, 118, 169, 70, 178, 237, 216, 102, 115, 150, 229, 73, 130, 72, + 61, 43, 206, 1, 237, 247, 127, 217, 144, 117], + 26: [1, 246, 51, 183, 4, 136, 98, 199, 152, 77, 56, 206, 24, 145, 40, 209, + 117, 233, 42, 135, 68, 70, 144, 146, 77, 43, 94], + 28: [1, 252, 9, 28, 13, 18, 251, 208, 150, 103, 174, 100, 41, 167, 12, 247, + 56, 117, 119, 233, 127, 181, 100, 121, 147, 176, 74, 58, 197], + 30: [1, 212, 246, 77, 73, 195, 192, 75, 98, 5, 70, 103, 177, 22, 217, 138, + 51, 181, 246, 72, 25, 18, 46, 228, 74, 216, 195, 11, 106, 130, 150] + } diff --git a/source/pythonpath/qrcode/__init__.py b/source/pythonpath/qrcode/__init__.py new file mode 100644 index 0000000..f6aa53f --- /dev/null +++ b/source/pythonpath/qrcode/__init__.py @@ -0,0 +1,25 @@ +from qrcode.main import QRCode +from qrcode.main import make # noqa +from qrcode.constants import ( # noqa + ERROR_CORRECT_L, ERROR_CORRECT_M, ERROR_CORRECT_Q, ERROR_CORRECT_H) + +from qrcode import image # noqa + + +def run_example(data="http://www.lincolnloop.com", *args, **kwargs): + """ + Build an example QR Code and display it. + + There's an even easier way than the code here though: just use the ``make`` + shortcut. + """ + qr = QRCode(*args, **kwargs) + qr.add_data(data) + + im = qr.make_image() + im.show() + + +if __name__ == '__main__': # pragma: no cover + import sys + run_example(*sys.argv[1:]) diff --git a/source/pythonpath/qrcode/base.py b/source/pythonpath/qrcode/base.py new file mode 100644 index 0000000..e84e0f3 --- /dev/null +++ b/source/pythonpath/qrcode/base.py @@ -0,0 +1,356 @@ +from qrcode import constants + +EXP_TABLE = list(range(256)) + +LOG_TABLE = list(range(256)) + +for i in range(8): + EXP_TABLE[i] = 1 << i + +for i in range(8, 256): + EXP_TABLE[i] = ( + EXP_TABLE[i - 4] ^ EXP_TABLE[i - 5] ^ EXP_TABLE[i - 6] ^ + EXP_TABLE[i - 8]) + +for i in range(255): + LOG_TABLE[EXP_TABLE[i]] = i + +RS_BLOCK_OFFSET = { + constants.ERROR_CORRECT_L: 0, + constants.ERROR_CORRECT_M: 1, + constants.ERROR_CORRECT_Q: 2, + constants.ERROR_CORRECT_H: 3, +} + +RS_BLOCK_TABLE = [ + + # L + # M + # Q + # H + + # 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + + # 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + + # 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + + # 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + + # 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + + # 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + + # 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + + # 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + + # 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + + # 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + + # 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + + # 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + + # 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + + # 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + + # 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12, 7, 37, 13], + + # 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + + # 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + + # 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + + # 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + + # 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + + # 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + + # 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + + # 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + + # 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + + # 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + + # 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + + # 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + + # 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + + # 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + + # 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + + # 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + + # 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + + # 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + + # 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + + # 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + + # 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + + # 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + + # 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + + # 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + + # 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + +] + + +def glog(n): + if n < 1: # pragma: no cover + raise ValueError("glog(%s)" % n) + return LOG_TABLE[n] + + +def gexp(n): + return EXP_TABLE[n % 255] + + +class Polynomial(object): + + def __init__(self, num, shift): + if not num: # pragma: no cover + raise Exception("%s/%s" % (len(num), shift)) + + for offset in range(len(num)): + if num[offset] != 0: + break + else: + offset += 1 + + self.num = num[offset:] + [0] * shift + + def __getitem__(self, index): + return self.num[index] + + def __iter__(self): + return iter(self.num) + + def __len__(self): + return len(self.num) + + def __mul__(self, other): + num = [0] * (len(self) + len(other) - 1) + + for i, item in enumerate(self): + for j, other_item in enumerate(other): + num[i + j] ^= gexp(glog(item) + glog(other_item)) + + return Polynomial(num, 0) + + def __mod__(self, other): + difference = len(self) - len(other) + if difference < 0: + return self + + ratio = glog(self[0]) - glog(other[0]) + + num = [ + item ^ gexp(glog(other_item) + ratio) + for item, other_item in zip(self, other)] + if difference: + num.extend(self[-difference:]) + + # recursive call + return Polynomial(num, 0) % other + + +class RSBlock(object): + + def __init__(self, total_count, data_count): + self.total_count = total_count + self.data_count = data_count + + +def rs_blocks(version, error_correction): + if error_correction not in RS_BLOCK_OFFSET: # pragma: no cover + raise Exception( + "bad rs block @ version: %s / error_correction: %s" % + (version, error_correction)) + offset = RS_BLOCK_OFFSET[error_correction] + rs_block = RS_BLOCK_TABLE[(version - 1) * 4 + offset] + + blocks = [] + + for i in range(0, len(rs_block), 3): + count, total_count, data_count = rs_block[i:i + 3] + for j in range(count): + blocks.append(RSBlock(total_count, data_count)) + + return blocks diff --git a/source/pythonpath/qrcode/console_scripts.py b/source/pythonpath/qrcode/console_scripts.py new file mode 100755 index 0000000..cb62beb --- /dev/null +++ b/source/pythonpath/qrcode/console_scripts.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +""" +qr - Convert stdin (or the first argument) to a QR Code. + +When stdout is a tty the QR Code is printed to the terminal and when stdout is +a pipe to a file an image is written. The default image format is PNG. +""" +import sys +import optparse +import os +import qrcode +# The next block is added to get the terminal to display properly on MS platforms +if sys.platform.startswith(('win', 'cygwin')): # pragma: no cover + import colorama + colorama.init() + +default_factories = { + 'pil': 'qrcode.image.pil.PilImage', + 'pymaging': 'qrcode.image.pure.PymagingImage', + 'svg': 'qrcode.image.svg.SvgImage', + 'svg-fragment': 'qrcode.image.svg.SvgFragmentImage', + 'svg-path': 'qrcode.image.svg.SvgPathImage', +} + +error_correction = { + 'L': qrcode.ERROR_CORRECT_L, + 'M': qrcode.ERROR_CORRECT_M, + 'Q': qrcode.ERROR_CORRECT_Q, + 'H': qrcode.ERROR_CORRECT_H, +} + + +def main(args=None): + if args is None: + args = sys.argv[1:] + from pkg_resources import get_distribution + version = get_distribution('qrcode').version + parser = optparse.OptionParser(usage=__doc__.strip(), version=version) + parser.add_option( + "--factory", help="Full python path to the image factory class to " + "create the image with. You can use the following shortcuts to the " + "built-in image factory classes: {0}.".format( + ", ".join(sorted(default_factories.keys())))) + parser.add_option( + "--optimize", type=int, help="Optimize the data by looking for chunks " + "of at least this many characters that could use a more efficient " + "encoding method. Use 0 to turn off chunk optimization.") + parser.add_option( + "--error-correction", type='choice', + choices=sorted(error_correction.keys()), default='M', + help="The error correction level to use. Choices are L (7%), " + "M (15%, default), Q (25%), and H (30%).") + opts, args = parser.parse_args(args) + + qr = qrcode.QRCode( + error_correction=error_correction[opts.error_correction]) + + if opts.factory: + module = default_factories.get(opts.factory, opts.factory) + if '.' not in module: + parser.error("The image factory is not a full python path") + module, name = module.rsplit('.', 1) + imp = __import__(module, {}, [], [name]) + image_factory = getattr(imp, name) + else: + image_factory = None + + if args: + data = args[0] + else: + # Use sys.stdin.buffer if available (Python 3) avoiding + # UnicodeDecodeErrors. + stdin_buffer = getattr(sys.stdin, 'buffer', sys.stdin) + data = stdin_buffer.read() + if opts.optimize is None: + qr.add_data(data) + else: + qr.add_data(data, optimize=opts.optimize) + + if image_factory is None and os.isatty(sys.stdout.fileno()): + qr.print_ascii(tty=True) + return + + img = qr.make_image(image_factory=image_factory) + + sys.stdout.flush() + # Use sys.stdout.buffer if available (Python 3), avoiding + # UnicodeDecodeErrors. + stdout_buffer = getattr(sys.stdout, 'buffer', None) + if not stdout_buffer: + if sys.platform == 'win32': # pragma: no cover + import msvcrt + msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) + stdout_buffer = sys.stdout + + img.save(stdout_buffer) + + +if __name__ == "__main__": + main() diff --git a/source/pythonpath/qrcode/constants.py b/source/pythonpath/qrcode/constants.py new file mode 100644 index 0000000..385dda0 --- /dev/null +++ b/source/pythonpath/qrcode/constants.py @@ -0,0 +1,5 @@ +# QR error correct levels +ERROR_CORRECT_L = 1 +ERROR_CORRECT_M = 0 +ERROR_CORRECT_Q = 3 +ERROR_CORRECT_H = 2 diff --git a/source/pythonpath/qrcode/exceptions.py b/source/pythonpath/qrcode/exceptions.py new file mode 100644 index 0000000..b37bd30 --- /dev/null +++ b/source/pythonpath/qrcode/exceptions.py @@ -0,0 +1,2 @@ +class DataOverflowError(Exception): + pass diff --git a/source/pythonpath/qrcode/image/__init__.py b/source/pythonpath/qrcode/image/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/source/pythonpath/qrcode/image/base.py b/source/pythonpath/qrcode/image/base.py new file mode 100644 index 0000000..d7b24f7 --- /dev/null +++ b/source/pythonpath/qrcode/image/base.py @@ -0,0 +1,64 @@ +import abc + +class BaseImage(object): + """ + Base QRCode image output class. + """ + kind = None + allowed_kinds = None + + def __init__(self, border, width, box_size, *args, **kwargs): + self.border = border + self.width = width + self.box_size = box_size + self.pixel_size = (self.width + self.border*2) * self.box_size + self._img = self.new_image(**kwargs) + + @abc.abstractmethod + def drawrect(self, row, col): + """ + Draw a single rectangle of the QR code. + """ + + @abc.abstractmethod + def save(self, stream, kind=None): + """ + Save the image file. + """ + + def pixel_box(self, row, col): + """ + A helper method for pixel-based image generators that specifies the + four pixel coordinates for a single rect. + """ + x = (col + self.border) * self.box_size + y = (row + self.border) * self.box_size + return [(x, y), (x + self.box_size - 1, y + self.box_size - 1)] + + @abc.abstractmethod + def new_image(self, **kwargs): + """ + Build the image class. Subclasses should return the class created. + """ + + def get_image(self, **kwargs): + """ + Return the image class for further processing. + """ + return self._img + + def check_kind(self, kind, transform=None): + """ + Get the image type. + """ + if kind is None: + kind = self.kind + allowed = not self.allowed_kinds or kind in self.allowed_kinds + if transform: + kind = transform(kind) + if not allowed: + allowed = kind in self.allowed_kinds + if not allowed: + raise ValueError( + "Cannot set %s type to %s" % (type(self).__name__, kind)) + return kind diff --git a/source/pythonpath/qrcode/image/pil.py b/source/pythonpath/qrcode/image/pil.py new file mode 100644 index 0000000..3e92bd7 --- /dev/null +++ b/source/pythonpath/qrcode/image/pil.py @@ -0,0 +1,52 @@ +# Needed on case-insensitive filesystems +from __future__ import absolute_import + +# Try to import PIL in either of the two ways it can be installed. +try: + from PIL import Image, ImageDraw +except ImportError: # pragma: no cover + import Image + import ImageDraw + +import qrcode.image.base + + +class PilImage(qrcode.image.base.BaseImage): + """ + PIL image builder, default format is PNG. + """ + kind = "PNG" + + def new_image(self, **kwargs): + back_color = kwargs.get("back_color", "white") + fill_color = kwargs.get("fill_color", "black") + + if fill_color.lower() != "black" or back_color.lower() != "white": + if back_color.lower() == "transparent": + mode = "RGBA" + back_color = None + else: + mode = "RGB" + else: + mode = "1" + # L mode (1 mode) color = (r*299 + g*587 + b*114)//1000 + if fill_color.lower() == "black": fill_color = 0 + if back_color.lower() == "white": back_color = 255 + + img = Image.new(mode, (self.pixel_size, self.pixel_size), back_color) + self.fill_color = fill_color + self._idr = ImageDraw.Draw(img) + return img + + def drawrect(self, row, col): + box = self.pixel_box(row, col) + self._idr.rectangle(box, fill=self.fill_color) + + def save(self, stream, format=None, **kwargs): + kind = kwargs.pop("kind", self.kind) + if format is None: + format = kind + self._img.save(stream, format=format, **kwargs) + + def __getattr__(self, name): + return getattr(self._img, name) diff --git a/source/pythonpath/qrcode/image/pure.py b/source/pythonpath/qrcode/image/pure.py new file mode 100644 index 0000000..34f75fe --- /dev/null +++ b/source/pythonpath/qrcode/image/pure.py @@ -0,0 +1,49 @@ +from pymaging import Image +from pymaging.colors import RGB +from pymaging.formats import registry +from pymaging.shapes import Line +from pymaging.webcolors import Black, White +from pymaging_png.png import PNG + +import qrcode.image.base + + +class PymagingImage(qrcode.image.base.BaseImage): + """ + pymaging image builder, default format is PNG. + """ + kind = "PNG" + allowed_kinds = ("PNG",) + + def __init__(self, *args, **kwargs): + """ + Register PNG with pymaging. + """ + registry.formats = [] + registry.names = {} + registry._populate() + registry.register(PNG) + + super(PymagingImage, self).__init__(*args, **kwargs) + + def new_image(self, **kwargs): + return Image.new(RGB, self.pixel_size, self.pixel_size, White) + + def drawrect(self, row, col): + (x, y), (x2, y2) = self.pixel_box(row, col) + for r in range(self.box_size): + line_y = y + r + line = Line(x, line_y, x2, line_y) + self._img.draw(line, Black) + + def save(self, stream, kind=None): + self._img.save(stream, self.check_kind(kind)) + + def check_kind(self, kind, transform=None, **kwargs): + """ + pymaging (pymaging_png at least) uses lower case for the type. + """ + if transform is None: + transform = lambda x: x.lower() + return super(PymagingImage, self).check_kind( + kind, transform=transform, **kwargs) diff --git a/source/pythonpath/qrcode/image/svg.py b/source/pythonpath/qrcode/image/svg.py new file mode 100644 index 0000000..e99a66f --- /dev/null +++ b/source/pythonpath/qrcode/image/svg.py @@ -0,0 +1,159 @@ +from decimal import Decimal +# On Python 2.6 must install lxml since the older xml.etree.ElementTree +# version can not be used to create SVG images. +try: + import lxml.etree as ET +except ImportError: + import xml.etree.ElementTree as ET +import qrcode.image.base + + +class SvgFragmentImage(qrcode.image.base.BaseImage): + """ + SVG image builder + + Creates a QR-code image as a SVG document fragment. + """ + + _SVG_namespace = "http://www.w3.org/2000/svg" + kind = "SVG" + allowed_kinds = ("SVG",) + + def __init__(self, *args, **kwargs): + ET.register_namespace("svg", self._SVG_namespace) + super(SvgFragmentImage, self).__init__(*args, **kwargs) + # Save the unit size, for example the default box_size of 10 is '1mm'. + self.unit_size = self.units(self.box_size) + + def drawrect(self, row, col): + self._img.append(self._rect(row, col)) + + def units(self, pixels, text=True): + """ + A box_size of 10 (default) equals 1mm. + """ + units = Decimal(pixels) / 10 + if not text: + return units + return '%smm' % units + + def save(self, stream, kind=None): + self.check_kind(kind=kind) + self._write(stream) + + def new_image(self, **kwargs): + return self._svg() + + def _svg(self, tag=None, version='1.1', **kwargs): + if tag is None: + tag = ET.QName(self._SVG_namespace, "svg") + dimension = self.units(self.pixel_size) + return ET.Element( + tag, width=dimension, height=dimension, version=version, + **kwargs) + + def _rect(self, row, col, tag=None): + if tag is None: + tag = ET.QName(self._SVG_namespace, "rect") + x, y = self.pixel_box(row, col)[0] + return ET.Element( + tag, x=self.units(x), y=self.units(y), + width=self.unit_size, height=self.unit_size) + + def _write(self, stream): + ET.ElementTree(self._img).write(stream, xml_declaration=False) + + +class SvgImage(SvgFragmentImage): + """ + Standalone SVG image builder + + Creates a QR-code image as a standalone SVG document. + """ + background = None + + def _svg(self, tag='svg', **kwargs): + svg = super(SvgImage, self)._svg(tag=tag, **kwargs) + svg.set("xmlns", self._SVG_namespace) + if self.background: + svg.append( + ET.Element( + 'rect', fill=self.background, x='0', y='0', width='100%', + height='100%')) + return svg + + def _rect(self, row, col): + return super(SvgImage, self)._rect(row, col, tag="rect") + + def _write(self, stream): + ET.ElementTree(self._img).write(stream, encoding="UTF-8", + xml_declaration=True) + + +class SvgPathImage(SvgImage): + """ + SVG image builder with one single element (removes white spaces + between individual QR points). + """ + + QR_PATH_STYLE = 'fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none' + + def __init__(self, *args, **kwargs): + self._points = set() + super(SvgPathImage, self).__init__(*args, **kwargs) + + def _svg(self, viewBox=None, **kwargs): + if viewBox is None: + dimension = self.units(self.pixel_size, text=False) + viewBox = '0 0 %(d)s %(d)s' % {'d': dimension} + return super(SvgPathImage, self)._svg(viewBox=viewBox, **kwargs) + + def drawrect(self, row, col): + # (x, y) + self._points.add((col, row)) + + def _generate_subpaths(self): + """Generates individual QR points as subpaths""" + + rect_size = self.units(self.box_size, text=False) + + for point in self._points: + x_base = self.units( + (point[0]+self.border)*self.box_size, text=False) + y_base = self.units( + (point[1]+self.border)*self.box_size, text=False) + + yield ( + 'M %(x0)s %(y0)s L %(x0)s %(y1)s L %(x1)s %(y1)s L %(x1)s ' + '%(y0)s z' % dict( + x0=x_base, y0=y_base, + x1=x_base+rect_size, y1=y_base+rect_size, + )) + + def make_path(self): + subpaths = self._generate_subpaths() + + return ET.Element( + ET.QName("path"), + style=self.QR_PATH_STYLE, + d=' '.join(subpaths), + id="qr-path" + ) + + def _write(self, stream): + self._img.append(self.make_path()) + super(SvgPathImage, self)._write(stream) + + +class SvgFillImage(SvgImage): + """ + An SvgImage that fills the background to white. + """ + background = 'white' + + +class SvgPathFillImage(SvgPathImage): + """ + An SvgPathImage that fills the background to white. + """ + background = 'white' diff --git a/source/pythonpath/qrcode/main.py b/source/pythonpath/qrcode/main.py new file mode 100644 index 0000000..7317372 --- /dev/null +++ b/source/pythonpath/qrcode/main.py @@ -0,0 +1,434 @@ +from qrcode import constants, exceptions, util +from qrcode.image.base import BaseImage + +import six +from bisect import bisect_left + + +def make(data=None, **kwargs): + qr = QRCode(**kwargs) + qr.add_data(data) + return qr.make_image() + + +def _check_box_size(size): + if int(size) <= 0: + raise ValueError( + "Invalid box size (was %s, expected larger than 0)" % size) + + +def _check_mask_pattern(mask_pattern): + if mask_pattern is None: + return + if not isinstance(mask_pattern, int): + raise TypeError( + "Invalid mask pattern (was %s, expected int)" % type(mask_pattern)) + if mask_pattern < 0 or mask_pattern > 7: + raise ValueError( + "Mask pattern should be in range(8) (got %s)" % mask_pattern) + + +class QRCode(object): + + def __init__(self, version=None, + error_correction=constants.ERROR_CORRECT_M, + box_size=10, border=4, + image_factory=None, + mask_pattern=None): + _check_box_size(box_size) + self.version = version and int(version) + self.error_correction = int(error_correction) + self.box_size = int(box_size) + # Spec says border should be at least four boxes wide, but allow for + # any (e.g. for producing printable QR codes). + self.border = int(border) + _check_mask_pattern(mask_pattern) + self.mask_pattern = mask_pattern + self.image_factory = image_factory + if image_factory is not None: + assert issubclass(image_factory, BaseImage) + self.clear() + + def clear(self): + """ + Reset the internal data. + """ + self.modules = None + self.modules_count = 0 + self.data_cache = None + self.data_list = [] + + def add_data(self, data, optimize=20): + """ + Add data to this QR Code. + + :param optimize: Data will be split into multiple chunks to optimize + the QR size by finding to more compressed modes of at least this + length. Set to ``0`` to avoid optimizing at all. + """ + if isinstance(data, util.QRData): + self.data_list.append(data) + else: + if optimize: + self.data_list.extend( + util.optimal_data_chunks(data, minimum=optimize)) + else: + self.data_list.append(util.QRData(data)) + self.data_cache = None + + def make(self, fit=True): + """ + Compile the data into a QR Code array. + + :param fit: If ``True`` (or if a size has not been provided), find the + best fit for the data to avoid data overflow errors. + """ + if fit or (self.version is None): + self.best_fit(start=self.version) + if self.mask_pattern is None: + self.makeImpl(False, self.best_mask_pattern()) + else: + self.makeImpl(False, self.mask_pattern) + + def makeImpl(self, test, mask_pattern): + util.check_version(self.version) + self.modules_count = self.version * 4 + 17 + self.modules = [None] * self.modules_count + + for row in range(self.modules_count): + + self.modules[row] = [None] * self.modules_count + + for col in range(self.modules_count): + self.modules[row][col] = None # (col + row) % 3 + + self.setup_position_probe_pattern(0, 0) + self.setup_position_probe_pattern(self.modules_count - 7, 0) + self.setup_position_probe_pattern(0, self.modules_count - 7) + self.setup_position_adjust_pattern() + self.setup_timing_pattern() + self.setup_type_info(test, mask_pattern) + + if self.version >= 7: + self.setup_type_number(test) + + if self.data_cache is None: + self.data_cache = util.create_data( + self.version, self.error_correction, self.data_list) + self.map_data(self.data_cache, mask_pattern) + + def setup_position_probe_pattern(self, row, col): + for r in range(-1, 8): + + if row + r <= -1 or self.modules_count <= row + r: + continue + + for c in range(-1, 8): + + if col + c <= -1 or self.modules_count <= col + c: + continue + + if (0 <= r and r <= 6 and (c == 0 or c == 6) + or (0 <= c and c <= 6 and (r == 0 or r == 6)) + or (2 <= r and r <= 4 and 2 <= c and c <= 4)): + self.modules[row + r][col + c] = True + else: + self.modules[row + r][col + c] = False + + def best_fit(self, start=None): + """ + Find the minimum size required to fit in the data. + """ + if start is None: + start = 1 + util.check_version(start) + + # Corresponds to the code in util.create_data, except we don't yet know + # version, so optimistically assume start and check later + mode_sizes = util.mode_sizes_for_version(start) + buffer = util.BitBuffer() + for data in self.data_list: + buffer.put(data.mode, 4) + buffer.put(len(data), mode_sizes[data.mode]) + data.write(buffer) + + needed_bits = len(buffer) + self.version = bisect_left(util.BIT_LIMIT_TABLE[self.error_correction], + needed_bits, start) + if self.version == 41: + raise exceptions.DataOverflowError() + + # Now check whether we need more bits for the mode sizes, recursing if + # our guess was too low + if mode_sizes is not util.mode_sizes_for_version(self.version): + self.best_fit(start=self.version) + return self.version + + def best_mask_pattern(self): + """ + Find the most efficient mask pattern. + """ + min_lost_point = 0 + pattern = 0 + + for i in range(8): + self.makeImpl(True, i) + + lost_point = util.lost_point(self.modules) + + if i == 0 or min_lost_point > lost_point: + min_lost_point = lost_point + pattern = i + + return pattern + + def print_tty(self, out=None): + """ + Output the QR Code only using TTY colors. + + If the data has not been compiled yet, make it first. + """ + if out is None: + import sys + out = sys.stdout + + if not out.isatty(): + raise OSError("Not a tty") + + if self.data_cache is None: + self.make() + + modcount = self.modules_count + out.write("\x1b[1;47m" + (" " * (modcount * 2 + 4)) + "\x1b[0m\n") + for r in range(modcount): + out.write("\x1b[1;47m \x1b[40m") + for c in range(modcount): + if self.modules[r][c]: + out.write(" ") + else: + out.write("\x1b[1;47m \x1b[40m") + out.write("\x1b[1;47m \x1b[0m\n") + out.write("\x1b[1;47m" + (" " * (modcount * 2 + 4)) + "\x1b[0m\n") + out.flush() + + def print_ascii(self, out=None, tty=False, invert=False): + """ + Output the QR Code using ASCII characters. + + :param tty: use fixed TTY color codes (forces invert=True) + :param invert: invert the ASCII characters (solid <-> transparent) + """ + if out is None: + import sys + if sys.version_info < (2, 7): + # On Python versions 2.6 and earlier, stdout tries to encode + # strings using ASCII rather than stdout.encoding, so use this + # workaround. + import codecs + out = codecs.getwriter(sys.stdout.encoding)(sys.stdout) + else: + out = sys.stdout + + if tty and not out.isatty(): + raise OSError("Not a tty") + + if self.data_cache is None: + self.make() + + modcount = self.modules_count + codes = [six.int2byte(code).decode('cp437') + for code in (255, 223, 220, 219)] + if tty: + invert = True + if invert: + codes.reverse() + + def get_module(x, y): + if (invert and self.border and + max(x, y) >= modcount+self.border): + return 1 + if min(x, y) < 0 or max(x, y) >= modcount: + return 0 + return self.modules[x][y] + + for r in range(-self.border, modcount+self.border, 2): + if tty: + if not invert or r < modcount+self.border-1: + out.write('\x1b[48;5;232m') # Background black + out.write('\x1b[38;5;255m') # Foreground white + for c in range(-self.border, modcount+self.border): + pos = get_module(r, c) + (get_module(r+1, c) << 1) + out.write(codes[pos]) + if tty: + out.write('\x1b[0m') + out.write('\n') + out.flush() + + def make_image(self, image_factory=None, **kwargs): + """ + Make an image from the QR Code data. + + If the data has not been compiled yet, make it first. + """ + _check_box_size(self.box_size) + if self.data_cache is None: + self.make() + + if image_factory is not None: + assert issubclass(image_factory, BaseImage) + else: + image_factory = self.image_factory + if image_factory is None: + # Use PIL by default + from qrcode.image.pil import PilImage + image_factory = PilImage + + im = image_factory( + self.border, self.modules_count, self.box_size, **kwargs) + for r in range(self.modules_count): + for c in range(self.modules_count): + if self.modules[r][c]: + im.drawrect(r, c) + return im + + def setup_timing_pattern(self): + for r in range(8, self.modules_count - 8): + if self.modules[r][6] is not None: + continue + self.modules[r][6] = (r % 2 == 0) + + for c in range(8, self.modules_count - 8): + if self.modules[6][c] is not None: + continue + self.modules[6][c] = (c % 2 == 0) + + def setup_position_adjust_pattern(self): + pos = util.pattern_position(self.version) + + for i in range(len(pos)): + + for j in range(len(pos)): + + row = pos[i] + col = pos[j] + + if self.modules[row][col] is not None: + continue + + for r in range(-2, 3): + + for c in range(-2, 3): + + if (r == -2 or r == 2 or c == -2 or c == 2 or + (r == 0 and c == 0)): + self.modules[row + r][col + c] = True + else: + self.modules[row + r][col + c] = False + + def setup_type_number(self, test): + bits = util.BCH_type_number(self.version) + + for i in range(18): + mod = (not test and ((bits >> i) & 1) == 1) + self.modules[i // 3][i % 3 + self.modules_count - 8 - 3] = mod + + for i in range(18): + mod = (not test and ((bits >> i) & 1) == 1) + self.modules[i % 3 + self.modules_count - 8 - 3][i // 3] = mod + + def setup_type_info(self, test, mask_pattern): + data = (self.error_correction << 3) | mask_pattern + bits = util.BCH_type_info(data) + + # vertical + for i in range(15): + + mod = (not test and ((bits >> i) & 1) == 1) + + if i < 6: + self.modules[i][8] = mod + elif i < 8: + self.modules[i + 1][8] = mod + else: + self.modules[self.modules_count - 15 + i][8] = mod + + # horizontal + for i in range(15): + + mod = (not test and ((bits >> i) & 1) == 1) + + if i < 8: + self.modules[8][self.modules_count - i - 1] = mod + elif i < 9: + self.modules[8][15 - i - 1 + 1] = mod + else: + self.modules[8][15 - i - 1] = mod + + # fixed module + self.modules[self.modules_count - 8][8] = (not test) + + def map_data(self, data, mask_pattern): + inc = -1 + row = self.modules_count - 1 + bitIndex = 7 + byteIndex = 0 + + mask_func = util.mask_func(mask_pattern) + + data_len = len(data) + + for col in six.moves.xrange(self.modules_count - 1, 0, -2): + + if col <= 6: + col -= 1 + + col_range = (col, col-1) + + while True: + + for c in col_range: + + if self.modules[row][c] is None: + + dark = False + + if byteIndex < data_len: + dark = (((data[byteIndex] >> bitIndex) & 1) == 1) + + if mask_func(row, c): + dark = not dark + + self.modules[row][c] = dark + bitIndex -= 1 + + if bitIndex == -1: + byteIndex += 1 + bitIndex = 7 + + row += inc + + if row < 0 or self.modules_count <= row: + row -= inc + inc = -inc + break + + def get_matrix(self): + """ + Return the QR Code as a multidimensonal array, including the border. + + To return the array without a border, set ``self.border`` to 0 first. + """ + if self.data_cache is None: + self.make() + + if not self.border: + return self.modules + + width = len(self.modules) + self.border*2 + code = [[False]*width] * self.border + x_border = [False]*self.border + for module in self.modules: + code.append(x_border + module + x_border) + code += [[False]*width] * self.border + + return code diff --git a/source/pythonpath/qrcode/release.py b/source/pythonpath/qrcode/release.py new file mode 100644 index 0000000..4cc4c19 --- /dev/null +++ b/source/pythonpath/qrcode/release.py @@ -0,0 +1,41 @@ +""" +This file provides zest.releaser entrypoints using when releasing new +qrcode versions. +""" +import os +import re +import datetime + + +def update_manpage(data): + """ + Update the version in the manpage document. + """ + if data['name'] != 'qrcode': + return + + base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + filename = os.path.join(base_dir, 'doc', 'qr.1') + with open(filename, 'r') as f: + lines = f.readlines() + + changed = False + for i, line in enumerate(lines): + if not line.startswith('.TH '): + continue + parts = re.split(r'"([^"]*)"', line) + if len(parts) < 5: + continue + changed = parts[3] != data['new_version'] + if changed: + # Update version + parts[3] = data['new_version'] + # Update date + parts[1] = datetime.datetime.now().strftime('%-d %b %Y') + lines[i] = '"'.join(parts) + break + + if changed: + with open(filename, 'w') as f: + for line in lines: + f.write(line) diff --git a/source/pythonpath/qrcode/util.py b/source/pythonpath/qrcode/util.py new file mode 100644 index 0000000..58f3d21 --- /dev/null +++ b/source/pythonpath/qrcode/util.py @@ -0,0 +1,599 @@ +import re +import math + +import six +from six.moves import xrange + +from qrcode import base, exceptions, LUT + +# QR encoding modes. +MODE_NUMBER = 1 << 0 +MODE_ALPHA_NUM = 1 << 1 +MODE_8BIT_BYTE = 1 << 2 +MODE_KANJI = 1 << 3 + +# Encoding mode sizes. +MODE_SIZE_SMALL = { + MODE_NUMBER: 10, + MODE_ALPHA_NUM: 9, + MODE_8BIT_BYTE: 8, + MODE_KANJI: 8, +} +MODE_SIZE_MEDIUM = { + MODE_NUMBER: 12, + MODE_ALPHA_NUM: 11, + MODE_8BIT_BYTE: 16, + MODE_KANJI: 10, +} +MODE_SIZE_LARGE = { + MODE_NUMBER: 14, + MODE_ALPHA_NUM: 13, + MODE_8BIT_BYTE: 16, + MODE_KANJI: 12, +} + +ALPHA_NUM = six.b('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:') +RE_ALPHA_NUM = re.compile(six.b('^[') + re.escape(ALPHA_NUM) + six.b(r']*\Z')) + +# The number of bits for numeric delimited data lengths. +NUMBER_LENGTH = {3: 10, 2: 7, 1: 4} + +PATTERN_POSITION_TABLE = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] +] + +G15 = ( + (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | + (1 << 0)) +G18 = ( + (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | + (1 << 2) | (1 << 0)) +G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1) + +PAD0 = 0xEC +PAD1 = 0x11 + +# Precompute bit count limits, indexed by error correction level and code size +_data_count = lambda block: block.data_count +BIT_LIMIT_TABLE = [ + [0] + [8*sum(map(_data_count, base.rs_blocks(version, error_correction))) + for version in xrange(1, 41)] + for error_correction in xrange(4) +] + + +def BCH_type_info(data): + d = data << 10 + while BCH_digit(d) - BCH_digit(G15) >= 0: + d ^= (G15 << (BCH_digit(d) - BCH_digit(G15))) + + return ((data << 10) | d) ^ G15_MASK + + +def BCH_type_number(data): + d = data << 12 + while BCH_digit(d) - BCH_digit(G18) >= 0: + d ^= (G18 << (BCH_digit(d) - BCH_digit(G18))) + return (data << 12) | d + + +def BCH_digit(data): + digit = 0 + while data != 0: + digit += 1 + data >>= 1 + return digit + + +def pattern_position(version): + return PATTERN_POSITION_TABLE[version - 1] + + +def mask_func(pattern): + """ + Return the mask function for the given mask pattern. + """ + if pattern == 0: # 000 + return lambda i, j: (i + j) % 2 == 0 + if pattern == 1: # 001 + return lambda i, j: i % 2 == 0 + if pattern == 2: # 010 + return lambda i, j: j % 3 == 0 + if pattern == 3: # 011 + return lambda i, j: (i + j) % 3 == 0 + if pattern == 4: # 100 + return lambda i, j: (math.floor(i / 2) + math.floor(j / 3)) % 2 == 0 + if pattern == 5: # 101 + return lambda i, j: (i * j) % 2 + (i * j) % 3 == 0 + if pattern == 6: # 110 + return lambda i, j: ((i * j) % 2 + (i * j) % 3) % 2 == 0 + if pattern == 7: # 111 + return lambda i, j: ((i * j) % 3 + (i + j) % 2) % 2 == 0 + raise TypeError("Bad mask pattern: " + pattern) # pragma: no cover + + +def mode_sizes_for_version(version): + if version < 10: + return MODE_SIZE_SMALL + elif version < 27: + return MODE_SIZE_MEDIUM + else: + return MODE_SIZE_LARGE + + +def length_in_bits(mode, version): + if mode not in ( + MODE_NUMBER, MODE_ALPHA_NUM, MODE_8BIT_BYTE, MODE_KANJI): + raise TypeError("Invalid mode (%s)" % mode) # pragma: no cover + + check_version(version) + + return mode_sizes_for_version(version)[mode] + + +def check_version(version): + if version < 1 or version > 40: + raise ValueError( + "Invalid version (was %s, expected 1 to 40)" % version) + + +def lost_point(modules): + modules_count = len(modules) + + lost_point = 0 + + lost_point = _lost_point_level1(modules, modules_count) + lost_point += _lost_point_level2(modules, modules_count) + lost_point += _lost_point_level3(modules, modules_count) + lost_point += _lost_point_level4(modules, modules_count) + + return lost_point + + +def _lost_point_level1(modules, modules_count): + lost_point = 0 + + modules_range = xrange(modules_count) + container = [0] * (modules_count + 1) + + for row in modules_range: + this_row = modules[row] + previous_color = this_row[0] + length = 0 + for col in modules_range: + if this_row[col] == previous_color: + length += 1 + else: + if length >= 5: + container[length] += 1 + length = 1 + previous_color = this_row[col] + if length >= 5: + container[length] += 1 + + for col in modules_range: + previous_color = modules[0][col] + length = 0 + for row in modules_range: + if modules[row][col] == previous_color: + length += 1 + else: + if length >= 5: + container[length] += 1 + length = 1 + previous_color = modules[row][col] + if length >= 5: + container[length] += 1 + + lost_point += sum(container[each_length] * (each_length - 2) + for each_length in xrange(5, modules_count + 1)) + + return lost_point + + +def _lost_point_level2(modules, modules_count): + lost_point = 0 + + modules_range = xrange(modules_count - 1) + for row in modules_range: + this_row = modules[row] + next_row = modules[row + 1] + # use iter() and next() to skip next four-block. e.g. + # d a f if top-right a != b botton-right, + # c b e then both abcd and abef won't lost any point. + modules_range_iter = iter(modules_range) + for col in modules_range_iter: + top_right = this_row[col + 1] + if top_right != next_row[col + 1]: + # reduce 33.3% of runtime via next(). + # None: raise nothing if there is no next item. + next(modules_range_iter, None) + elif top_right != this_row[col]: + continue + elif top_right != next_row[col]: + continue + else: + lost_point += 3 + + return lost_point + + +def _lost_point_level3(modules, modules_count): + # 1 : 1 : 3 : 1 : 1 ratio (dark:light:dark:light:dark) pattern in + # row/column, preceded or followed by light area 4 modules wide. From ISOIEC. + # pattern1: 10111010000 + # pattern2: 00001011101 + modules_range = xrange(modules_count) + modules_range_short = xrange(modules_count-10) + lost_point = 0 + + for row in modules_range: + this_row = modules[row] + modules_range_short_iter = iter(modules_range_short) + col = 0 + for col in modules_range_short_iter: + if ( + not this_row[col + 1] + and this_row[col + 4] + and not this_row[col + 5] + and this_row[col + 6] + and not this_row[col + 9] + and ( + this_row[col + 0] + and this_row[col + 2] + and this_row[col + 3] + and not this_row[col + 7] + and not this_row[col + 8] + and not this_row[col + 10] + or + not this_row[col + 0] + and not this_row[col + 2] + and not this_row[col + 3] + and this_row[col + 7] + and this_row[col + 8] + and this_row[col + 10] + ) + ): + lost_point += 40 +# horspool algorithm. +# if this_row[col + 10] == True, pattern1 shift 4, pattern2 shift 2. So min=2. +# if this_row[col + 10] == False, pattern1 shift 1, pattern2 shift 1. So min=1. + if this_row[col + 10]: + next(modules_range_short_iter, None) + + for col in modules_range: + modules_range_short_iter = iter(modules_range_short) + row = 0 + for row in modules_range_short_iter: + if ( + not modules[row + 1][col] + and modules[row + 4][col] + and not modules[row + 5][col] + and modules[row + 6][col] + and not modules[row + 9][col] + and ( + modules[row + 0][col] + and modules[row + 2][col] + and modules[row + 3][col] + and not modules[row + 7][col] + and not modules[row + 8][col] + and not modules[row + 10][col] + or + not modules[row + 0][col] + and not modules[row + 2][col] + and not modules[row + 3][col] + and modules[row + 7][col] + and modules[row + 8][col] + and modules[row + 10][col] + ) + ): + lost_point += 40 + if modules[row + 10][col]: + next(modules_range_short_iter, None) + + return lost_point + + +def _lost_point_level4(modules, modules_count): + dark_count = sum(map(sum, modules)) + percent = float(dark_count) / (modules_count**2) + # Every 5% departure from 50%, rating++ + rating = int(abs(percent * 100 - 50) / 5) + return rating * 10 + + +def optimal_data_chunks(data, minimum=4): + """ + An iterator returning QRData chunks optimized to the data content. + + :param minimum: The minimum number of bytes in a row to split as a chunk. + """ + data = to_bytestring(data) + num_pattern = six.b(r'\d') + alpha_pattern = six.b('[') + re.escape(ALPHA_NUM) + six.b(']') + if len(data) <= minimum: + num_pattern = re.compile(six.b('^') + num_pattern + six.b('+$')) + alpha_pattern = re.compile(six.b('^') + alpha_pattern + six.b('+$')) + else: + re_repeat = ( + six.b('{') + six.text_type(minimum).encode('ascii') + six.b(',}')) + num_pattern = re.compile(num_pattern + re_repeat) + alpha_pattern = re.compile(alpha_pattern + re_repeat) + num_bits = _optimal_split(data, num_pattern) + for is_num, chunk in num_bits: + if is_num: + yield QRData(chunk, mode=MODE_NUMBER, check_data=False) + else: + for is_alpha, sub_chunk in _optimal_split(chunk, alpha_pattern): + if is_alpha: + mode = MODE_ALPHA_NUM + else: + mode = MODE_8BIT_BYTE + yield QRData(sub_chunk, mode=mode, check_data=False) + + +def _optimal_split(data, pattern): + while data: + match = re.search(pattern, data) + if not match: + break + start, end = match.start(), match.end() + if start: + yield False, data[:start] + yield True, data[start:end] + data = data[end:] + if data: + yield False, data + + +def to_bytestring(data): + """ + Convert data to a (utf-8 encoded) byte-string if it isn't a byte-string + already. + """ + if not isinstance(data, six.binary_type): + data = six.text_type(data).encode('utf-8') + return data + + +def optimal_mode(data): + """ + Calculate the optimal mode for this chunk of data. + """ + if data.isdigit(): + return MODE_NUMBER + if RE_ALPHA_NUM.match(data): + return MODE_ALPHA_NUM + return MODE_8BIT_BYTE + + +class QRData(object): + """ + Data held in a QR compatible format. + + Doesn't currently handle KANJI. + """ + + def __init__(self, data, mode=None, check_data=True): + """ + If ``mode`` isn't provided, the most compact QR data type possible is + chosen. + """ + if check_data: + data = to_bytestring(data) + + if mode is None: + self.mode = optimal_mode(data) + else: + self.mode = mode + if mode not in (MODE_NUMBER, MODE_ALPHA_NUM, MODE_8BIT_BYTE): + raise TypeError("Invalid mode (%s)" % mode) # pragma: no cover + if check_data and mode < optimal_mode(data): # pragma: no cover + raise ValueError( + "Provided data can not be represented in mode " + "{0}".format(mode)) + + self.data = data + + def __len__(self): + return len(self.data) + + def write(self, buffer): + if self.mode == MODE_NUMBER: + for i in xrange(0, len(self.data), 3): + chars = self.data[i:i + 3] + bit_length = NUMBER_LENGTH[len(chars)] + buffer.put(int(chars), bit_length) + elif self.mode == MODE_ALPHA_NUM: + for i in xrange(0, len(self.data), 2): + chars = self.data[i:i + 2] + if len(chars) > 1: + buffer.put( + ALPHA_NUM.find(chars[0]) * 45 + + ALPHA_NUM.find(chars[1]), 11) + else: + buffer.put(ALPHA_NUM.find(chars), 6) + else: + if six.PY3: + # Iterating a bytestring in Python 3 returns an integer, + # no need to ord(). + data = self.data + else: + data = [ord(c) for c in self.data] + for c in data: + buffer.put(c, 8) + + def __repr__(self): + return repr(self.data) + + +class BitBuffer(object): + + def __init__(self): + self.buffer = [] + self.length = 0 + + def __repr__(self): + return ".".join([str(n) for n in self.buffer]) + + def get(self, index): + buf_index = math.floor(index / 8) + return ((self.buffer[buf_index] >> (7 - index % 8)) & 1) == 1 + + def put(self, num, length): + for i in range(length): + self.put_bit(((num >> (length - i - 1)) & 1) == 1) + + def __len__(self): + return self.length + + def put_bit(self, bit): + buf_index = self.length // 8 + if len(self.buffer) <= buf_index: + self.buffer.append(0) + if bit: + self.buffer[buf_index] |= (0x80 >> (self.length % 8)) + self.length += 1 + + +def create_bytes(buffer, rs_blocks): + offset = 0 + + maxDcCount = 0 + maxEcCount = 0 + + dcdata = [0] * len(rs_blocks) + ecdata = [0] * len(rs_blocks) + + for r in range(len(rs_blocks)): + + dcCount = rs_blocks[r].data_count + ecCount = rs_blocks[r].total_count - dcCount + + maxDcCount = max(maxDcCount, dcCount) + maxEcCount = max(maxEcCount, ecCount) + + dcdata[r] = [0] * dcCount + + for i in range(len(dcdata[r])): + dcdata[r][i] = 0xff & buffer.buffer[i + offset] + offset += dcCount + + # Get error correction polynomial. + if ecCount in LUT.rsPoly_LUT: + rsPoly = base.Polynomial(LUT.rsPoly_LUT[ecCount], 0) + else: + rsPoly = base.Polynomial([1], 0) + for i in range(ecCount): + rsPoly = rsPoly * base.Polynomial([1, base.gexp(i)], 0) + + rawPoly = base.Polynomial(dcdata[r], len(rsPoly) - 1) + + modPoly = rawPoly % rsPoly + ecdata[r] = [0] * (len(rsPoly) - 1) + for i in range(len(ecdata[r])): + modIndex = i + len(modPoly) - len(ecdata[r]) + if (modIndex >= 0): + ecdata[r][i] = modPoly[modIndex] + else: + ecdata[r][i] = 0 + + totalCodeCount = 0 + for rs_block in rs_blocks: + totalCodeCount += rs_block.total_count + + data = [None] * totalCodeCount + index = 0 + + for i in range(maxDcCount): + for r in range(len(rs_blocks)): + if i < len(dcdata[r]): + data[index] = dcdata[r][i] + index += 1 + + for i in range(maxEcCount): + for r in range(len(rs_blocks)): + if i < len(ecdata[r]): + data[index] = ecdata[r][i] + index += 1 + + return data + + +def create_data(version, error_correction, data_list): + + buffer = BitBuffer() + for data in data_list: + buffer.put(data.mode, 4) + buffer.put(len(data), length_in_bits(data.mode, version)) + data.write(buffer) + + # Calculate the maximum number of bits for the given version. + rs_blocks = base.rs_blocks(version, error_correction) + bit_limit = 0 + for block in rs_blocks: + bit_limit += block.data_count * 8 + + if len(buffer) > bit_limit: + raise exceptions.DataOverflowError( + "Code length overflow. Data size (%s) > size available (%s)" % + (len(buffer), bit_limit)) + + # Terminate the bits (add up to four 0s). + for i in range(min(bit_limit - len(buffer), 4)): + buffer.put_bit(False) + + # Delimit the string into 8-bit words, padding with 0s if necessary. + delimit = len(buffer) % 8 + if delimit: + for i in range(8 - delimit): + buffer.put_bit(False) + + # Add special alternating padding bitstrings until buffer is full. + bytes_to_fill = (bit_limit - len(buffer)) // 8 + for i in range(bytes_to_fill): + if i % 2 == 0: + buffer.put(PAD0, 8) + else: + buffer.put(PAD1, 8) + + return create_bytes(buffer, rs_blocks) diff --git a/source/registration/license_en.txt b/source/registration/license_en.txt new file mode 100644 index 0000000..0a88555 --- /dev/null +++ b/source/registration/license_en.txt @@ -0,0 +1,14 @@ +This file is part of ZAZBarCode. + + ZAZBarCode 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 3 of the License, or + (at your option) any later version. + + ZAZBarCode 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 ZAZBarCode. If not, see . diff --git a/source/registration/license_es.txt b/source/registration/license_es.txt new file mode 100644 index 0000000..0a88555 --- /dev/null +++ b/source/registration/license_es.txt @@ -0,0 +1,14 @@ +This file is part of ZAZBarCode. + + ZAZBarCode 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 3 of the License, or + (at your option) any later version. + + ZAZBarCode 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 ZAZBarCode. If not, see . diff --git a/zaz.py b/zaz.py new file mode 100644 index 0000000..7a0999f --- /dev/null +++ b/zaz.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python3 + +# == Rapid Develop Macros in LibreOffice == + +# ~ This file is part of ZAZ. + +# ~ ZAZ 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 3 of the License, or +# ~ (at your option) any later version. + +# ~ ZAZ 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 ZAZ. If not, see . + +import argparse +import os +import sys +from shutil import copyfile +from subprocess import call +import zipfile + +from conf import ( + DATA, + DIRS, + EXTENSION, + FILES, + INFO, + PATHS, + TYPE_EXTENSION, + log) + + +def _exists(path): + return os.path.exists(path) + + +def _join(*paths): + return os.path.join(*paths) + + +def _mkdir(path): + return os.mkdir(path) + + +def _save(path, data): + with open(path, 'w') as f: + f.write(data) + return + + +def _compress_oxt(): + log.info('Compress OXT extension...') + + path = DIRS['files'] + if not _exists(path): + _mkdir(path) + + path_oxt = _join(path, FILES['oxt']) + + z = zipfile.ZipFile(path_oxt, 'w', compression=zipfile.ZIP_DEFLATED) + root_len = len(os.path.abspath(DIRS['source'])) + for root, dirs, files in os.walk(DIRS['source']): + relative = os.path.abspath(root)[root_len:] + for f in files: + fullpath = _join(root, f) + file_name = _join(relative, f) + if file_name == FILES['idl']: + continue + z.write(fullpath, file_name, zipfile.ZIP_DEFLATED) + z.close() + + log.info('Extension OXT created sucesfully...') + return + + +def _install_and_test(): + path_oxt = (_join(DIRS['files'], FILES['oxt']),) + call(PATHS['install'] + path_oxt) + log.info('Install extension sucesfully...') + log.info('Start LibreOffice...') + call(PATHS['soffice']) + return + + +def _validate_new(): + path_source = DIRS['source'] + if not _exists(path_source): + return True + + msg = f'Path: {path_source}, exists, delete first' + log.error(msg) + return False + + +def _create_new_directories(): + path_source = DIRS['source'] + _mkdir(path_source) + path = _join(path_source, DIRS['meta']) + _mkdir(path) + path = _join(path_source, DIRS['description']) + _mkdir(path) + path = _join(path_source, DIRS['images']) + _mkdir(path) + path = _join(path_source, DIRS['registration']) + _mkdir(path) + + if FILES['easymacro'] or DIRS['pythonpath']: + path = _join(path_source, 'pythonpath') + _mkdir(path) + + path = DIRS['files'] + if not _exists(path): + _mkdir(path) + + msg = 'Created directories...' + log.info(msg) + return + + +def _create_new_files(): + path_source = DIRS['source'] + + for k, v in INFO.items(): + file_name = f'license_{k}.txt' + path = _join(path_source, DIRS['registration'], file_name) + _save(path, v['license']) + + if TYPE_EXTENSION > 1: + path = _join(path_source, FILES['idl']) + _save(path, DATA['idl']) + + path = _join(path_source, FILES['py']) + _save(path, DATA['py']) + + + msg = 'Created files...' + log.info(msg) + return + + +def _validate_update(): + if TYPE_EXTENSION == 1: + return True + + if not _exists(PATHS['idlc']): + msg = 'Binary: "idlc" not found' + log.error(msg) + return False + + if not _exists(PATHS['include']): + msg = 'Directory: "include" not found' + log.error(msg) + return False + + if not _exists(PATHS['regmerge']): + msg = 'Binary: "regmerge" not found' + log.error(msg) + return False + + path = _join(DIRS['source'], FILES['idl']) + if not _exists(path): + msg = f'File: "{FILES["idl"]}" not found' + log.error(msg) + return False + + return True + + +def _compile_idl(): + if TYPE_EXTENSION == 1: + return + + log.info('Compilate IDL...') + path_rdb = _join(DIRS['source'], FILES['rdb']) + path_urd = _join(DIRS['source'], FILES['urd']) + + path = _join(DIRS['source'], FILES['idl']) + call([PATHS['idlc'], '-I', PATHS['include'], path]) + call([PATHS['regmerge'], path_rdb, '/UCR', path_urd]) + os.remove(path_urd) + + log.info('Compilate IDL sucesfully...') + return + + +def _update_files(): + path_source = DIRS['source'] + + for k, v in INFO.items(): + file_name = FILES['ext_desc'].format(k) + path = _join(path_source, DIRS['description'], file_name) + _save(path, v['description']) + + path_logo = EXTENSION['icon'][0] + if _exists(path_logo): + file_name = EXTENSION['icon'][1] + path = _join(path_source, DIRS['images'], file_name) + copyfile(path_logo, path) + + files = os.listdir(DIRS['images']) + for f in files: + if f[-3:].lower() == 'bmp': + source = _join(DIRS['images'], f) + target = _join(path_source, DIRS['images'], f) + copyfile(source, target) + + if FILES['easymacro']: + source = 'easymacro.py' + target = _join(path_source, 'pythonpath', source) + copyfile(source, target) + + path = _join(path_source, DIRS['meta'], FILES['manifest']) + _save(path, DATA['manifest']) + + path = _join(path_source, FILES['addons']) + _save(path, DATA['addons']) + + path = _join(path_source, FILES['description']) + _save(path, DATA['description']) + + if TYPE_EXTENSION == 3: + path = _join(path_source, FILES['addin']) + _save(path, DATA['addin']) + + _compile_idl() + return + + +def _new(): + if not _validate_new(): + return + + _create_new_directories() + _create_new_files() + _update_files() + + msg = f"New extension: {EXTENSION['name']} make sucesfully...\n" + msg += '\tNow, you can install and test: zaz.py -i' + log.info(msg) + return + + +def main(args): + if args.new: + _new() + return + + if not _validate_update(): + return + + _update_files() + _compress_oxt() + + if args.install: + _install_and_test() + + log.info('Extension make sucesfully...') + return + + +def _process_command_line_arguments(): + parser = argparse.ArgumentParser( + description='Make LibreOffice extensions') + parser.add_argument('-i', '--install', dest='install', action='store_true', + default=False, required=False) + parser.add_argument('-n', '--new', dest='new', action='store_true', + default=False, required=False) + return parser.parse_args() + + +if __name__ == '__main__': + args = _process_command_line_arguments() + main(args) +